Equipping the reflexion method with automated clustering

A significant aspect in applying the reflexion method is the mapping of components found in the source code onto the conceptual components defined in the hypothesized architecture. To date, this mapping is established manually, which requires a lot of work for large software systems. In this paper, we present a new approach, in which clustering techniques are applied to support the user in the mapping activity. The result is a semi-automated mapping technique that accommodates the automatic clustering of the source model with the user's hypothesized knowledge about the system's architecture. This paper describes also a case study in which our semi-automated mapping technique has been applied successfully to extend a partial map of a real-world software application

[1]  Rainer Koschke,et al.  Atomic architectural component recovery for program understanding and evolution , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[2]  N. Wilde,et al.  Identifying objects in a conventional procedural language: an example of data design recovery , 1990, Proceedings. Conference on Software Maintenance 1990.

[3]  William C. Chu,et al.  A measure for composite module cohesion , 1992, International Conference on Software Engineering.

[4]  Harald C. Gall,et al.  Binding object models to source code: an approach to object-oriented re-architecting , 1998, Proceedings. The Twenty-Second Annual International Computer Software and Applications Conference (Compsac '98) (Cat. No.98CB 36241).

[5]  Norman Wilde,et al.  An object finder for program structure understanding in software maintenance , 1994, J. Softw. Maintenance Res. Pract..

[6]  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.

[7]  Onaiza Maqbool,et al.  The weighted combined algorithm: a linkage algorithm for software clustering , 2004, Eighth European Conference on Software Maintenance and Reengineering, 2004. CSMR 2004. Proceedings..

[8]  Kamran Sartipi Alborz: a query-based tool for software architecture recovery , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[9]  Harald C. Gall,et al.  Finding objects in procedural programs: an alternative approach , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[10]  Houari A. Sahraoui,et al.  Applying concept formation methods to object identification in procedural code , 1997, Proceedings 12th IEEE International Conference Automated Software Engineering.

[11]  Jean-Francois Girard,et al.  A Metric-Based Approach to Detect Abstract Data Types and State Encapsulations , 2004, Automated Software Engineering.

[12]  Derek Rayside,et al.  The effect of call graph construction algorithms for object-oriented programs on automatic clustering , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[13]  Giuseppe Visaggio,et al.  Software salvaging and the call dominance tree , 1995, J. Syst. Softw..

[14]  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).

[15]  Periklis Andritsos,et al.  Software clustering based on information loss minimization , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[16]  Hausi A. Müller,et al.  A reverse engineering environment based on spatial and visual software interconnection models , 1992 .

[17]  David Notkin,et al.  Reengineering with Reflection Models: A Case Study , 1997, Computer.

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

[19]  Nicolas Anquetil,et al.  Extracting concepts from file names; a new file clustering criterion , 1998, Proceedings of the 20th International Conference on Software Engineering.

[20]  Dusan M. Velasevic,et al.  A use-case driven method of architecture recovery for program understanding and reuse reengineering , 2000, Proceedings of the Fourth European Conference on Software Maintenance and Reengineering.

[21]  Gerardo Canfora,et al.  An improved algorithm for identifying objects in code , 1996 .

[22]  Doris L. Carver,et al.  A graph-based object identification process for procedural programs , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[23]  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).

[24]  Andreas Christl Semi-Automated Mapping for the Reflexion Method , 2005 .

[25]  Richard C. Holt,et al.  The Orphan Adoption problem in architecture maintenance , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[26]  Rainer Koschke,et al.  Hierarchical reflexion models , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[27]  Thomas W. Reps,et al.  Identifying Modules via Concept Analysis , 1999, IEEE Trans. Software Eng..

[28]  Mircea Trifu,et al.  Architecture-aware adaptive clustering of OO systems , 2004, Eighth European Conference on Software Maintenance and Reengineering, 2004. CSMR 2004. Proceedings..

[29]  Fernando Brito e Abreu,et al.  A coupling-guided cluster analysis approach to reengineer the modularity of object-oriented systems , 2000, Proceedings of the Fourth European Conference on Software Maintenance and Reengineering.

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

[31]  Margaret-Anne D. Storey,et al.  A multi-perspective software visualization environment , 2000, CASCON.

[32]  Victor R. Basili,et al.  System Structure Analysis: Clustering with Data Bindings , 1985, IEEE Transactions on Software Engineering.

[33]  Robert L. Nord,et al.  Applied Software Architecture , 1999, Addison Wesley object technology series.

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

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

[36]  Doris L. Carver,et al.  A visual representation model for software subsystem decomposition , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[37]  Mark Harman,et al.  A multiple hill climbing approach to software module clustering , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[38]  Aniello Cimitile,et al.  A case study of applying an eclectic approach to identify objects in code , 1999, Proceedings Seventh International Workshop on Program Comprehension.

[39]  Kamran Sartipi,et al.  A graph pattern matching approach to software architecture recovery , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[40]  Ali Shokoufandeh,et al.  Applying spectral methods to software clustering , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[41]  D. R. Harris,et al.  Recovering abstract data types and object instances from a conventional procedural language , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[42]  T. A. Wiggerts,et al.  Using clustering algorithms in legacy systems remodularization , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[43]  Paolo Tonella,et al.  Concept Analysis for Module Restructuring , 2001, IEEE Trans. Software Eng..

[44]  Theodore Johnson,et al.  A new approach to finding objects in programs , 1994, J. Softw. Maintenance Res. Pract..

[45]  Jean-Francois Girard,et al.  Finding components in a hierarchy of modules: a step towards architectural understanding , 1997, 1997 Proceedings International Conference on Software Maintenance.