A cliche-based environment to support architectural reverse engineering

Paper reprinted from ICSM '96. When programmers perform maintenance tasks, program understanding is required. One of the first activities in understanding a software system is identifying its subsystems and their relations, i.e. its software architecture. Since a large part of the effort is spent in creating a mental model of the system under study, tools can help maintainers in managing the evolution of legacy systems, by showing them architectural information. In this paper, an environment for the architectural analysis of software systems is described. The environment is based on a hierarchical architectural model that drives the application of a set of recognizers, each producing a different architectural view of the system or of some of its parts. Recognizers embody knowledge about architectural cliches and use flow analysis techniques to make their output more accurate.

[1]  Hausi A. Müller,et al.  Structural Redocumentation: A Case Study , 1995, IEEE Softw..

[2]  Paola Inverardi,et al.  Formal Specification and Analysis of Software Architectures Using the Chemical Abstract Machine Model , 1995, IEEE Trans. Software Eng..

[3]  Alexander S. Yeh,et al.  Reverse Engineering to the Architectural Level , 1995, 1995 17th International Conference on Software Engineering.

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

[5]  Alexander S. Yeh,et al.  Recognizers for extracting architectural features from source code , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[6]  Wojtek Kozaczynski,et al.  Program Concept Recognition and Transformation , 1992, IEEE Trans. Software Eng..

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

[8]  Robert L. Nord,et al.  Software Architecture in Industrial Applications , 1995, 1995 17th International Conference on Software Engineering.

[9]  Jeff Kramer,et al.  Automated support for distributed software design , 1995, Proceedings Seventh International Workshop on Computer-Aided Software Engineering.

[10]  Ted J. Biggerstaff,et al.  Design recovery for maintenance and reuse , 1989, Computer.

[11]  Aniello Cimitile,et al.  Identifying reusable functions using specification driven program slicing: a case study , 1995, Proceedings of International Conference on Software Maintenance.

[12]  Giuliano Antoniol,et al.  Understanding the architecture of software systems , 1996, WPC '96. 4th Workshop on Program Comprehension.

[13]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[14]  David Garlan,et al.  Formalizing Architectural Connection , 1994, ICSE.

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

[16]  R. E. Kurt Stirewalt,et al.  The interleaving problem in program understanding , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[17]  Jean-Francois Girard,et al.  Multi-Valued Constant Propagation Analysis for User Interface Reengineering , 1995, Int. J. Softw. Eng. Knowl. Eng..

[18]  James R. Cordy,et al.  A Syntactic Theory of Software Architecture , 1995, IEEE Trans. Software Eng..

[19]  Linda Mary Wills,et al.  Automated program recognition by graph parsing , 1992 .

[20]  Wojtek Kozaczynski,et al.  Recovering reusable components from legacy systems by program segmentation , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[21]  Mark N. Wegman,et al.  Constant propagation with conditional branches , 1985, POPL.

[22]  Linda M. Wills,et al.  Recognizing a program's design: a graph-parsing approach , 1990, IEEE Software.

[23]  Mary Shaw,et al.  Abstractions for Software Architecture and Tools to Support Them , 1995, IEEE Trans. Software Eng..

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