Understanding-in-the-large

Developing and maintaining large industrial software products implies programming-in-the-large activities. Related concepts are usually represented in terms of low level features such as file system hierarchies, preprocessor files, makefiles, shell scripts, sccs archives, etc. Understanding the information embedded in such artifacts is an important but difficult task, especially with neither conceptual framework, nor tool assistance. To emphasize the importance of this issue, this paper makes the distinction between understanding-in-the-large and understanding-in-the-small. Using a conceptual classification, understanding-in-the-large problems are described in a structured way. Difficulties in building reverse-engineering-in-the-large tools are then analyzed and illustrated taking preprocessor files as a case study. The Champollion approach to these problems is briefly presented.

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

[2]  Henry Spencer,et al.  #ifdef Considered Harmful, or Portability Experience with C News , 1992, USENIX Summer.

[3]  Bjørn P. Munch HiCoV: Managing the Version Space , 1996, SCM.

[4]  Gregor Snelting,et al.  On the inference of configuration structures from source code , 1994, Proceedings of 16th International Conference on Software Engineering.

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

[6]  Stephen G. Eick,et al.  Visualizing software systems , 1994, Proceedings of 16th International Conference on Software Engineering.

[7]  Jacqueline Floch,et al.  Enabling reuse with a configuration language , 1996, Proceedings of Fourth IEEE International Conference on Software Reuse.

[8]  Jean-Marie Favre A rigorous approach to support the maintenance of large portable software , 1997, Proceedings. First Euromicro Conference on Software Maintenance and Reengineering.

[9]  Jean-Marie Favre,et al.  Une approche pour la maintenance et la ré-ingénierie globale des logiciels , 1995 .

[10]  Richard C. Holt,et al.  GASE: visualizing software evolution-in-the-large , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[11]  Judith E. Grass Cdiff: A Syntax Directed Differencer for C++ Programs , 1992, C++ Conference.

[12]  Jean-Marie Favre,et al.  Preprocessors from an abstract point of view , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[13]  Stephen G. Eick,et al.  Seesoft-A Tool For Visualizing Line Oriented Software Statistics , 1992, IEEE Trans. Software Eng..

[14]  Bjørn P. Munch,et al.  Versioning in a Software Engineering Database — the Change Oriented Way , 1993 .