Software architecture transformations

In order to understand and improve software, we commonly examine and manipulate its architecture. For example, we may want to examine the architecture at different levels of abstraction or zoom-in on one portion of the system. We may discover that the extracted architecture has deviated from our mental model of the software and hence we may want to repair it. The paper identifies the commonality between these architectural transformation actions, i.e., by manipulating the architecture in order to understand analyze, and modify the software structure, we are in fact performing graph transformations. We categorize useful architectural transformations and describe them within the framework of graph transformations. By describing them in a unified way, we gain a better understanding of the transformations and thus, can work towards modeling, specifying and automating them.

[1]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[2]  C. V. Ramamoorthy,et al.  The C Information Abstraction System , 1990, IEEE Trans. Software Eng..

[3]  Richard C. Holt,et al.  Repairing software style using graph grammars , 1997, CASCON.

[4]  Andy Schürr,et al.  Computing with Graphs and Graph Transformations , 1999, Softw. Pract. Exp..

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

[6]  Mei-Hwa Chen,et al.  Software architecture analysis-a case study , 1999, Proceedings. Twenty-Third Annual International Computer Software and Applications Conference (Cat. No.99CB37032).

[7]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[8]  Richard C. Holt,et al.  Linux as a case study: its extracted software architecture , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[9]  Katja Cremer Graph-Based Reverse Engineering and Reengineering Tools , 1999, AGTIVE.

[10]  Rick Kazman,et al.  Software architectural transformation , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[11]  Richard C. Holt,et al.  Forward and reverse repair of software architecture , 1999, CASCON.

[12]  E. Burton Swanson,et al.  Characteristics of application software maintenance , 1978, CACM.

[13]  Richard C. Holt Structural manipulations of software architecture using Tarski relational algebra , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[14]  Robert W. Schwanke,et al.  An intelligent tool for re-engineering software modularity , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[15]  Michael W. Godfrey,et al.  Architecture Analysis and Repair of Open Source Software , 2000 .

[16]  David Notkin,et al.  Software reflexion models: bridging the gap between source and high-level models , 1995, SIGSOFT FSE.

[17]  Richard C. Holt Software architecture abstraction and aggregation as algebraic manipulations , 1999, CASCON.

[18]  Melissa P. Chase,et al.  Manipulating Recovered Software Architecture Views , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[19]  René L. Krikhaar,et al.  A relational approach to support software architecture analysis , 1998, Softw. Pract. Exp..

[20]  Dorothea Blostein,et al.  Issues in the Practical Use of Graph Rewriting , 1994, TAGT.

[21]  Mehdi T. Harandi,et al.  Workshop on software specification and design , 1988, SOEN.

[22]  Richard C. Holt Binary Relational Algebra Applied to Software Architecture , 1996 .

[23]  René L. Krikhaar,et al.  A two-phase process for software architecture improvement , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[24]  Rubén Prieto-Díaz,et al.  Module interconnection languages , 1986, J. Syst. Softw..