Software Evolution

Course code: 2IS55

Time and location: Tuesday, 10:45-12:30 (3rd and 4th hours). In Q3 we will meet in Auditorium 16 (plan, the Auditorium building is denoted AUD). In Q4 we will meet in Auditorium 2.
The course will be videotaped this year, you can find the lectures on, (2) Computer Science, 2IS55. Due to (in)availability of the video recording staff we will have a class during the catch-up week of Q3 (April 3) but not on May 8.

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.
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.

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).
The final grade will be calculated as: 0.1*A1 + 0.2*A2 + 0.2*A3 + 0.15*A4 + 0.15*A5 + 0.2*A6

Individual assignments (A1, A3, A6) determine 50% of the grade. Assignments A2, A4, A5 can be carried out in pairs. Deduction policy and grades: A1, A2, A3, A4, A5, A6.


The list of lectures and topics is subject to change.
AUD 16Feb 7Introduction. S-, P- and E-type systems. Lehman's laws of software evolution.
AUD 16Feb 14Requirements Evolution
Feb 21No class. Carnaval.
AUD 16Feb 28No class. The lecturer is ill.
AUD 16March 6Architecture reconstruction (reverse engineering) of structural UML models.
AUD 16March 13Architecture reconstruction (reverse engineering) of behavioural UML models. Architecture Description Languages
AUD 16March 20Code duplication.
AUD 16March 27Advanced code duplication techniques. Software repositories. Program differencing.
AUD 16April 3Guest lecture by Dr. Koo Rijpkema: Explorative Analysis of Time Series
AUD 16April 4, 13:45-15:30What can we learn from the logs of version control systems?
April 10Mid-term exam period. No class.
April 17Mid-term exam period. No class.
AUD 2April 24Software metrics (I). Metrics and scales, ?LOC, metrics aggregation.
AUD 2May 1Software metrics (II). Structure and modularity metrics for imperative and OO-programs.
May 8No class.
AUD 2May 15Software metrics (III). Package metrics, churn metrics and metrics for cost and time estimation.
AUD 2May 22Tests. Introduction to reengineering.
May 29Monday schedule. No class.
AUD 2June 5Refactoring.
AUD 2June 12DB migration.
June 19Catching-up period. No class.
June 26Exam period. No class.
July 3Exam period. No class.