Software Evolution

Course code: 2IS55

Time and location: Monday, 8:45-10:30 (1st and 2nd hour). Matrix 1.44 (plan, the Matrix building is denoted MA).
Target audience: Master (CSE,ES,BIS) students interested in Software Engineering. Students intending to work on their graduation project at the Software Engineering & Technology group are specially encouraged to participate.

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


Feb 1Introduction. S-, P- and E-type systems. Lehman's laws of software evolution
Feb 8Requirements Evolution
Feb 15No class. Carnaval.
Feb 22Architecture reconstruction (reverse engineering) of structural UML models Due to presence of animation the slides of this week are in the PowerPoint format
March 1Architecture reconstruction (reverse engineering) of behavioural UML models. Architecture Description Languages
March 8Code duplication
March 15Advanced code duplication techniques. Program differencing
March 22Guest lecture by Stijn Hoop: Revision control systems
 Advanced program differencing techniques
March 29What can we learn from the logs of version control systems?
April 5Easter Monday. No class.
April 12Mid-term exam period. No class.
April 19Software metrics (I). Metrics and scales, ?LOC, Halstead metrics.
April 26Software metrics (II). Structure and modularity metrics for imperative and OO-programs.
May 3Software metrics (III). Package metrics, metrics aggregation and churn metrics.
May 10Tests. Introduction to reengineering.
May 17Refactoring.
May 24Whit Monday. No class.
May 31Introduction to DB migration. Model-driven engineering.
June 7DB migration.
June 14Evolution to and in Aspect-Oriented Programming.