SDE: Software Design and Evolution

SDE web image

Course:W6071 (Fall Semester 2011)
Lecturers:Oscar Nierstrasz and Mircea F. Lungu
Assistants:Jorge Ressia
Lectures:Wednesdays @ 10h15-12h00
Exercises:Wednesdays @ 12h00-13h00
Place:Engehaldestrasse 8, 003


Important: Please register by September 30, 2011 on Academia and add yourself to the SDE mailing list.

For more details see the Teaching Unit Rules and Exam Rules.


Real software systems continuously evolve over time. Statically‐typed programming languages, however, provide few mechanisms to enable software evolution. In this course we will explore mechanisms and techniques provided by dynamic programming languages, in particular Smalltalk, which facilitate both run‐time change, and long‐term evolution. We will also explore techniques used to analyze static models of software as well as running systems to support program comprehension, refactoring and reengineering. The course is based partly on two open‐source textbooks: Pharo by Example, and Object-Oriented Reengineering Patterns.


1 21/Sep/11 Introduction to Software Design and Evolution (exercises)
2 28/Sep/11 Smalltalk: A Reflective Language and System (exercises)
3 5/Oct/11 Understanding Classes and Metaclasses (exercises)
4 12/Oct/11 Reflection and Metaprogramming (exercises)
5 19/Oct/11 Model-Driven Development / MDD in Practice (guest lecture: Lukas Renggli) (exercises)
6 26-Oct-11 Software Assessment (guest lecture: Tudor Girba)
7 2-Nov-11 Introduction to Reverse Engineering / Moose Lab (material) (solution)
8 9-Nov-11 Architectural Extraction
9 16-Nov-11 Metrics and Problem Detection (project)
10 23/Nov/11 Mining Software Repositories (material)
11 30/Nov/11 Dynamic Analysis
12 7/Dec/11 Software Ecosystems
13 14/Dec/11 Software Visualization (project evaluation material)
14 21/Dec/11 Final exam
Last changed by oscar on 16 April 2014