Software Evolution (EVO - HS08)

Course:W7084 (Autumn Semester 2008)
Lecturers: Dr. Tudor Gîrba
Prof. Dr. Oscar Nierstrasz
Assistant:Jorge Ressia
Audience:Master students in computer science
Time:Thursdays, 15h15-18h00
Place:Engehaldenstrasse 8, 003
Start:Sept. 18, 2008
Repetition:None planned


Software systems both are eternal, and are not eternal. On the one hand, the bits that form software systems have the same mathematical meaning regardless of time, and in that sense software systems are eternal. On the other hand, software systems reside in a larger environment: they run on a piece of hardware, they fulfil a certain need at a certain moment, they make use of other software systems. But, hardware and needs change, and software systems must evolve too if they are to remain useful.

This course presents a survey of various techniques, like reverse engineering, program visualisation, or refactoring, that have been successfully used to re-engineer and evolve industrial systems. The accompanying lab will provide hands-on experience with analyzing software systems using reverse engineering tools.

More materials and information can be found at:

1 18-Sep-08 Introduction (handouts)
2 25-Sep-08 Reverse Engineering (handouts)
3 02-Oct-08 Lab — Understanding legacy software
4 09-Oct-08 Presentation of Results (all groups)
5 16-Oct-08 Metrics and Problem Detection (handouts)
6 23-Oct-08 Software Visualization (handouts)
7 30-Oct-08 The Anatomy of Analysis Tools (handouts)
8 06-Nov-08 History Analysis (handouts)
9 13-Nov-08 Dynamic Analysis (handouts)
10 20-Nov-08 Software Understanding in the Large (handouts)
11 27-Nov-08 Restructuring (handouts)
12 04-Dec-08 Testing and Migration (handouts)
13 11-Dec-08 Conway, Migration and Politics
14 18-Dec-08 Final Exam
Last changed by admin on 21 April 2009