SMA: Software Modeling and Analysis

SDE web image

Course:(Fall Semester 2020)
Lecturers:Oscar Nierstrasz
Assistants:Pascal Gadient, Pooja Rani
Lectures:Wednesdays @ 10h15-12h00
Exercises:Wednesdays @ 12h00-13h00
Place:Engehaldestrasse 8, 003 (see Logistics below)
Exam:2020-12-16 (written, 90 minutes, Hochschulstrasse 4, room 114)
Repetition:Fall Semester 2020


NB: Due to Covid-19, this class will largely be held remotely. Please sign up in Piazza as soon as possible so that we can inform you about how to participate in the lectures. In case of any encounters in person, please be sure to bring a mask, as there may not be enough room to maintain social distancing.


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.

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


The final grade will be based 30% on the weekly assignments and 70% on the final exam.

Schedule 2020

Please click on the lecture title to view the podcast.

Week Date Lecture
1 16-Sep-20 Introduction to Software Modeling and Analysis
2 23-Sep-20 Smalltalk: A Reflective Language and System and Demo
3 30-Sep-20 Understanding Classes and Metaclasses
4 7-Oct-20 Reflection and Metaprogramming
5 14-Oct-20 Moldable Development (Tudor Girba)
6 21-Oct-20 Software Visualization (Leonel Merino)
7 28-Oct-20 Software Metrics and Problem Detection (ON)
Moldable Analysis with Moose (Andrei Chiş) (Andrei Chiş)
8 4-Nov-20 Code and Test Smells (Fabio Palomba)
9 11-Nov-20 Static Program Analysis (ON) / Soot (Manuel Leuenberger)
10 18-Nov-20 Dynamic Analysis (Nataliia Stulova)
11 25-Nov-20 Comment Analysis (Pooja Rani)
12 2-Dec-20 Fuzz Testing (Reza Hazhirpasand)
13 9-Dec-20 Socio-technical Aspects in Software Systems (Alberto Bacchelli)
14 16-Dec-20 Final Exam (NB: Room H4-114)

Weekly assignments

PLEASE READ THIS FIRST! - How to submit your solutions

Week Practical Session PDF Assignment PDF Solution PDF
01 P01 A01 S01
02 P02 A02 S02
03 P03 A03 S03
04 P04 A04 S04
05 P05 A05 S05
06 P06 A06 + Tutorial S06
07 P07 A07 S07
08 P08 A08 S08
09 P09 A09 S09
10 P10 A10 S10
11 P11 A11 S11
12 P12 A12 S12
Last changed by oscar on 21 October 2020