Software Evolution

Course code: 2IS55

Time and location: Wednesday, 15:45-17:30 (7th and 8th hours). In Q3 we will meet in Auditorium 6 (plan, the Auditorium building is denoted AUD). In Q4 we will meet in Auditorium 13.
Target audience: Master (CSE,ES,BIS) students interested in Software Engineering. Students intending to work on their graduation project at the Software Engineering & Technology specialization are specially encouraged to participate. Students following other programs at TU/e are welcome to join the class, subject to the regulations pertaining to the program followed and my approval.

Background information on the course:

Nowadays change is often considered as the only constant factor in software development. Successful software systems are, therefore, those systems that can adapt to the ever changing requirements of the environment. One can, thus, compare this process of adaptation to the Darwin's "Survival of the fittest" principle. The problem is, however, that not much is known about evolution of software systems. This course will explore issues related to software evolution: why it is difficult, how we can cope with this difficulty and what can we learn from the past. Specifically, the course will look at advanced tools and techniques proposed by the research community to understand, ease and automate software evolution. In this course, you will have a chance not only to learn about methods and tools of software evolution, but also to apply them to assess software evolution of an existing software system.

Learning objectives:

After completing this course, you will be expected to be able to


The assignments will be made available on Peach. If you are not yet registered in Peach, please register. If you are registered already, please do not forget to couple "2IS55 Software Evolution". Please keep in mind that the deadlines are strict and no late submissions will be accepted (either by Peach or by me). The final grade will be calculated as: 0.05*A1 + 0.1*A2 + 0.2*A3 + 0.1*A4 + 0.1*A5 + 0.1*A6 + 0.15*A7 + 0.2*A8

Individual assignments (A1, A2, A7, A8) determine 50% of the grade. Remaining assignments (A3-A6) can be carried out in pairs. Grades' distributions for A1 till A8.
Intermediate evaluation. Final evaluation.


The list of lectures and topics is subject to change.
AUD 6Feb 2Introduction. S-, P- and E-type systems. Lehman's laws of software evolution
Feb 9Requirements Evolution
Feb 16Architecture reconstruction (reverse engineering) of structural UML models
Feb 23Architecture reconstruction (reverse engineering) of behavioural UML models. Architecture Description Languages
March 2Guest lecture by Stijn Hoop: Revision control systems
March 9No class. Carnaval.
March 16Code duplication.
March 23Advanced code duplication techniques. Program differencing
March 30What can we learn from the logs of version control systems?
April 6Mid-term exam period. No class.
April 13Mid-term exam period. No class.
AUD 13April 20Software metrics (I). Metrics and scales, ?LOC, metrics aggregation.
April 27Software metrics (II). Structure and modularity metrics for imperative and OO-programs.
May 4Software metrics (III). Package metrics, churn metrics and metrics for cost and time estimation.
May 11Tests. Introduction to reengineering.
May 18Refactoring.
May 25Guest lecture by Marcel van Amstel and Luc Engelen: Model-driven engineering
Introduction to DB migration.
June 1DB migration.
June 8Evolution to and in Aspect-Oriented Programming.
June 15No class.