Software Evolution

Course code: 2IMP25

Time and location: Wednesday, 15:45-17:30 (Paviljoen L10) and Friday, 10:45-12:30 (Paviljoen J17). The course has been videotaped, see below.
Target audience: Master (CSE,ES,BIS) 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, this course is for you! (see also How to continue)

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. 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 existing software systems.

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


As opposed to the previous years, this year the assessment is based on the homework assignments and the final exam.

The assignments are available on Peach. You can access Peach with your usual university login; once you have registered in OASE you should be able to access the assignments. 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 three assignments that can be carried out in pairs. If you cannot find a partner yourself, I can send an email to all the students to suggest them to contact you if they also do not have a partner. However, I will not assign partners.
Deduction policy and grades (per assignment):

Anonymous feedback on the assignments can be provided using the online form.
Final grade for the assignments part A is determined as w1*A1 + w2*A2 + w3*A3, where Clarification (Feb 20, 2016): student that fails to submit an assignment gets 0 for this assignment.

Since this is the first time the exam is given, no previous year exams are available. To give you an impression of what can be expected from the exam, please check the mock up exam.

To pass the course, you should score at least 5 both for the assignments and for the exam. Let A be the assignments grade calculated as above, and E be the exam grade. Then, the final grade is calculated as follows:

Special cases: Those who fail should submit the replacement assignment (if A < 5), retake the exam (if E < 5 or "no show") or both (if A < 5 and either E < 5 or "no show"). The replacement assignment will be announced on Peach after all the assignment grades have been published.

Fraud policy

As any course offered at Eindhoven University of Technology, it is subject to the TU/e Educational Fraud Policy. At the very basic level, it means do not copy your solutions from the Internet or from other groups; if you need to cite a scientific paper or a website do this in the appropriate way. Your submissions might be subjected to the plagiarism detection tool. Please keep in mind that copying is considered fraud, and students who copy may be reported to the examination committee.


The course has been videotaped in 2012. You can find the lectures on, (2) Computer Science, 2IS55 (old course code). Limitations of the video:

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.

Continuation opportunities

If you like the topic of software evolution, consider one of the following options to work on a research assignment in this area:


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

Location Date Topic
PAV L10 Feb 3 Introduction. S-, P- and E-type systems. Lehman's laws of software evolution.
PAV J17 Feb 5 Requirements Evolution.
Feb 10 No class. Carnaval.
Feb 12 No class. Carnaval.
PAV L10 Feb 17 Architecture reconstruction (reverse engineering) of structural UML models.
PAV J17 Feb 19 Architecture reconstruction (reverse engineering) of behavioural UML models. Architecture Description Languages.
PAV L10 Feb 24 Guest lecture. Dr. Jurgen Vinju. Source code analysis in Rascal (Tips and tricks).
PAV J17 Feb 26 Code duplication
PAV L10 Mar 2 Software repositories. Program differencing.
PAV J17 Mar 4 Repository mining (I): Social aspects.
PAV L10 Mar 9 Repository mining (II): Files and bugs. Software metrics (I). Metrics and scales. ?LOC.
PAV J17 Mar 11 Software metrics (II). Structure and modularity metrics for imperative and OO-programs
PAV L10 Mar 16 Software metrics (III). Structure and modularity metrics for OO-programs. Package metrics. Metrics aggregation. Churn metrics.
PAV J17 Mar 18 Software metrics (IV). Metrics for cost and time estimation. Tests.
PAV L10 Mar 23 Refactoring.
Mar 25 No class. Good Friday.
PAV L10 Mar 30 DB migration.
PAV J17 Apr 1 No class.
PAV SH1 Apr 14 9:00-12:00 Exam.
To be announced June 30 18:00-21:00 Resit.