Teaching Software Evolution

Program-Transformation.Org: The Program Transformation Wiki
What should a course on SoftwareEvolution cover?


The CCSE initiative has recognized software evolution as a separate knowledge area. The second draft of this initiative recommends the following required topics for undergraduate software engineering students. All topics are marked as essential except the ones categorized as just desirable below:

Evolution Processes

  • relationships between evolving entities
  • models of software evolution
  • cost models (Desirable)
  • planning (Desirable)

Evolution Activities

CCSE also maintains a list of undergraduate software engineering courses -- you may find it interesting to see how software evolution fits in these programs. See http://sites.computer.org/ccse/SEprograms.html


Existing courses of software evolution

  • Serge Demeyer teaches a course on Software Reengineering at the University of Antwerp, Belgium. The course is based on the ook Object-oriented Reengineering Patterns and is driven by labs (where students experiment with tools on large code) and a project (where students have to prepare some open source project for future extension).

  • Panos Linos has set up CSSE 473 at Butler University on Software Maintenance and Evolution.
    • Includes maintenance on the Emacs source code.
    • Software Maintenance practices and process models (ISO/IEC 12207, IEEE 1219)
    • Software maintenance methodologies, tools and environments
    • Software evolution strategies
    • Software maintenance management, planning and economics
    • Migration of legacy systems to the object-oriented paradigm
    • Re-engineering, reverse engineering, restructirng, re-factoring practices
    • Program comprehension
    • Component-based software maintenance practices
    • PROJECT: Students undertake a realistic project that is usually "in-trouble". They assess its current quality and business value and based on that they propose a specific evolution strategy and then they create and follow a modernization plan.
    • During the course, we also try to use various maintenance tools, commercial and/or academic.

  • Norman Wilde offers a graduate software engineering project in which students have to modify the existing RECON3 system aimed at software reconnaissance.

  • Harry Sneed is teaching a 25 hour instruction course on software maintenance and reengineering, covering
    • Processes, change management, impact analysis, post documentation / reverse engineering, C/C++/Java component reengineering, Cobol, PL/I wrapping.
    • Emphasis on business systems
    • Exercises in program change, analysis, reengineering, and post documentation
    • University of Regensburg -- no on line info yet.

  • Mira Kajko-Mattsson at the IT University in Sweden is teaching a course on Software Evolution and Maintenance:
    • Topics: maintenance categories, support processes, problem management, predelivery maintenance, Y2K, maintainers' education and training, preventive maintenance, maintenance organisations, documentation, and maintenance testing.
    • More info: http://www.dsv.su.se/~mira/

  • VaclavRajlich teaches software evolution in two courses:
    • In a regular software engineering course, the topic is included and covered by the last phase of a three-part project.
    • The dedicated software evolution course csc711 incluces a project and a range of advanced papers, covering such topics as reengineering to object oriented systems, the staged life cycle model, hidden assumptions, ripple effects, and feature location.

  • LeonMoonen and ArieVanDeursen are teaching a master's course on Software Architecture Reconstruction and Modelling at Delft University of Technology, The Netherlands.

(Feel free to add your own course -- see OneMinuteWiki)


See also

  • The working session Experiences in Teaching Software Evolution and Program Comprehension taking place at IWPC 2003, Portland, organized by Jean-Marie Favre, Juergen Rilling, Rainer Koschke, and ArieVanDeursen.


CategoryTeaching | CategorySoftwareEvolution