Reengineering at the Architectural Level : Transformation of Legacy Systems

In this paper, we put forward a methodology for reengineering the architecture of a legacy software system. The proposed approach is not restricted to any specific source and target architectures, or programming language. It consists in (1) achieving a representation of the source code through its categorization and structuring, (2) transforming it into the new intended architecture, and (3) generating the code for the target platform. First, the code is categorized according to its purpose by pre-defined rules and represented as a model that is an instance of a type graph. Then, this representation is transformed into the intended target architectural paradigm using graph transformation techniques. The generation of the target code is not covered in this report but will be studied in the near future. The approach attempts to address problems that are repeatedly encountered in legacy reengineering industry projects.

[1]  Rick Kazman,et al.  Requirements for integrating software architecture and reengineering models: CORUM II , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[2]  Kevin A. Schneider,et al.  Source transformation in software engineering using the TXL transformation system , 2002, Inf. Softw. Technol..

[3]  Harry M. Sneed Object-oriented COBOL recycling , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

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

[5]  Frank Budinsky,et al.  Eclipse Modeling Framework , 2003 .

[6]  Christopher W. Pidgeon,et al.  DMS®: Program Transformations for Practical Scalable Software Evolution , 2002, IWPSE '02.

[7]  Reiko Heckel,et al.  Graph Transformation in a Nutshell , 2006, FoVMT.

[8]  Tom Mens,et al.  Analysing refactoring dependencies using graph transformation , 2007, Software & Systems Modeling.

[9]  Kevin A. Schneider,et al.  Software engineering by source transformation - experience with TXL , 2001, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation.

[10]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[11]  Paul Klint,et al.  Compiling language definitions: the ASF+SDF compiler , 2000, TOPL.

[12]  Jim Welsh,et al.  Towards pattern-based design recovery , 2002, ICSE '02.

[13]  Tom Mens,et al.  Formalizing refactorings with graph transformations , 2005, J. Softw. Maintenance Res. Pract..

[14]  Saurabh Sinha,et al.  Semantics-based reverse engineering of object-oriented data models , 2006, ICSE '06.

[15]  Nenad Medvidovic,et al.  Improving System Understanding via Interactive, Tailorable, Source Code Analysis , 2005, FASE.

[16]  Rudolf Ferenc,et al.  Data exchange with the columbus schema for c++ , 2002, Proceedings of the Sixth European Conference on Software Maintenance and Reengineering.