Program comprehension with dynamic recovery of code collaboration patterns and roles

Software functionalities and behavior are accomplished by the cooperation of code artifacts. The understanding of this type of source code collaboration provides an important aid to the maintenance and evolution of legacy systems. Normally, legacy systems were developed decades ago using early programming languages such as Cobol, Fortran or C etc., and a huge number of such systems are still in use. Coyle et. al estimate that only the systems written in Cobol have been account for more than 100 billion LOC. Moreover, a large amount of domain business knowledge has been coded in legacy software. After many years of maintenance, the quality of operation and maintainability has deteriorated dramatically due to many reasons, such as lack of up-to-date documents, lost of key personnel, shift of technology of inter-operating peripheral systems etc. The extraction of code artifact collaborations and their roles is therefore an important support in legacy software comprehension and design recovery. However, the original collaboration design information is dispersed at the implementation level. In this paper, we present a novel approach to efficiently recover and analyze code collaborations and roles based on dynamic program analysis technique. We also illustrate the tools that we have developed to support our approach and illustrate the viability of our approach in a case study.

[1]  Spencer Rugaber,et al.  Using visualization for architectural localization and extraction , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

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

[3]  Mark N. Wegman,et al.  Execution Patterns in Object-Oriented Visualization , 1998, COOTS.

[4]  Aniello Cimitile,et al.  Decomposing legacy programs: a first step towards migrating to client-server platforms , 2000, J. Syst. Softw..

[5]  Atul Prakash,et al.  A Framework for Source Code Search Using Program Patterns , 1994, IEEE Trans. Software Eng..

[6]  Arun Lakhotia,et al.  A Unified Framework For Expressing Software Subsystem Classification Techniques , 1997, J. Syst. Softw..

[7]  Arie van Deursen,et al.  Exploring legacy systems using types , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[8]  Gordon I. McCalla,et al.  Cliche recognition in legacy software: a scalable, knowledge-based approach , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[9]  Houari A. Sahraoui,et al.  A Concept Formation Based Approach to Object Identification in Procedural Code , 1999, Automated Software Engineering.

[10]  Timothy C. Lethbridge,et al.  Recovering software architecture from the names of source files , 1999 .

[11]  Bjørn N. Freeman-Benson,et al.  Visualizing dynamic software system information through high-level models , 1998, OOPSLA '98.

[12]  Stéphane Ducasse,et al.  Using dynamic information for the iterative recovery of collaborations and roles , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[13]  Hausi A. Müller,et al.  Shimba—an environment for reverse engineering Java software systems , 2001, Softw. Pract. Exp..

[14]  F. P. Goyla Legacy integration-changing perspectives [Cobol] , 2000 .

[15]  Leon Moonen,et al.  Types and concept analysis for legacy systems , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[16]  Keith H. Bennett,et al.  Legacy Systems: Coping with Success , 1995, IEEE Softw..