Using a Concept Lattice of Decomposition Slices for Program Understanding and Impact Analysis

The decomposition slice graph and concept lattice are two program representations used to abstract the details of code into a higher-level view of the program. The decomposition slice graph partitions the program into computations performed on different variables and shows the dependence relation between computations, holding when a computation needs another computation as a building block. The concept lattice groups program entities which share common attributes and organizes such groupings into a hierarchy of concepts, which are related through generalizations/specializations. This paper investigates the relationship existing between these two program representations. The main result of this paper is a novel program representation, called concept lattice of decomposition slices, which is shown to be an extension of the decomposition slice graph, and is obtained by means of concept analysis, with additional nodes associated with weak interferences between computations, i.e., shared statements which are not decomposition slices. The concept lattice of decomposition slices can be used to support software maintenance by providing relevant information about the computations performed by a program and the related dependences/interferences, as well as by representing a natural data structure on which to conduct impact analysis. Preliminary results on small to medium size code support the applicability of this method at the intraprocedural level or when investigating the dependences among small groups of procedures.

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

[2]  Keith Brian Gallagher,et al.  Improving visual impact analysis , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[3]  Nahid Shahmehri,et al.  Interprocedural dynamic slicing applied to interprocedural data flow testing , 1993, 1993 Conference on Software Maintenance.

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

[5]  Mark Harman,et al.  Amorphous program slicing , 1997, Proceedings Fifth International Workshop on Program Comprehension. IWPC'97.

[6]  Jong-Deok Choi,et al.  Static slicing in the presence of goto statements , 1994, TOPL.

[7]  Gregg Rothermel,et al.  A safe, efficient regression test selection technique , 1997, TSEM.

[8]  Mary Jean Harrold,et al.  Slicing object-oriented software , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[9]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[10]  Rainer Koschke,et al.  Aiding program comprehension by static and dynamic feature analysis , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[11]  A. Jefferson Offutt,et al.  Algorithmic analysis of the impacts of changes to object-oriented software , 2000, Proceedings. 34th International Conference on Technology of Object-Oriented Languages and Systems - TOOLS 34.

[12]  Jeff Offutt,et al.  Change impact analysis of object-oriented software , 1998 .

[13]  Keith Brian Gallagher,et al.  Visual impact analysis , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[14]  Frank Tip,et al.  Change impact analysis for object-oriented programs , 2001, PASTE '01.

[15]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

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

[17]  Gregg Rothermel,et al.  Analyzing Regression Test Selection Techniques , 1996, IEEE Trans. Software Eng..

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

[19]  Li Li,et al.  Algorithmic analysis of the impact of changes to object-oriented software , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[20]  Frank Tip,et al.  Understanding class hierarchies using concept analysis , 2000, TOPL.

[21]  Giuliano Antoniol,et al.  Flow Insensitive C++ Pointers and Polymorphism Analysis and its application to slicing , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[22]  Paul Anderson,et al.  Software Inspection Using CodeSurfer , 2001 .

[23]  Frank Tip,et al.  Reengineering class hierarchies using concept analysis , 1998, SIGSOFT '98/FSE-6.

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

[25]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[26]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[27]  Mary Lou Soffa,et al.  Program Slicing‐Based Regression Testing Techniques , 1996 .

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

[29]  Janusz W. Laski,et al.  Dynamic Program Slicing , 1988, Inf. Process. Lett..

[30]  Mark Harman,et al.  ConSIT: a conditioned program slicer , 2000, Proceedings 2000 International Conference on Software Maintenance.

[31]  Thomas Ball,et al.  The concept of dynamic analysis , 1999, ESEC/FSE-7.

[32]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1988, SIGP.

[33]  Rainer Koschke,et al.  Feature-driven program understanding using concept analysis of execution traces , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[34]  Aniello Cimitile,et al.  Conditioned program slicing , 1998, Inf. Softw. Technol..

[35]  Mark Harman,et al.  Using program slicing to simplify testing , 1995, Softw. Test. Verification Reliab..

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