SMA: Software Modeling and Analysis

SDE web image

Course:(Fall Semester 2016)
Lecturers:Oscar Nierstrasz, Mohammad Ghafari, Dr.
Assistants:Nevena Milojković, Yuriy Tymchuk
Lectures:Wednesdays @ 10h15-12h00
Exercises:Wednesdays @ 12h00-13h00
Place:Engehaldestrasse 8, 003
Repetition:Fall Semester 2016


Real software systems continuously evolve over time. As they evolve, they become harder to understand and maintain. In this course we will explore techniques to model complex software systems and analyze them to support program comprehension and reengineering tasks. Most lectures will combine theoretical background and practical application of tools and techniques. A portion of this course will make heavy use of Smalltalk, a live programming environment that supports advanced reflection metaprogramming techniques. Some material is based on two open‐source textbooks: Pharo by Example, and Object-Oriented Reengineering Patterns.

(NB: This course was formerly known as "SDE: Software Design and Evolution")

Learning Outcomes

After the successful completion of this course, you will:

  • recognize the problems of legacy software
  • use reflection and metaprogramming techniques
  • extract software models from source code and other artifacts
  • apply software metrics to detect quality problems
  • visualize software to support program comprehension
  • apply basic static and dynamic analysis techniques


Week Date Lecture Exercises
1 21-Sep-16 Introduction to Software Modeling and Analysis Exercise 1
2 28-Sep-16 Smalltalk: A Reflective Language and System Exercise 2
3 5-Oct-16 Understanding Classes and Metaclasses Exercise 3
4 12-Oct-16 Reflection and Metaprogramming Exercise 4
5 19-Oct-16 Metrics and problem detection / Moose (Yuriy Tymchuk) Exercise 5
6 26-Oct-16 Software Visualization / Roassal (Leonel Merino) Exercise 6
7 2-Nov-16 Guest lecture: Architectural Extraction (Pooyan Jamshidi)
8 9-Nov-16 Bug prediction / Weka (Haidar Osman) Exercise 8
9 16-Nov-16 Guest lecture: Static Program Analysis / Soot (Steven Arzt)
10 23-Nov-16 Dynamic Analysis / Javassist (Nevena Milojkovic)
11 30-Nov-16 Symbolic Execution Exercise 11
12 7-Dec-16 Software Data Analytics Exercise 12
13 14-Dec-16 Guest lecture: The View from Industry (Carl Worms)
14 21-Dec-16 Final exam
Last changed by oscar on 22 December 2016