This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Using a Concept Lattice of Decomposition Slices for Program Understanding and Impact Analysis
June 2003 (vol. 29 no. 6)
pp. 495-509

Abstract—Decomposition slice graph and concept lattice are two program representations used to abstract the details of the 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 organize 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 to weak interferences between computations, i.e., shared statements which are not decomposition slices. The concept lattice of decomposition slices can be used in support to 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] P. Anderson and T. Teitelbaum, Software Inspection Using Codesurfer Proc. First Workshop Inspection in Software Eng. (WISE), pp. 4-11, July 2001.
[2] T. Ball, The Concept of Dynamic Analysis Proc. Seventh European Software Eng. Conf. Held Jointly with the Seventh ACM SIGSOFT Symp. Foundations of Software Eng., pp. 216-234, Sept. 1999.
[3] D. Binkley and K.B. Gallagher, Program Slicing Advances in Computers, vol. 43, pp. 1-50, 1996.
[4] G. Canfora, A. Cimitile, and A.D. Lucia, Conditioned Program Slicing Information and Software Technology, vol. 40, pp. 595-607, 1998.
[5] J.D. Choi and J. Ferrante, Static Slicing in the Presence of Goto Statements ACM Trans. Programming Languages and Systems, vol. 16, no. 4, pp. 1097-1113, July 1994.
[6] A. Cimitile, A.D. Lucia, and M. Munro, Identifying Reusable Functions Using Specification Driven Program Slicing: A Case Study Proc. Int'l Conf. Software Maintenance, pp. 124-133, 1995.
[7] S. Danicic, C. Fox, M. Harman, and R. Hieros, Consit: A Conditioned Program Slicer Proc. Int'l Conf. Software Maintenance (ICSM '00), pp. 216-226, Oct. 2000.
[8] T. Eisenbarth, R. Koschke, and D. Simon, “Aiding Program Comprehension by Static and Dynamic Feature Analysis,” Proc. Int'l Conf. Software Maintainence, pp. 602-611, Nov. 2001.
[9] E. Eisenbarth, R. Koschke, and D. Simon, Feature-Driven Program Understanding Using Concept Analysis of Execution Traces Proc. Int'l Workshop Program Comprehension (IWPC '01), pp. 300-309, May 2001.
[10] P. Funk, A. Lewien, and G. Snelting, Algorithms for Concept Lattice Decomposition and Their Application technical report, Computer Science Dept., Technische Univ. Braunschweig, 1995.
[11] K. Gallagher and J. Lyle, “Using Program Slicing in Software Maintenance,” IEEE Trans. Software Eng., Aug. 1991, pp. 751-761.
[12] K.B. Gallagher, Visual Impact Analysis Proc. Int'l Conf. Software Maintenance, pp. 52-58, 1996.
[13] B. Ganter and R. Wille, Formal Concept Analysis. Springer-Verlag, 1996.
[14] R. Gupta, M. Harrold, and M. Soffa, Program Slicing-Based Regression Testing Techniques J. Software Testing, Verification, and Reliability, vol. 6, no. 2, pp. 83-112, June 1996.
[15] M. Harman and S. Danicic, Using Program Slicing to Simplify Testing Software Testing, Verification, and Reliability, vol. 5, pp. 143-162, Sept. 1995.
[16] M. Harman and S. Danicic, Amorphous Program Slicing Proc. International Workshop Program Comprehension (IWPC '97), pp. 70-79, May 1997.
[17] S. Horwitz, T. Reps, and D. Binkley, Interprocedural Slicing Using Dependence Graphs Proc. ACM SIGPLAN'88 Conf. Programming Language Design and Implementation, pp. 35-46, June 1988.
[18] M. Hutchins and K. Gallagher, Improving Visual Impact Analysis Proc. Int'l Conf. Software Maintenance, pp. 294-303, Nov. 1998.
[19] M. Kamkar, P. Fritzson, and N. Shahmehri, Interprocedural Dynamic Slicing Applied to Interprocedural Data Flow Testing Proc. Int'l Conf. Software Maintenance, pp. 386-395, Sept. 1993.
[20] B. Korel and J. Laski, Dynamic Program Slicing Information Processing Letters, vol. 29, no. 3, pp. 155-163, Oct. 1988.
[21] M. Krone and G. Snelting, “On The Inference of Configuration Structures from Source Code,” Proc. 16th Int'l Conf. Software Eng., pp. 49-58, May 1994.
[22] L. Larsen and M.J. Harrold, ”Slicing Object-Oriented Software,” Proc. Int'l Conf. Software Eng., pp. 495–505, Mar. 1996.
[23] M. Lee and A.J. Offutt, Algorithmic Analysis of the Impact of Changes to Object-Oriented Software Proc. IEEE Int'l Conf. Software Maintenance, pp. 171-184, Nov. 1996.
[24] M.L. Lee, Change Impact Analysis of Object-Oriented Software PhD thesis, George Mason Univ., 1998.
[25] C. Lindig and G. Snelting, “Assessing Modular Structure of Legacy Code Based on Mathematical Concept Analysis,” Proc. 19th Int'l Conf. Software Eng., pp. 349-359, May 1997.
[26] J.R. Lyle and D. Binkley, Program Slicing in the Presence of Pointers Proc. Third Software Eng. Research Forum, pp. 255-260, Nov. 1993.
[27] G. Rothermel and M.J. Harrold, “Analyzing Regression Test Selection Techniques,” IEEE Trans. Software Eng., vol. 22, no. 8, pp. 529-551, Aug. 1996.
[28] G. Rothermel and M.J. Harrold, A Safe, Efficient Regression Test Selection Technique ACM Trans. Software Eng. and Methodology, vol. 6, no. 2, pp. 173-210, Apr. 1997.
[29] B. Ryder and F. Tip, Change Impact Analysis for Object-Oriented Programs Proc. SIGPLAN/SIGSOFT Workshop Program Analysis for Software Tools and Eng. (PASTE '01), pp. 46-53, June 2001.
[30] M. Siff and T. Reps, “Identifying Modules via Concept Analysis,” Proc. Int'l Conf. Software Maintenance, pp. 170-179, Oct. 1997.
[31] G. Snelting, Reengineering of Configurations Based on Mathematical Concept Analysis ACM Trans. Software Eng. and Methodology, vol. 5, no. 2, pp. 146-189, 1996.
[32] G. Snelting and F. Tip, Reengineering Class Hierarchies Using Concept Analysis ACM Trans. Programming Languages and Systems, vol. 22, no. 3, pp. 540-582, May 2000.
[33] F. Tip, A Survey of Program Slicing Techniques J. Programming Languages, vol. 3, no. 3, pp. 121-189, 1995.
[34] P. Tonella, Using the O-A Diagram to Encapsulate Dynamic Memory Access Proc. Int'l Conf. Software Maintenance, pp. 326-335, Nov. 1998.
[35] P. Tonella, “Concept Analysis for Module Restructuring,” IEEE Trans. Software Eng., vol. 27, no. 4, pp. 351-363, Apr. 2001.
[36] P. Tonella, G. Antoniol, R. Fiutem, and E. Merlo, Flow Insensitive C++ Pointers and Polymorphism Analysis and Its Application to Slicing Proc. Int'l Conf. Software Eng., pp. 433-443, 1997.
[37] M. Weiser, Programmers Use Slices When Debugging Comm. ACM, vol. 25, pp. 446-452, July 1982.
[38] M. Weiser, Program Slicing IEEE Trans. Software Eng., vol. 10, no. 4, pp. 352-357, July 1984.

Index Terms:
Program slicing, concept analysis, program comprehension, impact analysis, software maintenance.
Citation:
Paolo Tonella, "Using a Concept Lattice of Decomposition Slices for Program Understanding and Impact Analysis," IEEE Transactions on Software Engineering, vol. 29, no. 6, pp. 495-509, June 2003, doi:10.1109/TSE.2003.1205178
Usage of this product signifies your acceptance of the Terms of Use.