Concept Analysis for Module Restructuring

Low coupling between modules and high cohesion inside each module are the key features of good software design. This paper proposes a new approach to using concept analysis for module restructuring, based on the computation of extended concept subpartitions. Alternative modularizations, characterized by high cohesion around the internal structures that are being manipulated, can be determined by such a method. To assess the quality of the restructured modules, the trade-off between encapsulation violations and decomposition is considered, and proper measures for both factors are defined. Furthermore, the cost of restructuring is evaluated through a measure of distance between the original and the new modularizations. Concept subpartitions were determined for a test suite of 20 programs of variable size: 10 public-domain and 10 industrial applications. The trade-off between encapsulation and decomposition was measured on the resulting module candidates, together with an estimate of the cost of restructuring. Moreover, the ability of concept analysis to determine meaningful modularizations was assessed in two ways. First, programs without encapsulation violations were used as oracles, assuming the absence of violations as an indicator of careful decomposition. Second, the suggested restructuring interventions were actually implemented in some case studies to evaluate the feasibility of restructuring and to deeply investigate the code organization before and after the intervention. Concept analysis was experienced to be a powerful tool supporting module restructuring.

[1]  Paolo Tonella Using the O-A diagram to encapsulate dynamic memory access , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[2]  Gregor Snelting,et al.  On the inference of configuration structures from source code , 1994, Proceedings of 16th International Conference on Software Engineering.

[3]  Richard C. Holt,et al.  Recovering the structure of software systems using tube graph interconnection clustering , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[4]  Thomas W. Reps,et al.  Identifying modules via concept analysis , 1997, 1997 Proceedings International Conference on Software Maintenance.

[5]  Thomas Kunz Evaluating process clusters to support automatic program understanding , 1996, WPC '96. 4th Workshop on Program Comprehension.

[6]  Yair Wand,et al.  An Automated Approach to Information Systems Decomposition , 1992, IEEE Trans. Software Eng..

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

[8]  Giuliano Antoniol,et al.  Points to analysis for program understanding , 1997, Proceedings Fifth International Workshop on Program Comprehension. IWPC'97.

[9]  Aniello Cimitile,et al.  Extracting abstract data types from C programs: A case study , 1993, 1993 Conference on Software Maintenance.

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

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

[12]  Aniello Cimitile,et al.  A precise method for identifying reusable abstract data types in code , 1994, Proceedings 1994 International Conference on Software Maintenance.

[13]  Giuliano Antoniol,et al.  Points-to analysis for program understanding , 1999, J. Syst. Softw..

[14]  J. C. Esteva Automatic identification of reusable components , 1995, Proceedings Seventh International Workshop on Computer-Aided Software Engineering.

[15]  William G. Griswold,et al.  Tool support for planning the restructuring of data abstractions in large systems , 1996, SIGSOFT '96.

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

[17]  Giuliano Antoniol,et al.  Program understanding and maintenance with the CANTO environment , 1997, 1997 Proceedings International Conference on Software Maintenance.

[18]  TipFrank,et al.  Reengineering class hierarchies using concept analysis , 1998 .

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

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

[21]  Gregor Snelting,et al.  Reengineering of configurations based on mathematical concept analysis , 1996, TSEM.

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

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

[24]  R BasiliVictor,et al.  Identifying and Qualifying Reusable Software Components , 1991 .