Semi-Automated Mapping for the Reflexion Method

A significant aspect in applying the Software Reflexion Model analysis is mapping of components found in the source code onto the conceptual components defined in the hypothesized architecture. To date, this mapping is done manually, which requires a lot of work for large software systems. This thesis evaluates if and how cluster analysis can leverage the manual mapping of source code artifacts. For this evaluation, the HuGMe method has been developed, in which assets of existing clustering techniques are combined and applied to support the user in the mapping activity. The result is a semi-automated mapping approach that accommodates the automatic clustering of the source model with the user's hypothesized knowledge about the system's architecture. In addition, a user-interface is designed to support the semi-automated mapping of HuGMe. The core of HuGMe is what I call a supportive clustering algorithm. The term 'supportive' means that the task of the algorithm is not only to automatically cluster entities but to support the user in the efforts to achieve a correct and complete map. The clustering algorithm maps only those source code artifacts without user-interaction for which a mapping decision is 'easy enough' to be made automatically. For all other source code components, where such an automatic mapping is not possible, the clustering algorithm provides suggestions for the user to which subsystem the component might belong. This thesis also presents a case study in which the cluster analysis of HuGMe is successfully applied to extend a partial map of a real-world software application. Thus confirming the benefit cluster analysis brings into the mapping activity.

[1]  Meir M. Lehman,et al.  Program evolution , 1984, Inf. Process. Manag..

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

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

[4]  Emden R. Gansner,et al.  Bunch: a clustering tool for the recovery and maintenance of software system structures , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[5]  IEEE-SA Standards Board , 2000 .

[6]  Spiros Mancoridis,et al.  Automatic clustering of software systems using a genetic algorithm , 1999, STEP '99. Proceedings Ninth International Workshop Software Technology and Engineering Practice.

[7]  Peter Eades,et al.  A System for Graph Clustering Based on User Hints , 2000, VIP.

[8]  Ali S. Hadi,et al.  Finding Groups in Data: An Introduction to Chster Analysis , 1991 .

[9]  Thomas Kunz,et al.  Using Automatic Process Clustering for Design Recovery and Distributed Debugging , 1995, IEEE Trans. Software Eng..

[10]  Joe Marks,et al.  Interactive Partitioning (System Demonstration, Short) , 2000, Graph Drawing.

[11]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

[12]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

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

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

[15]  M. Wertheimer Untersuchungen zur Lehre von der Gestalt. II , 1923 .

[16]  Richard C. Holt,et al.  ACCD: an algorithm for comprehension-driven clustering , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

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

[18]  David Notkin,et al.  Software Reflexion Models: Bridging the Gap between Design and Implementation , 2001, IEEE Trans. Software Eng..

[19]  David Notkin,et al.  Reengineering Reflexion Models: A Case Study , 1997 .

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

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

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

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

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

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

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

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

[28]  Richard C. Holt,et al.  On the stability of software clustering algorithms , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

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