Documenting software systems using types

Abstract We show how hypertext-based program understanding tools can achieve new levels of abstraction by using inferred type information for cases where the subject software system is written in a weakly typed language. We propose TypeExplorer , a tool for browsing Cobol legacy systems based on these types. The paper addresses (1) how types, an invented abstraction, can be presented meaningfully to software re-engineers; (2) the implementation techniques used to construct TypeExplorer ; and (3) the use of TypeExplorer for understanding legacy systems, at the level of individual statements as well as at the level of the software architecture — which is illustrated by using TypeExplorer to browse an industrial Cobol system of 100,000 lines of code.

[1]  Erich J. Neuhold,et al.  Formal description of programming concepts , 1991 .

[2]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[3]  Frank Tip,et al.  Aggregate structure identification and its application to program analysis , 1999, POPL '99.

[4]  Jean-Francois Girard,et al.  Multi-Valued Constant Propagation Analysis for User Interface Reengineering , 1995, Int. J. Softw. Eng. Knowl. Eng..

[5]  Patrick Brown Integrated Hypertext and Program Understanding Tools , 1991, IBM Syst. J..

[6]  Charles L. A. Clarke,et al.  Browsing and searching software architectures , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[7]  Arun Lakhotia,et al.  Identifying enumeration types modeled with symbolic constants , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

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

[9]  Robert O'Callahan,et al.  Lackwit: A Program Understanding Tool Based on Type Inference , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[10]  Wenyu Jiang,et al.  An Architecture for WWW-based Hypercode Environments , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[11]  Chris Verhoef,et al.  Generation of components for software renovation factories from context-free grammars , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[12]  Hausi A. Müller,et al.  Structural Redocumentation: A Case Study , 1995, IEEE Softw..

[13]  Leon Moonen,et al.  Exploring software systems , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[14]  Susan Elliott Sim,et al.  The ramp-up problem in software projects: a case study of how software immigrants naturalize , 1998, Proceedings of the 20th International Conference on Software Engineering.

[15]  Hausi A. Müller,et al.  CHIME: customizable hyperlink insertion and maintenance engine for software engineering environments , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[16]  Emden R. Gansner,et al.  A Technique for Drawing Directed Graphs , 1993, IEEE Trans. Software Eng..

[17]  Luca Cardelli,et al.  Typeful Programming , 1989, Formal Description of Programming Concepts.

[18]  Mangala Gowri Nanda,et al.  An Application of Compiler Technology to the Year 2000 Problem , 1999, Softw. Pract. Exp..

[19]  Rick Kazman,et al.  Playing Detective: Reconstructing Software Architecture from Available Evidence , 1999, Automated Software Engineering.

[20]  Arndt von Staa,et al.  Documentu : a flexible architecture for documentation production based on a reverse-engineering strategy , 1998 .

[21]  Arie van Deursen,et al.  Type inference for COBOL systems , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[22]  Arie van Deursen,et al.  An empirical study into COBOL type inferencing , 2001, Sci. Comput. Program..

[23]  Fritz Henglein,et al.  AnnoDomini: from type theory to Year 2000 conversion tool , 1999, POPL '99.

[24]  Thomas W. Reps,et al.  Program generalization for software reuse: from C to C++ , 1996, SIGSOFT '96.

[25]  Leon Moonen Lightweight impact analysis using island grammars , 2002, Proceedings 10th International Workshop on Program Comprehension.

[26]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[27]  Hausi A. Müller,et al.  The Software Bookshelf , 1997, IBM Syst. J..

[28]  Jens Palsberg,et al.  Type-based analysis and applications , 2001, PASTE '01.

[29]  Arie van Deursen,et al.  Building documentation generators , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[30]  A. L. Gilbert,et al.  Documentation in a software maintenance environment , 1988, Proceedings. Conference on Software Maintenance, 1988..

[31]  Mark Harman,et al.  Search Based Approaches to Component Selection and Prioritization for the Next Release Problem , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[32]  Akihiko Matsuo,et al.  Variable Classification Technique and Application to the Year 2000 Problem , 1998 .

[33]  Václav Rajlich,et al.  Using the Web for Software Annotations , 1999, Int. J. Softw. Eng. Knowl. Eng..

[34]  David Garlan,et al.  Documenting software architectures: views and beyond , 2002, 25th International Conference on Software Engineering, 2003. Proceedings..

[35]  Richard C. Holt Structural manipulations of software architecture using Tarski relational algebra , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[36]  Gordon Kotik,et al.  Reengineering procedural into object-oriented systems , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[37]  Leon Moonen,et al.  Generating robust parsers using island grammars , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[38]  Anneliese Amschler Andrews,et al.  Program Comprehension During Software Maintenance and Evolution , 1995, Computer.

[39]  Satish Chandra,et al.  Physical type checking for C , 1999, PASTE '99.

[40]  Antonio Pizzarello,et al.  A scaleable, automated process for year 2000 system correction , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[41]  Akihiko Matsuo,et al.  Variable classification technique for software maintenance and application to the year 2000 problem , 1998, Proceedings of the Second Euromicro Conference on Software Maintenance and Reengineering.

[42]  Wei-Tek Tsai,et al.  Automatic variable classification for COBOL programs , 1994, Proceedings Eighteenth Annual International Computer Software and Applications Conference (COMPSAC 94).

[43]  Václav Rajlich,et al.  Incremental redocumentation with hypertext , 1997, Proceedings. First Euromicro Conference on Software Maintenance and Reengineering.

[44]  Nicky Williams Preston New type signatures for legacy Fortran subroutines , 1999, PASTE '99.

[45]  Mark N. Wegman,et al.  Constant propagation with conditional branches , 1985, POPL.