SDE: Software Design and Evolution

SDE web image

Course: 21045 (Fall Semester 2014)
Lecturers: Oscar Nierstrasz and Mircea F. Lungu
Assistants: Nevena Milojković, Haidar Osman
Lectures: Wednesdays @ 10h15-12h00
Exercises: Wednesdays @ 12h00-13h00
Place: Engehaldestrasse 8, 003
Start: 2014-09-17
Exam: 2014-12-17
Repetition: Fall Semester 2016


/download/oorp/pictures/oorp.jpg /download/pharobyexample/pbe.jpg 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.

Learning Outcomes

After the successful completion of this course, you will:


Week Date Lecture Exercises
1 17-Sep-14 Introduction to Software Design and Evolution Exercise 1
2 24-Sep-14 Smalltalk: A Reflective Language and System Exercise 2
3 1-Oct-14 Understanding Classes and Metaclasses Exercise 3
4 8-Oct-14 Reflection and Metaprogramming Exercise 4
5 15-Oct-14 Guest lecture: Software assessment by example (Tudor Girba) / Moose Lab Exercise 5
6 22-Oct-14 Metrics and Problem Detection Exercise 6
7 29-Oct-14 Architectural Extraction Project
8 5-Nov-14 Software Visualization / Roassal
9 12-Nov-14 Mining Software Repositories
10 19-Nov-14 Dynamic Analysis
11 26-Nov-14 Software Ecosystems (Invited Speaker: Iulian Dragos, Typesafe)
12 3-Dec-14 Guest lecture: Software Evolution in the Financial Industry (Carl Worms)
13 10-Dec-14 Presentations
14 17-Dec-14 Final exam