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]  Peyman Oreizy,et al.  Architecture-based runtime software evolution , 1998, Proceedings of the 20th International Conference on Software Engineering.

[2]  C MartinRobert eXtreme Programming Development through Dialog , 2000 .

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

[4]  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).

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

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

[7]  Janusz W. Laski,et al.  Dynamic Program Slicing , 1988, Inf. Process. Lett..

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

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

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

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

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

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

[14]  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).

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

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

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

[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]  Hermann Kaindl,et al.  A case study of decomposing functional requirements using scenarios , 1998, Proceedings of IEEE International Symposium on Requirements Engineering: RE '98.

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

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