Requirements-driven software re-engineering framework

Software re-engineering projects such as migrating code from one platform to another or restructuring a monolithic system into a modular architecture are popular maintenance tasks. Usually, projects of this type have to conform to hard and soft quality constraints (or non-functional requirements) such as "the migrant system must run as fast as the original", or "the new system should be more maintainable than the original". This paper proposes a framework that allows for specific design and quality requirements (performance and maintainability) of the target migrant system to be considered during the re-engineering process. Quality requirements for the migrant system can be encoded using soft-goal interdependency graphs and can be associated with specific software transformations that need to be carried out for achieving the target quality requirement. These transformations can be applied as a series of iterative and incremental steps that pertain both to the design (architecture) and source code (implementation) levels. An evaluation procedure can be used at each transformation step to determine whether specific goals have been achieved.

[1]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[2]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[3]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[4]  Hausi A. Müller,et al.  A reverse-engineering approach to subsystem structure identification , 1993, J. Softw. Maintenance Res. Pract..

[5]  Hausi A. Müller,et al.  The Software Bookshelf , 1997, IBM Syst. J..

[6]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[7]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[8]  Paul W. Oman,et al.  Construction and testing of polynomials predicting software maintainability , 1994, J. Syst. Softw..

[9]  David Garlan,et al.  Using tool abstraction to compose systems , 1992, Computer.

[10]  Brian A. Nixon,et al.  Dealing with performance requirements during the development of information systems , 1993, [1993] Proceedings of the IEEE International Symposium on Requirements Engineering.

[11]  David F. Bacon,et al.  Fast and effective optimization of statically typed object-oriented languages , 1997 .

[12]  Ladan Tahvildari,et al.  A workbench for quality based software re-engineering (Doctoral Symposium) , 2000, OOPSLA '00.

[13]  Ladan Tahvildari,et al.  An approach for measuring software evolution using source code features , 1999, Proceedings Sixth Asia Pacific Software Engineering Conference (ASPEC'99) (Cat. No.PR00509).

[14]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[15]  Reinhold Weicker,et al.  Dhrystone: a synthetic systems programming benchmark , 1984, CACM.

[16]  Roel Wieringa,et al.  Requirements Engineering: Frameworks for Understanding , 1996 .

[17]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[18]  Paul W. Oman,et al.  The application of software maintainability models in industrial software systems , 1995, J. Syst. Softw..

[19]  Leonard J. Bass,et al.  Attribute-Based Architecture Styles , 1999, WICSA.

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

[21]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[22]  Barry Boehm,et al.  Characteristics of software quality , 1978 .