Support for Understanding in Software Maintenance

Software systems are increasingly becoming more and more complex. The functions they are supposed to support are increasing both in number and in complexity. Because of this, the size of software systems of today is constantly increasing. Traditional software maintenance processes have often resulted in a degradation of the structure, documentation, and source code of the maintained software system. Additional problems of maintainer turnover and recruitment of experienced maintainers have made long term maintenance a problem for maintenance organizations. The software system is becoming difficult to understand, particularly for new maintainers, and hence maintenance costs are increasing. The increased size and complexity of software systems signifies large cost of system redevelopment due to uncontrolled maintenance costs. Thus, organizations which produce software systems must focus on how to efficiently evolve their current systems to be able to stay competitive. In this thesis, we analyse the costs and problems of software maintenance, and discuss why software systems evolve. We present a framework for how the evolution of software can be controlled, and how system knowledge can be efficiently reused during the maintenance process. The focus of the framework is to provide the user with easy access to system information from heterogeneous information sources, so that the time spent on trying to understand the system is reduced. Literature reports that as much as 50% of the time spent on maintenance can be related to trying to understand the system. The provision of efficient mechanisms to reduce this time will benefit in reduced maintenance costs. The proposed framework consists of two major parts: (i) A language capable of specifying the logical architectural structure of the system as well as how this logical system structure is related to physical files on the disk. (ii) The specification of a set of relations among heterogeneous system components, and how the interesting relationships can be extracted dynamically from the different system components by using an advanced querying mechanism. These two parts are used in conjunction to be able to efficiently provide recorded system knowledge to the maintainer in a manner which make our proposed framework scalable to handle very large systems without significant reduction in response time. The maintenance tasks of an organization are often related to maintaining a family similar software systems rather than one individual system. This system family may for example represent a core system customized for different customers. The language which specifies the logical structure is capable of describing the evolution of the software family and a mechanism for selecting a particular system configuration for maintenance. This facilitates a top-down exploration of the system which supports the maintainer in understanding the overall system structure. The querying mechanism allows the user to extract related information from heterogeneous system components. These include the requirements, design, user manual, and test documents, and source code to be able to gain functional knowledge of particular parts of the system which must be thoroughly understood, e.g. to be able to comply with the requirements of a modification request. These relationships are extracted dynamically by requests from the maintainer. Relationships among source code components are however extracted once per file version and recorded in a database. Parts of the framework have been demonstrated by prototypes. The overall utility of the proposed framework cannot be validated by demonstration. This would require a fully integrated system used in a real setting, which is beyond the scope of this doctoral work. The utility of documentation for providing more knowledge to the maintainer has however been demonstrated experimentally with significant results in an experiment performed as part of my work.

[1]  Frederick P. Brooks,et al.  No Silver Bullet: Essence and Accidents of Software Engineering , 1987 .

[2]  Paul Lukowicz,et al.  Experimental evaluation in computer science: A quantitative study , 1995, J. Syst. Softw..

[3]  John McLean,et al.  A Formal Method for the Abstract Specification of Software , 1984, JACM.

[4]  J. S. Hunter,et al.  Statistics for Experimenters: An Introduction to Design, Data Analysis, and Model Building. , 1979 .

[5]  Gary Pei,et al.  Reusability in software maintenance: A Japan - USA comparison , 1994, J. Softw. Maintenance Res. Pract..

[6]  Nancy G. Leveson,et al.  Requirements Specification for Process-Control Systems , 1994, IEEE Trans. Software Eng..

[7]  Peter Middleton,et al.  Maintenance management: From product to process , 1995, J. Softw. Maintenance Res. Pract..

[8]  Jacky Estublier,et al.  The Adele configuration manager , 1995 .

[9]  Scott R. Tilley,et al.  Reverse engineering questionnaire , 1994, SOEN.

[10]  Nicholas Carriero,et al.  Coordination languages and their significance , 1992, CACM.

[11]  Alan M. Davis,et al.  Impacts of life cycle models on software configuration management , 1991, CACM.

[12]  Keith H. Bennett,et al.  A transformation system for maintenance-turning theory into practice , 1992, Proceedings Conference on Software Maintenance 1992.

[13]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[14]  Wei Li,et al.  An empirical study of maintenance activities in two object-oriented systems , 1995, J. Softw. Maintenance Res. Pract..

[15]  Hiroyuki Sato,et al.  Practice of quality modeling and measurement on software life-cycle , 1990, [1990] Proceedings. 12th International Conference on Software Engineering.

[16]  Dirk Ourston Program recognition , 1989, IEEE Expert.

[17]  Keith H. Bennett,et al.  Developing a model to manage the software maintenance process , 1992, Proceedings Conference on Software Maintenance 1992.

[18]  E. L. Lehmann,et al.  Theory of point estimation , 1950 .

[19]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[20]  Cornelia Boldyreff,et al.  The AMES approach to application understanding: a case study , 1995, Proceedings of International Conference on Software Maintenance.

[21]  P. E. Livadas,et al.  A toolset for program understanding , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[22]  J. Laski,et al.  Identification of program modifications and its applications in software maintenance , 1992, Proceedings Conference on Software Maintenance 1992.

[23]  Reidar Conradi,et al.  Design, Use and Implementation of SPELL, a language for Software Process Modelling and Evolution , 1992, EWSPT.

[24]  Robert J. Kauffman,et al.  Automating Output Size and Reuse Metrics in a Repository-Based Computer Aided Software Engineering (Case) Environment , 1992, IEEE Trans. Software Eng..

[25]  Anneliese Amschler Andrews,et al.  Comprehension processes during large scale maintenance , 1994, Proceedings of 16th International Conference on Software Engineering.

[26]  Robert B. Grady,et al.  Software Metrics: Establishing a Company-Wide Program , 1987 .

[27]  Richard A. Watts Measuring software quality , 1987 .

[28]  Stephen S. Yau,et al.  Knowledge Representation of Software Component Interconnection Information for Large-Scale Software Modifications , 1987, IEEE Transactions on Software Engineering.

[29]  Joseph M. Mellichamp,et al.  Software Development Cost Estimation Using Function Points , 1994, IEEE Trans. Software Eng..

[30]  Prashant Palvia,et al.  Software maintenance management: Changes in the last decade , 1990, J. Softw. Maintenance Res. Pract..

[31]  Victor R. Basili,et al.  Cleanroom Software Development: An Empirical Evaluation , 1987, IEEE Transactions on Software Engineering.

[32]  Robert L. Glass,et al.  Software Maintenance Guidebook , 1981 .

[33]  John W. Daly,et al.  Electronic bulletin board distributed questionnaires for exploratory research , 1996, J. Inf. Sci..

[34]  Hausi A. Müller,et al.  Domain-retargetable reverse engineering , 1993, 1993 Conference on Software Maintenance.

[35]  Reidar Conradi,et al.  Towards a Rigorous Approach for Managing Process Evolution , 1996, EWSPT.

[36]  Hausi A. Müller,et al.  Personalized information structures , 1993, SIGDOC '93.

[37]  Theodore Johnson,et al.  A new approach to finding objects in programs , 1994, J. Softw. Maintenance Res. Pract..

[38]  E. Merlo,et al.  A process algebra based program and system representation for reverse engineering , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[39]  Richard E. Nance,et al.  Abstraction refinement: A model of software evolution , 1993, J. Softw. Maintenance Res. Pract..

[40]  E. Burton Swanson,et al.  Characteristics of application software maintenance , 1978, CACM.

[41]  David Lorge Parnas,et al.  Simulating the behaviour of software modules by trace rewriting , 1993, ICSE '93.

[42]  P. Benedusi,et al.  Maintenance and prototyping at the entity-relationship level: a knowledge-based support , 1990, Proceedings. Conference on Software Maintenance 1990.

[43]  John C. Knight,et al.  An improved inspection technique , 1993, CACM.

[44]  Reidar Conradi,et al.  Integrated Product and Process Management in EPOS , 1996 .

[45]  Stanley G. Siegel,et al.  Making Software Visible, Operational, and Maintainable in a Small Project Environment , 1984, IEEE Transactions on Software Engineering.

[46]  Keith H. Bennett European special interest group in software maintenance , 1991, J. Softw. Maintenance Res. Pract..

[47]  V. Cote,et al.  A model for estimating perfective software maintenance projects , 1990, Proceedings. Conference on Software Maintenance 1990.

[48]  Alain Abran,et al.  Reliability of function points productivity model for enhancement projects (A field study) , 1993, 1993 Conference on Software Maintenance.

[49]  Norman Wilde,et al.  Maintaining object-oriented software , 1993, IEEE Software.

[50]  James M. Bieman,et al.  Effects of software changes on module cohesion , 1992, Proceedings Conference on Software Maintenance 1992.

[51]  Mary Beth Rosson,et al.  A view matcher for reusing Smalltalk classes , 1991, CHI.

[52]  George E. Stark,et al.  A software metric set for program maintenance management , 1994, J. Syst. Softw..

[53]  David Eichmann,et al.  Program and interface slicing for reverse engineering , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[54]  J. Guilford Fundamental statistics in psychology and education , 1943 .

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

[56]  Taghi M. Khoshgoftaar,et al.  A comparative study of predictive models for program changes during system testing and maintenance , 1993, 1993 Conference on Software Maintenance.

[57]  John Connell,et al.  System information database: an automated maintenance aid , 1984, AFIPS '84.

[58]  Peter T. Breuer,et al.  The REDO Project: Final Report , 1991 .

[59]  Harlan D. Mills,et al.  Cleanroom Software Engineering , 1987, IEEE Software.

[60]  Meir M. Lehman,et al.  Software engineering, the software process and their support , 1991, Softw. Eng. J..

[61]  Scott R. Tilley Domain-retargetable reverse engineering. II. Personalized user interfaces , 1994, Proceedings 1994 International Conference on Software Maintenance.

[62]  Victor R. Basili,et al.  The Future Engineering of Software: A Management Perspective , 1991, Computer.

[63]  Iris Vessey,et al.  Requirements specification: learning object, process, and data methodologies , 1994, CACM.

[64]  Hausi A. Müller,et al.  Towards an integrated toolset for program understanding , 1994, CASCON.

[65]  Keith Marzullo,et al.  Jasmine: a software system modelling facility , 1987, SDE 2.

[66]  Sandrine Blazy,et al.  Partial evaluation as an aid to the comprehension of Fortran programs , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[67]  D.-R. Harjani,et al.  A process model for the maintenance of large space systems software , 1992, Proceedings Conference on Software Maintenance 1992.

[68]  Lori A. Clarke,et al.  A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance , 1990, IEEE Trans. Software Eng..

[69]  H. M. SNEED,et al.  Economics of software re-engineering , 1991, J. Softw. Maintenance Res. Pract..

[70]  Giuseppe Visaggio,et al.  Decision-driven Maintenance , 1995, J. Softw. Maintenance Res. Pract..

[71]  H. Dieter Rombach,et al.  A Controlled Expeniment on the Impact of Software Structure on Maintainability , 1987, IEEE Transactions on Software Engineering.

[72]  Shawn A. Bohner,et al.  A framework for software maintenance metrics , 1990, Proceedings. Conference on Software Maintenance 1990.

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

[74]  Victor R. Basili,et al.  Software errors and complexity: an empirical investigation0 , 1984, CACM.

[75]  Gail E. Kaiser,et al.  Smarter recompilation , 1988, TOPL.

[76]  Walt Scacchi,et al.  Understanding Software Maintenance Work , 1987, IEEE Transactions on Software Engineering.

[77]  Peter T. Breuer,et al.  A software maintenance management model based on queueing networks , 1994, J. Softw. Maintenance Res. Pract..

[78]  Spencer Rugaber,et al.  Recognizing design decisions in programs , 1990, IEEE Software.

[79]  Bev Littlewood,et al.  Validation of ultrahigh dependability for software-based systems , 1993, CACM.

[80]  John Mylopoulos,et al.  Understanding "why" in software process modelling, analysis, and design , 1994, Proceedings of 16th International Conference on Software Engineering.

[81]  Peter H. Feiler,et al.  Configuration Management Models in Commercial Environments , 1994 .

[82]  David P. Hale,et al.  Characteristics of empirical software maintenance studies: 1980-1989 , 1991, J. Softw. Maintenance Res. Pract..

[83]  J. G. Brodman,et al.  What small businesses and small organizations say about the CMM , 1994, Proceedings of 16th International Conference on Software Engineering.

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

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

[86]  Reidar Conradi,et al.  Change oriented versioning in a software engineering database , 1989, SCM.

[87]  D. Mancl,et al.  A study of the impact of C++ on software maintenance , 1990, Proceedings. Conference on Software Maintenance 1990.

[88]  Walter F. Tichy Programming-in-the-large: past, present, and future , 1992, International Conference on Software Engineering.

[89]  Lowell Jay Arthur Software evolution: the software maintenance challenge , 1988 .

[90]  David Garlan First international workshop on architectures for software systems workshop summary , 1995, SOEN.

[91]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975 .

[92]  Frank A. Cioch,et al.  A documentation suite for maintenance programmers , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[93]  John A. A. Sillince,et al.  A design for information systems which can adapt to changing organizational requirements , 1994, J. Softw. Maintenance Res. Pract..

[94]  Keith H. Bennett Understanding the process of software maintenance , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[95]  Tor Stålhane,et al.  The quest for reliability: A case study , 1994, J. Syst. Softw..

[96]  M. Ino Current state of software maintenance in Japan: in depth view , 1992, Proceedings Conference on Software Maintenance 1992.

[97]  H.M. Edwards,et al.  Abstracting the logical processing life cycle for entities using the RECAST method , 1993, 1993 Conference on Software Maintenance.

[98]  Nazim H. Madhavji Environment Evolution: The Prism Model of Changes , 1992, IEEE Trans. Software Eng..

[99]  Victor R. Basili,et al.  A classification procedure for the effective management of changes during the maintenance process , 1992, Proceedings Conference on Software Maintenance 1992.

[100]  Premkumar T. Devanbu,et al.  Automated construction of testing and analysis tools , 1994, Proceedings of 16th International Conference on Software Engineering.

[101]  David Whitgift Methods and Tools for Software Configuration Management , 1991 .

[102]  David A. Kinloch,et al.  A combined representation for the maintenance of C programs , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[103]  Peter T. Breuer,et al.  Formal specifications in software maintenance: from code to Z++ and back again , 1993, Inf. Softw. Technol..

[104]  Kishore Sengupta,et al.  Software Project Control: An Experimental Investigation of Judgment with Fallible Information , 1993, IEEE Trans. Software Eng..

[105]  David Lorge Parnas On ICSE's “most influential” papers , 1995, SOEN.

[106]  Victor R. Basili,et al.  A Methodology for Collecting Valid Software Engineering Data , 1984, IEEE Transactions on Software Engineering.

[107]  Anneliese Amschler Andrews,et al.  From program comprehension to tool requirements for an industrial environment , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[108]  Robert B. Grady,et al.  Practical results from measuring software quality , 1993, CACM.

[109]  Hausi A. Müller,et al.  Understanding Software Systems Using Reverse Engineering Technology , 1994, COODBSE.

[110]  O. Signore,et al.  Charon: a tool for code redocumentation and re-engineering , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[111]  Yosef S. Sherif,et al.  Computer software quality measurements and metrics , 1985 .

[112]  Susan A. Sherer Cost benefit analysis and the art of software maintenance , 1992, Proceedings Conference on Software Maintenance 1992.

[113]  John M. Roche,et al.  Software metrics and measurement principles , 1994, SOEN.

[114]  Malcolm Munro,et al.  An early impact analysis technique for software maintenance , 1994, J. Softw. Maintenance Res. Pract..

[115]  P. Oman,et al.  Metrics for assessing a software system's maintainability , 1992, Proceedings Conference on Software Maintenance 1992.

[116]  Stuart H. Zweben,et al.  The cloze procedure and software comprehensibility measurement , 1986, IEEE Transactions on Software Engineering.

[117]  Nazim H. Madhavji,et al.  A Framework for Process Maintenance , 1992 .

[118]  Motoei Azuma,et al.  An Empirical Study of Evaluating Software Development Environment Quality , 1993, IEEE Trans. Software Eng..

[119]  Chris F. Kemerer,et al.  Reliability of function points measurement: a field experiment , 2015, CACM.

[120]  Victor R. Basili,et al.  Software process evolution at the SEL , 1994, IEEE Software.

[121]  Ian Sommerville,et al.  Supporting Design Rationale for System Evolution , 1995, ESEC.

[122]  Keith D. Gillis,et al.  Improving software maintenance using system-level reverse engineering , 1990, Proceedings. Conference on Software Maintenance 1990.

[123]  Miriam Akemi Manabe Capretz,et al.  COMFORM-a software maintenance method based on the software configuration management discipline , 1992, Proceedings Conference on Software Maintenance 1992.

[124]  Keith W. Miller,et al.  How good is good enough?: an ethical analysis of software construction and use , 1994, CACM.

[125]  Alfonso Fuggetta,et al.  An annotated bibliography on software process improvement , 1994, SOEN.

[126]  Elliot Soloway,et al.  Mental models and software maintenance , 1986, J. Syst. Softw..

[127]  Shari Lawrence Pfleeger,et al.  Lessons learned in building a corporate metrics program , 1993, IEEE Software.

[128]  Richard H. Thayer,et al.  Software Engineering: A European Perspective , 1993 .

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

[130]  Jai Navlakha Software productivity metrics: some candidates and their evaluation , 1986 .

[131]  Victor R. Basili,et al.  Experimentation in software engineering , 1986, IEEE Transactions on Software Engineering.

[132]  Premkumar T. Devanbu,et al.  LaSSIE: a knowledge-based software information system , 1990, [1990] Proceedings. 12th International Conference on Software Engineering.

[133]  Susan A. Dart,et al.  The Past, Present, and Future of Configuration Management , 1992, IFIP Congress.

[134]  Alan M. Davis,et al.  A Strategy for Comparing Alternative Software Development Life Cycle Models , 1988, IEEE Trans. Software Eng..

[135]  Eric R. Ziegel,et al.  Applied Statistics for Engineers and Physical Scientists , 1992 .

[136]  Reidar Conradi,et al.  SPELL: A Logic Programming Language for Process Modelling , 1994, ICLP Workshop: Applications of Logic Programming to Software Engineering.

[137]  Rajiv D. Banker,et al.  Software complexity and maintenance costs , 1993, CACM.

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

[139]  James D. Arthur,et al.  Establishing software development process control: Technical objectives, operational requirements, and the foundational framework , 1993, J. Syst. Softw..

[140]  M. K. Ruhl,et al.  Software Reengineering: A Case Study and Lessons Learned , 1991 .

[141]  Aniello Cimitile,et al.  Maintenance and intermodular dependencies in Pascal environment , 1990, Proceedings. Conference on Software Maintenance 1990.

[142]  Karl J. Lieberherr,et al.  Object-Oriented Software Evolution , 1993, IEEE Trans. Software Eng..

[143]  John C. Shaw,et al.  Managing the EDP function , 1971 .

[144]  Frederick M. Haney Module connection analysis: a tool for scheduling software debugging activities , 1972, AFIPS '72 (Fall, part I).

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

[147]  T. Vollman,et al.  Transitioning from development to maintenance , 1990, Proceedings. Conference on Software Maintenance 1990.

[148]  L. F. Pau,et al.  SOFTM: A software maintenance expert system in Prolog , 1990, J. Softw. Maintenance Res. Pract..

[149]  Alan W. Brown,et al.  An examination of software maintenance practices in a U.S. government organization , 1995, J. Softw. Maintenance Res. Pract..

[150]  Norman Wilde,et al.  Do design records really benefit software maintenance , 1993, 1993 Conference on Software Maintenance.

[151]  Luiz Fernando Capretz,et al.  SOFTWARE MAINTENANCE MODELS , 1996 .

[152]  Giuseppe Visaggio,et al.  Extracting application domain functions from old code: a real experience , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[153]  Harry M. Sneed Software Renewal: A case Study , 1984, IEEE Software.

[154]  Hausi A. Müller,et al.  Understanding software systems using reverse engineering technology perspectives from the Rigi project , 1993, CASCON.

[155]  Giuseppe Visaggio,et al.  Traceability based on design decisions , 1992, Proceedings Conference on Software Maintenance 1992.

[156]  Bashar Nuseibeh,et al.  Expressing the relationships between multiple views in requirements specification , 1993, ICSE '93.

[157]  Joseph P. Loyall,et al.  Using dependence analysis to support the software maintenance process , 1993, 1993 Conference on Software Maintenance.

[158]  G. Jantzen 1988 , 1988, The Winning Cars of the Indianapolis 500.

[159]  E. J. Younger,et al.  Reverse engineering concurrent programs using formal modelling and analysis , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[160]  Norman Wilde,et al.  Early field experience with the Software Reconnaissance technique for program comprehension , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[161]  Gail E. Kaiser,et al.  WORKSPACES AND EXPERIMENTAL DATABASES: AUTOMATED SUPPORT FOR SOFTWARE MAINTENANCE AND EVOLUTION. , 1987 .

[162]  Norman Wilde,et al.  Software reconnaissance: Mapping program features to code , 1995, J. Softw. Maintenance Res. Pract..

[163]  Premkumar Devanbu,et al.  The use of description logics in KBSE systems , 1994, Proceedings of 16th International Conference on Software Engineering.

[164]  Sandro Morasca,et al.  Measuring and assessing maintainability at the end of high level design , 1993, 1993 Conference on Software Maintenance.

[165]  Walt Scacchi,et al.  Maintaining Configurations of Evolving Software Systems , 1987, IEEE Transactions on Software Engineering.

[166]  Hausi A. Müller,et al.  A reverse-engineering approach to subsystem structure identification , 1993, J. Softw. Maintenance Res. Pract..

[167]  Wojtek Kozaczynski,et al.  A Knowledge-based Approach To Software System Understanding , 1991, Proceedings., 6th Annual Knowledge-Based Software Engineering Conference.

[168]  Reidar Conradi,et al.  The REBOOT approach to software reuse , 1995, J. Syst. Softw..

[169]  Genny Tortora,et al.  An integrated and interactive reverse engineering environment for existing software comprehension , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[170]  J. S. Collofello,et al.  A task-based approach to improving the software maintenance process , 1992, Proceedings Conference on Software Maintenance 1992.

[171]  Keith H. Bennett,et al.  Formal Methods to Aid the Evolution of Software , 1995, Int. J. Softw. Eng. Knowl. Eng..

[172]  Aniello Cimitile,et al.  RE2: Reverse-engineering and reuse re-engineering , 1994, J. Softw. Maintenance Res. Pract..

[173]  Wei-Tek Tsai,et al.  A model for assembly program maintenance , 1990, J. Softw. Maintenance Res. Pract..

[174]  F. MacDonald,et al.  A review of tool support for software inspection , 1995, Proceedings Seventh International Workshop on Computer-Aided Software Engineering.

[175]  James S. Collofello,et al.  Software Quality Assurance for Maintenance , 1987, IEEE Software.

[176]  E. J. Younger,et al.  Model-based tools to record program understanding , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[177]  Robert B. Grady Measuring and Managing Software Maintenance , 1987, IEEE Software.

[178]  Harlan D. Mills,et al.  Stepwise refinement and verification in box-structured systems , 1988, Computer.

[179]  Peter T. Breuer,et al.  A compendium of formal techniques for software maintenance , 1993, Softw. Eng. J..

[180]  David A. Gustafson,et al.  Software measure specification , 1993, SIGSOFT '93.

[181]  H.A. Muller,et al.  Using virtual subsystems in project management , 1993, Proceedings of 6th International Workshop on Computer-Aided Software Engineering.

[182]  Reidar Conradi,et al.  EPOS: object-oriented cooperative process modelling , 1994 .

[183]  Michael Ballantyne,et al.  Recovering user interface specifications for porting transaction processing applications , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[184]  Hausi A. Müller,et al.  A reverse engineering environment based on spatial and visual software interconnection models , 1992 .

[185]  Jacky Estublier,et al.  Experience with a data base of programs , 1987, SDE 2.

[186]  Reidar Conradi,et al.  Version models for software configuration management , 1998, CSUR.

[187]  Barry W. Boehm,et al.  Prototyping Versus Specifying: A Multiproject Experiment , 1984, IEEE Transactions on Software Engineering.

[188]  A. Bertolino,et al.  Deriving path expressions recursively , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[189]  Sandrine Blazy,et al.  Software maintenance: an analysis of industrial needs and constraints , 1992, Proceedings Conference on Software Maintenance 1992.

[190]  Clarence A. Ellis,et al.  Groupware: some issues and experiences , 1991, CACM.

[191]  Alain Abran,et al.  Measurement of functional reuse in maintenance , 1995, J. Softw. Maintenance Res. Pract..

[192]  John Mylopoulos,et al.  On formal requirements modeling languages: RML revisited , 1994, Proceedings of 16th International Conference on Software Engineering.

[193]  Norman F. Schneidewind Report on the IEEE Standard for a Software Quality Memcs Methodology , 1993, ICSM.

[194]  Vincenzo Gervasi,et al.  Applying a Metric Framework to the Software Process: an Experiment , 1994, EWSPT.

[195]  John Mylopoulos,et al.  Capturing more world knowledge in the requirements specification , 1982, ICSE '82.

[196]  Rubén Prieto-Díaz Implementing faceted classification for software reuse , 1991, CACM.

[197]  Paul J. Layzell,et al.  DOCKET: program comprehension-in-the-large , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[198]  Bashar Nuseibeh,et al.  Software process modelling and technology , 1994 .

[199]  R. W. Schwanke,et al.  Discovering, visualizing, and controlling software structure , 1989, IWSSD '89.

[200]  Paul J. Layzell,et al.  Improving reverse-engineering through the use of multiple knowledge sources , 1995, J. Softw. Maintenance Res. Pract..

[201]  Keith H. Bennett,et al.  Approaches to program comprehension , 1991, J. Syst. Softw..

[202]  H. M. Sneed,et al.  A study on the effect of reengineering upon software maintainability , 1990, Proceedings. Conference on Software Maintenance 1990.

[203]  Shawn A. Bohner,et al.  Impact analysis-Towards a framework for comparison , 1993, 1993 Conference on Software Maintenance.

[204]  Kenny Wong Managing views in a program understanding tool , 1993, CASCON.

[205]  M. Anand “1984” , 1962 .

[206]  Norman Wilde,et al.  Maintenance Support for Object-Oriented Programs , 1992, IEEE Trans. Software Eng..

[207]  Aniello Cimitile,et al.  Experiments in identifying reusable abstract data types in program code , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[208]  Keith H. Bennett,et al.  Designing systems for future maintainability: A case study , 1993, 1993 Conference on Software Maintenance.

[209]  Paul J. Layzell,et al.  An investigation into software maintenance - Perception and practices , 1994, J. Softw. Maintenance Res. Pract..

[210]  Robert W. Schwanke,et al.  An intelligent tool for re-engineering software modularity , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[211]  Kate Ehrlich,et al.  Empirical Studies of Programming Knowledge , 1984, IEEE Transactions on Software Engineering.

[212]  Richard Bache,et al.  Data linkage maps , 1993, J. Softw. Maintenance Res. Pract..

[213]  James R. Cordy,et al.  TuringTool: A User Interface to Aid in the Software Maintenance Task , 1990, IEEE Trans. Software Eng..

[214]  Miriam A. M. Capretz,et al.  Software configuration management issues in the maintenance of existing systems , 1994, J. Softw. Maintenance Res. Pract..

[215]  T. M. Pigoski,et al.  Software transition: a case study , 1990, Proceedings. Conference on Software Maintenance 1990.

[216]  Norman F. Schneidewind,et al.  The State of Software Maintenance , 1987, IEEE Transactions on Software Engineering.

[217]  Glasgow Polytechnic Process assessment and process improvement - the need to standardise? , 1993 .

[218]  David J. Robson,et al.  The state-based testing of object-oriented programs , 1993, 1993 Conference on Software Maintenance.

[219]  Wojtek Kozaczynski,et al.  SRE: a knowledge-based environment for large-scale software re-engineering activities , 1989, ICSE '89.

[220]  Karl-Heinrich Moller Software Metrics: A Practitioner's Guide to Improved Product Development , 1992 .

[221]  Joe Gorman,et al.  Supporting Evolution of SDL-based Systems: Industrial Experience , 1995, FORTE.

[222]  Stan Rifkin,et al.  Measurement in Practice , 1991 .

[223]  Ian Sommerville,et al.  An Approach to the Support of Software Evolution , 1989, Comput. J..

[224]  Dimitris Christodoulakis,et al.  Measuring the readability and maintainability of hyperdocuments , 1995, J. Softw. Maintenance Res. Pract..

[225]  John G. Sefcik Critical success factors for implementing software quality plans , 1994, SOEN.

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

[227]  Cynthia Mathis Beath,et al.  Departmentalization in software development and maintenance , 1990, CACM.

[228]  Atul Prakash,et al.  Investigating Reverse Engineering Technologies for the CAS Program Understanding Project , 1994, IBM Syst. J..

[229]  John W. Daly,et al.  Issues on the Object-Oriented Paradigm: A Questionnaire Survey , 1995 .

[230]  Scott R. Tilley,et al.  Documenting-in-the-large vs. documenting-in-the-small , 1993, CASCON.

[231]  Alain Abran,et al.  Measurement of the maintenance process from a demand-based perspective , 1993, J. Softw. Maintenance Res. Pract..

[232]  Tetsuo Tamai,et al.  Software lifetime and its evolution process over generations , 1992, Proceedings Conference on Software Maintenance 1992.

[233]  W. M. Osborne,et al.  Annotated bibliography on software maintenance , 1988 .

[234]  Hausi A. Müller,et al.  Documenting software systems with views , 1992, SIGDOC '92.

[235]  L. Briand,et al.  Theoretical and Empirical Validation of Software Product Measures , 1995 .

[236]  Johan Lewi,et al.  Algebraic Specifications in Software Engineering , 1989, Springer Berlin Heidelberg.

[237]  A. Brooks,et al.  Verification of results in software maintenance through external replication , 1994, Proceedings 1994 International Conference on Software Maintenance.

[238]  Norman Wilde,et al.  An object finder for program structure understanding in software maintenance , 1994, J. Softw. Maintenance Res. Pract..

[239]  Linda M. Wills,et al.  Recognizing a program's design: a graph-parsing approach , 1990, IEEE Software.

[240]  Atul Prakash,et al.  Program view generation and change analysis using attributed dependency graphs , 1995, J. Softw. Maintenance Res. Pract..

[241]  Earl D. Hodil,et al.  Redocumentation: addressing the maintenance legacy , 1899, AFIPS '84.

[242]  Vincent A. Kasten,et al.  Managing the software factory , 1993, Proceedings of Phoenix Conference on Computers and Communications.

[243]  William J. Diamond Practical Experiment Designs for Engineers and Scientists , 1981 .

[244]  Robert W. Schwanke,et al.  Cross References are Features , 1993, Machine Learning: From Theory to Applications.

[245]  Lee Wendell Cooprider The representation of families of software systems. , 1978 .

[246]  Kenji Takahashi,et al.  A comparative study of structured and text-oriented analysis and design methodologies , 1995, J. Syst. Softw..

[247]  Daniel Hoffman,et al.  Trace Specifications: Methodology and Models , 1988, IEEE Trans. Software Eng..

[248]  Ellis Horowitz,et al.  SODOS: A software documentation support environment — Its definition , 1986, IEEE Transactions on Software Engineering.