SDE: Software Design and Evolution
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 |
Description
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:
- Understand how to use meta-programming to design highly adaptive software systems
- Be able to use state-of-the art static analysis to automatically uncover problems in software
- Deploy dynamic analysis to examine and optimize existing source code
- Be familiar with state-of-the-art technologies for reverse- and reengineering
- Data-mine large repositories of software to build better programmer tools
Schedule
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 |