Software Evolution

Course code: 2IS55

Time and location: Monday, 13:45-15:30 (5th and 6th hours; MetaForum 8Paviljoen M 23) and Wednesday, 10:45-12:30 (on February 4: Laplacegebouw -1.19; from February 11 onwards: AUD 10). The course has been videotaped, you can find the lectures on, (2) Computer Science, 2IS55. There will be some (minor) changes this year.
Target audience: Master (CSE,ES,BIS,AT) students interested in Software Engineering; mandatory for CSE-students following the Software Science stream and recommended (stream elective) for CSE-students following Systems Science stream. 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.
Whether you would like to become a software developer or a researcher, a quality manager or a software architect, a requirements engineer or a consultant, 2IS55 is for you!

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.

Prerequisites: An undergraduate software engineering course. Up-to-date knowledge of Java. Knowledge of scripting languages is an advantage.

Learning objectives:

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


The assignments will be made available on Peach. You can access Peach with your usual university login. Please do not forget to join "2IS55 Software Evolution".
Keep in mind that the deadlines are strict and no late submissions will be accepted (either by Peach or by me).
This year we will have five assignments. Assignments A1, A3 and A5 are individual. Assignments A2 and A4 can be carried out in pairs.

You should submit at least four assignments. The final grade of students will be calculated as follows:

  1. the average of the four best assignments (if less than four assignments have been submitted than I will take zeroes as the grades for missing assignments)
  2. correction, where correction is 0, if four or more assignments have been submitted; -0.5, if three assignments have been assignments, and -1, if two submissions or less have been submitted
  3. rounding to the closest integer value.
Hence, a student that has submitted three assignments and got 8, 6.5 and 7 the final grade would be (8 + 6.5 + 7 + 0)/4 - 0.5 rounded to the closest integer value, i.e., 5. Similarly, a student that has submitted two assignments and got 8 and 8, the final grade would be (8 + 8 + 0 + 0)/4 - 1 rounded to the closest integer value, i.e., 3.

Deduction policy and grades:


There is no mandatory textbook for this course. Should you be interested in software evolution, you might like to consult the following books (I've used them when preparing the lectures):

SpringerLink will work only if you are at the university network, use a VPN connection or the library proxy server.


The list of lectures and topics is subject to change. Powerpoint presentations will be made available after the class.

Location Date Topic
MF 8 Feb 2 Introduction. S-, P- and E-type systems. Lehman's laws of software evolution.
LG -1.19 Feb 4 Requirements Evolution.
PAV M 23 Feb 9 Architecture reconstruction (reverse engineering) of structural UML models.
AUD 10 Feb 11 Guest lecture. Dr. Jurgen Vinju. Source code analysis in Rascal. Overview, Tips and tricks
Feb 16 No class. Carnaval.
Feb 18 No class. Carnaval.
PAV M 23 Feb 23 Architecture reconstruction (reverse engineering) of behavioural UML models. Architecture Description Languages
AUD 10 Feb 25 Code duplication
Mar 2 No class.
Mar 4 No class.
PAV M 23 Mar 9 Software repositories. Program differencing.
AUD 10 Mar 11 Repository mining (I): Social aspects
PAV M 23 Mar 16 Repository mining (II): Files and bugs. Software metrics (I). Metrics and scales. ?LOC.
AUD 10 Mar 18 Software metrics (II). Structure and modularity metrics for imperative and OO-programs
PAV M 23 Mar 23 Software metrics (III). Structure and modularity metrics for OO-programs. Package metrics. Metrics aggregation. Churn metrics.
AUD 10 Mar 25 Software metrics (IV). Metrics for cost and time estimation. Tests.
PAV M 23 Mar 30 Refactoring.
AUD 10 Apr 1 DB migration.