SMA: Software Modeling and Analysis
Course: | (Fall Semester 2020) |
Lecturers: | Oscar Nierstrasz |
Assistants: | Pascal Gadient PhD, Pooja Rani |
Lectures: | Wednesdays @ 10h15-12h00 |
Exercises: | Wednesdays @ 12h00-13h00 |
Place: | Engehaldestrasse 8, 003 (see Logistics below) |
Start: | 2020-09-16 |
Exam: | 2020-12-16 (written, 60 minutes, remote) |
Repetition: | Fall Semester 2020 |
Description
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
Grading
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 with Glamorous Toolkit (Andrei Chiş) | ||
8 | 4-Nov-20 | Code and Test Smells (Fabio Palomba) |
9 | 11-Nov-20 | Static Program Analysis |
Dead Code Detection Demo | ||
10 | 18-Nov-20 | Dynamic Program Analysis (Nataliia Stulova) |
11 | 25-Nov-20 | Analyzing Code Comments (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 (Location: Zoom) |
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 | |
13 | Q&A / EXAM PREPARATION | A13 (bonus) | S13 | |
14 | EXAM |