Architectural modifications to deployed software

We discuss the nuts and bolts of industrial large-scale software modification projects. These projects become necessary when system owners of deployed systems hit architectural barriers. The mastery of such projects is key to the extension of the best-before date of business-critical software assets. Our discussion comprises the process for problem analysis, pricing and contracting for such projects, design and implementation of tools for code exploration and code modification, as well as details of service delivery. We illustrate these concerns by way of a real-world example where a deployed management information system required an invasive modification to make the system fit for future use. The chosen project is particularly suited for a complete treatise because of its size (just 90,000 LOC), and the nature of the relevant architectural modification (namely, a form of data expansion). We share the lessons that we learned in this and other architectural modification projects.

[1]  Larry Wall,et al.  Programming Perl , 1991 .

[2]  Ted Keller Change Costing in a Maintenance Environment , 1996, ICSM.

[3]  Mark Harman,et al.  Pre/post conditioned slicing , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[4]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[5]  Chris Verhoef,et al.  Quantitative IT portfolio management , 2002, Sci. Comput. Program..

[6]  Eelco Visser,et al.  Strategic Pattern Matching , 1999, RTA.

[7]  Paul Klint,et al.  Term rewriting with traversal functions , 2003, TSEM.

[8]  Gordon Kotik,et al.  Application of REFINE Language Tools to software quality assurance , 1994, Proceedings KBSE '94. Ninth Knowledge-Based Software Engineering Conference.

[9]  Chris Verhoef,et al.  Scaffolding for software renovation , 2000, Proceedings of the Fourth European Conference on Software Maintenance and Reengineering.

[10]  Henry Spencer,et al.  #ifdef Considered Harmful, or Portability Experience with C News , 1992, USENIX Summer.

[11]  James A. Whittaker,et al.  What is software testing? And why is it so hard? , 2000 .

[12]  Jean-Marie Favre,et al.  Preprocessors from an abstract point of view , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[13]  Ralf Lämmel,et al.  Cracking the 500-Language Problem , 2001, IEEE Softw..

[14]  A. K. Robbins UNIX in a nutshell: System V Edition , 1999 .

[15]  Capers Jones,et al.  Applied software measurement: assuring productivity and quality , 1991 .

[16]  Ralf Lämmel,et al.  Functional Transformation Systems , 2000, WFLP.

[17]  Chris Verhoef,et al.  Software product line migration and deployment , 2003, Softw. Pract. Exp..

[18]  Alan Bundy,et al.  Constructing Induction Rules for Deductive Synthesis Proofs , 2006, CLASE.

[19]  Meir M. Lehman,et al.  A Model of Large Program Development , 1976, IBM Syst. J..

[20]  Ralf Lämmel,et al.  Semi‐automatic grammar recovery , 2001, Softw. Pract. Exp..

[21]  Harry M. Sneed,et al.  Architecture and functions of a commercial software reengineering workbench , 1998, Proceedings of the Second Euromicro Conference on Software Maintenance and Reengineering.

[22]  Martin Fowler Design - Who needs an architect? , 2003, IEEE Software.

[23]  Eberhardt Rechtin,et al.  The art of systems architecting (2nd ed.) , 2000 .

[24]  Chris Verhoef,et al.  Native patterns , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[25]  Arie van Deursen,et al.  Building documentation generators , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[26]  E. Rechtin,et al.  The art of systems architecting , 1996, IEEE Spectrum.

[27]  Andrew M. Kuhn,et al.  Code Complete , 2005, Technometrics.

[28]  Capers Jones The year 2000 software problem: Quantifying the cost and addressing the consequences , 2005, AI & SOCIETY.

[29]  Paul Klint,et al.  A meta-environment for generating programming environments , 1989, TSEM.

[30]  Thorsten Spitta,et al.  Die Wiederverwendung von Daten in SAP R/3 , 2000 .

[31]  James R. Cordy,et al.  TXL: A Rapid Prototyping System for Programming Language Dialects , 1991, Comput. Lang..

[32]  Panos E. Livadas,et al.  Understanding code containing preprocessor constructs , 1994, Proceedings 1994 IEEE 3rd Workshop on Program Comprehension- WPC '94.

[33]  Arnold Robbins Unix in a nutshell, fourth edition , 2005 .

[34]  Juan Antonio de la Puente,et al.  Architecture recovery for software evolution , 1998, Proceedings of the Second Euromicro Conference on Software Maintenance and Reengineering.

[35]  Rainer Koppler A Systematic Approach to Fuzzy Parsing , 1997 .

[36]  Niels P. Veerman Revitalizing modifiability of legacy assets , 2004, J. Softw. Maintenance Res. Pract..

[37]  Eelco Visser,et al.  The Essence of Strategic Programming , 2002 .

[38]  Anneke Kleppe,et al.  MDA explained - the Model Driven Architecture: practice and promise , 2003, Addison Wesley object technology series.

[39]  Fritz Henglein,et al.  AnnoDomini: from type theory to Year 2000 conversion tool , 1999, POPL '99.

[40]  Leon Moonen,et al.  Generating robust parsers using island grammars , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[41]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[42]  Chris Verhoef,et al.  An architecture for automated software maintenance , 1999, Proceedings Seventh International Workshop on Program Comprehension.

[43]  Barry W. Boehm,et al.  Cost models for future software life cycle processes: COCOMO 2.0 , 1995, Ann. Softw. Eng..

[44]  Chris Verhoef,et al.  Generation of components for software renovation factories from context-free grammars , 2000, Sci. Comput. Program..

[45]  Barry W. Boehm,et al.  Software Engineering Economics , 1993, IEEE Transactions on Software Engineering.

[46]  Eelco Visser,et al.  Building program optimizers with rewriting strategies , 1998, ICFP '98.

[47]  Peter J. Brown,et al.  Macroprocessors and Techniques for Portable Software , 1974 .

[48]  Chris Verhoef,et al.  The Realities of Language Conversions , 2000, IEEE Softw..

[49]  Ralf Lämmel,et al.  Towards generic refactoring , 2002, RULE '02.

[50]  Paul Clements,et al.  Software Architecture in Practice: Addison-Wesley , 1998 .

[51]  Alexander S. Yeh,et al.  Reverse Engineering to the Architectural Level , 1995, 1995 17th International Conference on Software Engineering.

[52]  Paul Klint,et al.  Re-engineering needs generic programming language technology , 1997, SIGP.

[53]  Meir M. Lehman,et al.  Laws of Software Evolution Revisited , 1996, EWSPT.

[54]  Ralf Lämmel,et al.  Parse-tree annotations meet re-engineering concerns , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[55]  Merijn de Jonge Pretty-Printing for Software Reengineering , 2002, ICSM.

[56]  Ralf Lämmel,et al.  Towards an engineering discipline for GRAMMARWARE Draft as of August 17 , 2003 , 2003 .

[57]  Harry M. Sneed,et al.  Restructuring of COBOL/CICS legacy systems , 2002, Sci. Comput. Program..

[58]  Harry M. Sneed,et al.  Risks involved in reengineering projects , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[59]  Ralf Lämmel,et al.  A Strafunski Application Letter , 2003, PADL.

[60]  Ralf Lämmel,et al.  Deriving tolerant grammars from a base-line grammar , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[61]  Steven Rogers,et al.  Successful COBOL Upgrades: Highlights and Programming Techniques , 1999 .

[62]  Arie van Deursen,et al.  The ASF+SDF Meta-environment: A Component-Based Language Development Environment , 2001 .

[63]  Arie van Deursen,et al.  Type inference for COBOL systems , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[64]  Frank Tip,et al.  Aggregate structure identification and its application to program analysis , 1999, POPL '99.

[65]  J. Favre The CPP paradox , 1995 .

[66]  Steve McConnell,et al.  Rapid Development: Taming Wild Software Schedules , 1996 .

[67]  Ira D. Baxter,et al.  Preprocessor conditional removal by simple partial evaluation , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[68]  P. Klint,et al.  Efficient annotated terms , 2000 .

[69]  Arie van Deursen,et al.  The Asf+Sdf Meta-Environment: a Component-Based Language Development Environment , 2001, LDTA@ETAPS.

[70]  Hedzer Westra CobolX: Transformations for Improving COBOL Programs , 2001 .

[71]  Martin Fowler When to Make a Type , 2003, IEEE Softw..

[72]  Stéphane S. Somé,et al.  Parsing minimization when extracting information from code in the presence of conditional compilation , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[73]  Capers Jones,et al.  Applied software measurement (2nd ed.): assuring productivity and quality , 1996 .

[74]  Mark van den Brand,et al.  Generalized Parsing and Term Rewriting: Semantics Driven Disambiguation , 2003, Electron. Notes Theor. Comput. Sci..

[75]  Alan Gillies,et al.  Software Quality , 1993 .

[76]  Edmund C. Arranga,et al.  Roundtable - In Cobol's Defense , 2000, IEEE Softw..

[77]  Niels Veerman Revitalizing modifiability of legacy assets: Research Articles , 2004 .

[78]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..