From system comprehension to program comprehension

Program and system comprehension are vital parts of the software maintenance process. We discuss the need for both perspectives and describe two methods that may be integrated to provide a smooth transition in understanding from the system level to the program level. Results from a qualitative survey of expert industrial software maintainers, their information needs and requirements when comprehending software are initially presented. We then review existing software tools which facilitate system level and program comprehension. Two successful methods from the fields of data mining and concept assignment are discussed, each addressing some of these requirements. We also describe how these methods can be coupled to produce a broader software comprehension method which partly satisfies all the requirements. Future directions including the closer integration of the techniques are also identified.

[1]  Christos Tjortjis,et al.  Using Data Mining to Assess Software Reliability , 2004 .

[2]  Janice Singer,et al.  Understanding program understanding , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[3]  Anil K. Jain,et al.  Algorithms for Clustering Data , 1988 .

[4]  Yongjun Zhang,et al.  New experiments with a constraint-based approach to program plan matching , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[5]  Nicolas Edwin Gold,et al.  Hypothesis-based concept assignment to support software maintenance , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

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

[7]  John Hartman,et al.  Understanding natural programs using proper decomposition , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[8]  Alex Quilici,et al.  Some experiments toward understanding how program plan recognition algorithms scale , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[9]  Qiang Yang,et al.  Program Understanding as Constraint Satisfaction: Representation and Reasoning Techniques , 1998, Automated Software Engineering.

[10]  Vassileios Karakostas,et al.  Intelligent search and acquisition of business knowledge from programs , 1992, J. Softw. Maintenance Res. Pract..

[11]  Keith H. Bennett,et al.  A flexible method for segmentation in concept assignment , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[12]  Qiang Yang,et al.  The program understanding problem: analysis and a heuristic approach , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[13]  Padhraic Smyth,et al.  From Data Mining to Knowledge Discovery: An Overview , 1996, Advances in Knowledge Discovery and Data Mining.

[14]  Linda Mary Wills,et al.  Automated program recognition by graph parsing , 1992 .

[15]  Linda M. Wills,et al.  Flexible control for program recognition , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[16]  Richard C. Waters,et al.  Approaches to Automatic Programming , 1993, Adv. Comput..

[17]  David N. Chin,et al.  DECODE: A Co-operative Program Understanding Environment , 1996, J. Softw. Maintenance Res. Pract..

[18]  Paul J. Layzell,et al.  Using Data Mining to Assess Sofwtare Reliability , 2001 .

[19]  Richard C. Waters,et al.  Knowledge Intensive Software Engineering Tools , 1992, IEEE Trans. Knowl. Data Eng..

[20]  Ted J. Biggerstaff,et al.  The concept assignment problem in program understanding , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[21]  Malcolm Munro,et al.  Evaluating the use of dominance trees for C and COBOL , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[22]  Richard C. Waters,et al.  The programmer's apprentice , 1990, ACM Press frontier series.

[23]  Linda M. Wills Automated Program Recognition: A Feasibility Demonstration , 1990, Artif. Intell..

[24]  Alex Quilici,et al.  Applying Plan Recognition Algorithms To Program Understanding , 2004, Automated Software Engineering.

[25]  Paul J. Layzell,et al.  Expert maintainers' strategies and needs when understanding software: a case study approach , 2001, Proceedings Eighth Asia-Pacific Software Engineering Conference.

[26]  Lee A. Gladwin,et al.  Intention-Based Diagnosis of Novice Programming Errors , 1987, IEEE Expert.

[27]  Richard C. Waters,et al.  The Programmer's Apprentice: a research overview , 1988, Computer.

[28]  Ted J. Biggerstaff,et al.  Design recovery for maintenance and reuse , 1989, Computer.

[29]  Premkumar T. Devanbu,et al.  LaSSIE—a knowledge-based software information system , 1991, ICSE '90.

[30]  Jim Q. Ning,et al.  Knowledge-based program analysis , 1990, IEEE Software.

[31]  Aniello Cimitile,et al.  Decomposing legacy systems into objects: an eclectic approach , 2001, Inf. Softw. Technol..

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

[33]  John Edwin Hartman,et al.  Automatic Control Understanding for Natural Programs , 1991 .

[34]  David N. Chin,et al.  A cooperative program understanding environment , 1994, Proceedings KBSE '94. Ninth Knowledge-Based Software Engineering Conference.

[35]  Richard C. Waters,et al.  The Programmer's Apprentice: Knowledge Based Program Editing , 1982, IEEE Transactions on Software Engineering.

[36]  Thomas M. Pigoski Practical Software Maintenance: Best Practices for Managing Your Software Investment , 1996 .

[37]  Richard C. Waters,et al.  A Method for Analyzing Loop Programs , 1979, IEEE Transactions on Software Engineering.

[38]  Ted J. Biggerstaff,et al.  Program understanding and the concept assignment problem , 1994, CACM.

[39]  Alexander E. Quilici,et al.  Constraint-based design recovery for software reengineering: theory and experiments , 1997 .

[40]  Elliot Soloway,et al.  PROUST: Knowledge-Based Program Understanding , 1984, IEEE Transactions on Software Engineering.

[41]  Alex Quilici,et al.  Toward a constraint-satisfaction framework for evaluating program-understanding algorithms , 1996, WPC '96. 4th Workshop on Program Comprehension.

[42]  Wojtek Kozaczynski,et al.  Automated program understanding by concept recognition , 2004, Automated Software Engineering.