Evolving legacy system features into fine-grained components

There is a constant need for practical, efficient, and cost-effective software evolution techniques. We propose a novel evolution methodology that integrates the concepts of features, regression tests, and component-based software engineering (CBSE). Regression test cases are untapped resources, full of information about system features. By exercising each feature with its associated test cases using code profilers and similar tools, code can be located and refactored to create components. These components are then inserted back into the legacy system, ensuring a working system structure. This methodology is divided into three parts. Part one identifies the source code associated with features that need evolution. Part two deals with creating components and part three measures results. By applying this methodology, AFS has successfully restructured its enterprise legacy system and reduced the costs of future maintenance. Additionally, the components that were refactored from the legacy system are currently being used within a web-enabled application.

[1]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[2]  L. B. S. Raccoon The complexity gap , 1995, SOEN.

[3]  Gregor Kiczales,et al.  Using aspectC to improve the modularity of path-specific customization in operating system code , 2001, ESEC/FSE-9.

[4]  Eileen Frazer,et al.  Separating fact from fiction , 2003 .

[5]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[6]  David Lorge Parnas,et al.  Review of David L. Parnas' "Designing Software for Ease of Extension and Contraction" , 2004 .

[7]  Wei-Tek Tsai,et al.  Regression testing in an industrial environment , 1998, CACM.

[8]  Martin L. Griss,et al.  Implementing Product-Line Features with Component Reuse , 2000, ICSR.

[9]  Hausi A. Müller,et al.  The Year 2000 Problem: Issues and Implications. , 1997 .

[10]  Richard N. Taylor,et al.  Separating fact from fiction in software architecture , 1998, ISAW '98.

[11]  Alexander L. Wolf,et al.  A conceptual basis for feature engineering , 1999, J. Syst. Softw..

[12]  Allen D. Malony,et al.  Trace View: A Trace Visualization Tool , 1991, ACPC.

[13]  Thomas Ball,et al.  Software Visualization in the Large , 1996, Computer.

[14]  Anil K. Jain,et al.  Data clustering: a review , 1999, CSUR.

[15]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[16]  Gregg Rothermel,et al.  Analyzing Regression Test Selection Techniques , 1996, IEEE Trans. Software Eng..

[17]  George T. Heineman,et al.  Component-Based Software Engineering: Putting the Pieces Together , 2001 .

[18]  George T. Heineman,et al.  Architectural evolution of legacy systems , 1999, Proceedings. Twenty-Third Annual International Computer Software and Applications Conference (Cat. No.99CB37032).

[19]  David S. Rosenblum,et al.  TESTTUBE: a system for selective regression testing , 1994, Proceedings of 16th International Conference on Software Engineering.

[20]  Robert C. Martin Soapbox - eXtreme Programming Development through Dialog , 2000, IEEE Softw..

[21]  Nelson Weiderman,et al.  Approaches to Legacy System Evolution. , 1997 .

[22]  Hermann Kaindl,et al.  A case study of decomposing functional requirements using scenarios , 1998, Proceedings of IEEE International Symposium on Requirements Engineering: RE '98.

[23]  M. J. Harrold,et al.  A Comparison of Regression Test Selection Techniques 1 , 1993 .

[24]  Evan H. Magill,et al.  Learning To Detect and Avoid Run-Time Feature Interactions in Intelligent Networks , 1998, IEEE Trans. Software Eng..

[25]  Peyman Oreizy,et al.  Architecture-based runtime software evolution , 1998, Proceedings of the 20th International Conference on Software Engineering.

[26]  Arun Lakhotia,et al.  A formalism to automate mapping from program features to code , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[27]  James R. Larus,et al.  The use of program profiling for software maintenance with applications to the year 2000 problem , 1997, ESEC '97/FSE-5.

[28]  Norman Wilde,et al.  Software reconnaissance: Mapping program features to code , 1995, J. Softw. Maintenance Res. Pract..

[29]  Alan M. Davis,et al.  The Design of a Family of Application-Oriented Requirements Languages , 1982, Computer.

[30]  Allen D. Malony,et al.  Traceview: a trace visualization tool , 1991, IEEE Software.

[31]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[32]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[33]  Gregg Rothermel,et al.  A safe, efficient algorithm for regression test selection , 1993, 1993 Conference on Software Maintenance.

[34]  Santiago Comella-Dorda,et al.  A survey of black-box modernization approaches for information systems , 2000, Proceedings 2000 International Conference on Software Maintenance.

[35]  David Notkin,et al.  First workshop on economics-driven software engineering research , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[36]  Santiago Comella-Dorda,et al.  A Survey of Legacy System Modernization Approaches , 2000 .

[37]  Alexander L. Wolf,et al.  Toward Feature Engineering of Software Systems , 1997 .

[38]  Swapna S. Gokhale,et al.  Locating program features using execution slices , 1999, Proceedings 1999 IEEE Symposium on Application-Specific Systems and Software Engineering and Technology. ASSET'99 (Cat. No.PR00122).

[39]  KiczalesGregor,et al.  Using aspectC to improve the modularity of path-specific customization in operating system code , 2001 .

[40]  共立出版株式会社 コンピュータ・サイエンス : ACM computing surveys , 1978 .

[41]  Frank Tip,et al.  Parametric program slicing , 1995, POPL '95.

[42]  Joseph Robert Horgan,et al.  Dynamic program slicing , 1990, PLDI '90.