Evolution Resources

Program-Transformation.Org: The Program Transformation Wiki


  • IEEE Std. 610.12 Standard Glossary of Software Engineering Terminology, 1990
  • IEEE Std. 1219 Standard for Software Maintenance, 1998
  • ISO/IEC 14764 Software Engineering - Software Maintenance, 2000



The following list is inevitably incomplete. If you know of another relevant book, please add it.

  • Tom Pigoski. Practical Software Maintenance: Best Practices for Managing your Software Investment, John Wiley, 1997.
  • Steve Mc Connell. Code Complete, Microsoft Press, 1993.
    • A practical handbook of software construction. 800 pages every developer should study. Chapter 30 (pp. 737-754) of this book is devoted to software evolution. It argues that the key distinction between kinds of software evolution is whether the program's quality improves or degrades under modification. Software evolution is like biological evolution in that some mutations are beneficial and many mutations are not. Good software evolution produces code whose development mimics the ascent from monkeys to Neanderthals to our current exalted state as computer programmers.
  • Martin Fowler. Refactoring: Improving the design of existing programs. Addison-Wesley, 1999.
  • S. Demeyer, S. Ducasse, and O. Nierstrasz. Object-Oriented Reengineering Patterns, Morgan-Kaufman, 2002.
  • Jan Bosch. Design and Use of Software Architectures - Adopting and Evolving a Product Line Approach, Addison-Wesley, 2000.
  • Hongji Yang, Martin Ward. Successful Evolution of Software Systems, Artech House, 2003. ISBN 1-58053-349-3.
    • Places particular emphasis on the reengineering of legacy assembler systems using the FermaT workbench. Includes a whole chapter on real case studies.


The following list is inevitably incomplete. If you know of another relevant article, please add it.

  • SoftwareMaintenanceAndEvolutionARoadmap. According to this survey, a highly promising area of research is to find ways to raise the level of abstraction in which evolution is expressed, reasoned about, and implemented. Research topics therefore include: Raising the abstraction level of the language used; Separating business objects from control; Representing domain concepts in DomainAnalysis and DomainSpecificLanguages (see also LittleLanguagesLittleMaintenance); Partitioning SoftwareArchitectures into independently evolving subsystems
  • L. A. Belady and M. M. Lehman. A model of large program development. IBM Systems Journal 15(3):225-252, 1976. This article formulated the laws of software evolution for the first time. The law of continuing change states that a system needs to change in order to be useful. The law of increasing complexity states that the structure of a system detoriates as it evolves. (pdf).
  • M.Godfrey, Q. Tu. Evolution in Open Source Software: A Case Study. Proc. ICSM 2000. The authors give a recent perspective on the laws of software evolution in the OpenSource area.

PhD Theses

The following list is inevitably incomplete. If you know of another relevant PhD? thesis, please add it.

  • William G. Griswold. Program Restructuring as an Aid to Software Maintenance. University of Washington, August 1991.
  • Amela Karahasanovic. Supporting application consistency in evolving object-oriented systems by impact analysis and visualisation. University of Oslo, 2002.
  • Michele Lanza. Object-Oriented Reverse Engineering: Coarse-grained, Fine-grained, and Evolutionary Software Visualization. Universitat Bern, Switzerland, May 2003.
  • Kim Mens. Automating Architectural Conformance Checking by means of Logic Meta Programming. Vrije Universiteit Brussel, October 2000.
  • Tom Mens. A Formal Foundation for Object-Oriented Software Evolution. Vrije Universiteit Brussel, September 1999.
  • Leon Moonen. Exploring Software Systems. Faculty of Natural Sciences, Mathematics, and Computer Science, University of Amsterdam, The Netherlands, December 2002.
  • William F. Opdyke. Refactoring: A Program Restructuring Aid in Designing Object-Oriented Application Frameworks. University of Illinois at Urbana-Champaign, 1992.
  • Sander Tichelaar. Modeling Object-Oriented Software for Reverse Engineering and Refactoring. University of Bern, 2001.
  • Tom Tourwe. Automated Support for Framework-Based Software Evolution. Vrije Universiteit Brussel, September 2002.
  • Jilles van Gurp. On the design and preservation of software systems. University of Groningen, The Netherlands, March 2003.

Graduation and Master Theses

Some of the evolution-related graduation and Master theses mentioned below have been finished, others are still ongoing. The main point of listing them here is to allow the students to collaborate on similar topics with other students at other institutes. Please contact the advisor or student for more information on (the status of) a certain topic.

  • Supporting software comprehension and evolution by means of intentional source-code views.
    • Promoter: Kim Mens
    • Student: Bernard Poll (2002-2003) and Jean Ketelslegers (2003-2004)
  • Towards a multi-language round-trip engineering framework (tentative title)
    • Promoter: Kim Mens
    • Student: Joao Del Valle (2002-2003)
  • Implementation of a logic metaprogramming plug-in for Eclipse
    • Promoter: Kim Mens
    • Student: Diego Antonio Ordonez Camacho (2003-2004)
  • Generation of JMI model transformation code from visual metamodel transformation specifications
    • Promoter: Dirk Janssens
    • Supervisor: Pieter Van Gorp
    • Student: Hans Schippers (2003-2004)

Courses on software evolution

CategorySoftwareEvolution | CategoryReengineeringWiki | Contributions by Tom Mens

-- - TomMens - 12 Aug 2004