Understanding object-oriented source code from the behavioural perspective

Comprehension is a key activity that underpins a variety of software maintenance and engineering tasks. The task of understanding object-oriented systems is hampered by the fact that the code segments that are related to a user-level function tend to be distributed across the system. We introduce a tool-supported code extraction technique that addresses this issue. Given a minimal amount of information about a behavioural element of the system that is of interest (such as a use-case), it extracts a trail of the methods (and method invocations) through the system that are needed in order to achieve an understanding of the implementation of the element of interest. We demonstrate the feasibility of our approach by implementing it as part of a code extraction tool, presenting a case study and evaluating the approach and tool against a set of established criteria for program comprehension tools.

[1]  Eleni Stroulia,et al.  Mining system-user interaction traces for use case models , 2002, Proceedings 10th International Workshop on Program Comprehension.

[2]  Alexander Egyed,et al.  A scenario-driven approach to traceability , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[3]  Martin P. Robillard,et al.  Concern graphs: finding and describing concerns using structural program dependencies , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[4]  Dusan M. Velasevic,et al.  A Method for Reverse Engineering of Use Case Realisations in UML , 2001, Australas. J. Inf. Syst..

[5]  Alexander Egyed,et al.  A Scenario-Driven Approach to Trace Dependency Analysis , 2003, IEEE Trans. Software Eng..

[6]  Giuseppe A. Di Lucca,et al.  Recovering use case models from object-oriented code: a thread-based approach , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[7]  Tao Qin,et al.  Discovering use cases from source code using the branch-reserving call graph , 2003, Tenth Asia-Pacific Software Engineering Conference, 2003..

[8]  Rainer Koschke,et al.  Locating Features in Source Code , 2003, IEEE Trans. Software Eng..

[9]  Claes Wohlin,et al.  An Experimental Comparison of Usage-Based and Checklist-Based Reading , 2003, IEEE Trans. Software Eng..

[10]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[11]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1984, TOPL.

[12]  Thomas W. Reps,et al.  Speeding up slicing , 1994, SIGSOFT '94.

[13]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[14]  Paolo Tonella,et al.  Reverse engineering of the interaction diagrams from C++ code , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[15]  Marc Roper,et al.  The Development and Evaluation of Three Diverse Techniques for Object-Oriented Code Inspection , 2003, IEEE Trans. Software Eng..

[16]  Mark Harman,et al.  Code extraction algorithms which unify slicing and concept assignment , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[17]  Martin P. Robillard,et al.  How effective developers investigate source code: an exploratory study , 2004, IEEE Transactions on Software Engineering.

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

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

[20]  Dusan M. Velasevic,et al.  Reverse Engineering of Use Case Realizations in UML , 2000, SOEN.

[21]  강문설 [서평]「The Unified Modeling Language User Guide」 , 1999 .

[22]  Mark David Weiser,et al.  Program slices: formal, psychological, and practical investigations of an automatic program abstraction method , 1979 .

[23]  G. W. Furnas,et al.  Generalized fisheye views , 1986, CHI '86.

[24]  Hausi A. Müller,et al.  Cognitive design elements to support the construction of a mental model during software exploration , 1999, J. Syst. Softw..