Maintaining Program Understanding -- Issues, Tools, and Future Directions

The understanding of a program is a key aspect of software development. The understanding is a prerequisite for the initial development efforts. This paper is concerned with the challenge of maintaining the program understanding with the purpose of supporting later phases in the program life time.One approach to maintaining program understanding is to document decisions and rationales behind a program as informal textual explanations--internal documentation. The starting point of this paper is a particular paradigm for program documentation called Elucidative Programming. As the first contribution of this paper, three key documentation issues are identified on the basis of the experience with Elucidative Programming. Documentation motifs represent thematic elements of software, which typically transverse the structure of the source program files. Documentation proximity characterizes the distance between the documentation and the program. Documentation occasions are points in time for capturing and formulating the understanding of the program.During the years a large number of documentation tools have been developed. As the second contribution of the paper, a number of contemporary documentation tools are reviewed. The tools are selected on basis of relevance for the key documentation issues, and relative to the common attention and interest of the particular tool in the documentation communities.As a conclusion of the paper, and as a final contribution, a number of future directions and challenges are outlined.

[1]  Thomas Vestdam Elucidative Program Tutorials , 2002, Nord. J. Comput..

[2]  Bertrand Meyer,et al.  Lessons from the design of the Eiffel libraries , 1990, CACM.

[3]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[4]  Douglas Kramer,et al.  API documentation from source code comments: a case study of Javadoc , 1999, SIGDOC '99.

[5]  Václav Rajlich,et al.  Incremental Redocumentation Using the Web , 2000, IEEE Software.

[6]  Mira Kajko-Mattsson,et al.  The state of documentation practice within corrective maintenance , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[7]  Andy Cockburn,et al.  Towards literate tools for novice programmers , 1997, ACSE '97.

[8]  Donald E. Knuth,et al.  The CWEB system of structured documentation - version 3.0 , 1994 .

[9]  Thomas Vestdam Documentation Threads - Presentation of Fragmented Documentation , 2000, Nord. J. Comput..

[10]  Jr. Frederick P. Brooks,et al.  The Mythical Man-Month: Essays on Softw , 1978 .

[11]  Guy L. Steele,et al.  Java Language Specification, Second Edition: The Java Series , 2000 .

[12]  Erik Berglund,et al.  Library Communication Among Programmers Worldwide , 2002 .

[13]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[14]  Neville Churcher,et al.  Theme-based literate programming , 2002, Ninth Asia-Pacific Software Engineering Conference, 2002..

[15]  Kurt Nørmark,et al.  Requirements for an elucidative programming environment , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[16]  Norman Wilde,et al.  The role of concepts in program comprehension , 2002, Proceedings 10th International Workshop on Program Comprehension.

[17]  Kurt Nørmark An Elucidative Programming Environment for Scheme , 2000 .

[18]  Andrian Marcus,et al.  Source code files as structured documents , 2002, Proceedings 10th International Workshop on Program Comprehension.

[19]  Kasper Østerbye,et al.  Structural and cognitive problems in providing version control for hypertext , 1992, ECHT '92.

[20]  Bertrand Meyer,et al.  Object-Oriented Software Construction, 2nd Edition , 1997 .

[21]  Thomas Vestdam,et al.  Elucidative Programming in open integrated development environments for Java , 2003, PPPJ.

[22]  Kurt Nørmark,et al.  Elucidative Programming , 2000, Nord. J. Comput..

[23]  R. Kent Dybvig,et al.  Revised5 Report on the Algorithmic Language Scheme , 1986, SIGP.

[24]  P. Kidwell,et al.  The mythical man-month: Essays on software engineering , 1996, IEEE Annals of the History of Computing.

[25]  J. Hamer,et al.  Literate programming: a software engineering perspective , 1994, Proceedings Software Education Conference (SRIG-ET'94).

[26]  Lisa Friendly,et al.  The Design of Distributed Hyperlinked Programming Documentation , 1995, IWHD.

[27]  Johannes Sametinger,et al.  A hypertext system for literate C++ programming , 1992 .

[28]  Timothy Lethbridge,et al.  The relevance of software documentation, tools and technologies: a survey , 2002, DocEng '02.

[29]  Johannes Sametinger,et al.  Evolution support by homogeneously documenting patterns, aspects and traces , 2002, Proceedings of the Sixth European Conference on Software Maintenance and Reengineering.

[30]  Janice Singer,et al.  How software engineers use documentation: the state of the practice , 2003, IEEE Software.

[31]  Hausi A. Müller,et al.  INFO: a simple document annotation facility , 1991, SIGDOC '91.

[32]  Thomas Vestdam Writing Internal Documentation , 2001, EuroPLoP.

[33]  Donald E. Knuth,et al.  Literate Programming , 1984, Comput. J..

[34]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[35]  David Lorge Parnas,et al.  A Rational Design Process: How and Why to Fake It , 1985, TAPSOFT, Vol.2.

[36]  K. Normark,et al.  Elucidative Programming in Java , 2000, 18th Annual Conference on Computer Documentation. ipcc sigdoc 2000. Technology and Teamwork. Proceedings. IEEE Professional Communication Society International Professional Communication Conference an.

[37]  Kurt Nørmark,et al.  Aspects of internal program documentation-an elucidative perspective , 2002, Proceedings 10th International Workshop on Program Comprehension.

[38]  Ilka Philippow,et al.  Evolution of Product Lines Using Traceability , 2001 .

[39]  Klaus Quibeldey-Cirkel,et al.  Using Patterns for Design and Documentation , 1997, ECOOP.

[40]  Kurt Nørmark,et al.  Scheme Program Documentation Tools , 2004 .