Using Interconnection Style Rules to Infer Software Architecture Relations

Software design techniques emphasize the use of abstractions to help developers deal with the complexity of constructing large and complex systems. These abstractions can also be used to guide program- mers through a variety of maintenance, reengineering and enhancement activities. Unfortunately, recovering design abstractions directly from a system's implementation is a difficult task because the source code does not contain them. In this paper we describe an automatic process to in- fer architectural-level abstractions from the source code. The first step uses software clustering to aggregate the system's modules into abstract containers called subsystems. The second step takes the output of the clustering process, and infers architectural-level relations based on formal style rules that are specified visually. This two step process has been im- plemented using a set of integrated tools that employ search techniques to locate good solutions to both the clustering and the relationship in- ferencing problem quickly. The paper concludes with a case study to demonstrate the effectiveness of our process and tools.

[1]  Nicolas Anquetil,et al.  A comparison of graphs of concept for reverse engineering , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

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

[3]  John A. Clark,et al.  Formulating software engineering as a search problem , 2003, IEE Proc. Softw..

[4]  Robert W. Schwanke,et al.  Using Neural Networks to Modularize Software , 1994, Machine Learning.

[5]  Emden R. Gansner,et al.  Using automatic clustering to produce high-level system organizations of source code , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[6]  Spiros Mancoridis,et al.  Modeling the Search Landscape of Metaheuristic Software Clustering Algorithms , 2003, GECCO.

[7]  Mark Harman,et al.  Reformulating software engineering as a search problem , 2003 .

[8]  Nicolas Anquetil,et al.  Recovering software architecture from the names of source files , 1999, J. Softw. Maintenance Res. Pract..

[9]  Brian S. Mitchell,et al.  A heuristic approach to solving the software clustering problem , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[10]  Arie van Deursen,et al.  Identifying objects using cluster and concept analysis , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[11]  Spiros Mancoridis,et al.  ISF: A Visual Formalism for Specifying Interconnection Styles for Software Design , 1998, Int. J. Softw. Eng. Knowl. Eng..

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

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

[14]  Linda M. Wills,et al.  Reverse Engineering , 1996, Springer US.

[15]  Song C. Choi,et al.  Extracting and restructuring the design of large systems , 1990, IEEE Software.

[16]  Spiros Mancoridis,et al.  Using Heuristic Search Techniques To Extract Design Abstractions From Source Code , 2002, GECCO.

[17]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[18]  Jeffrey L. Korn,et al.  Chava: reverse engineering and tracking of Java applets , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[19]  Gregor Snelting,et al.  Assessing Modular Structure of Legacy Code Based on Mathematical Concept Analysis , 1997, Proceedings of the (19th) International Conference on Software Engineering.