Software development in complex teams

A.Y. 2020/2021
Overall hours
Learning objectives
The course analyzes organizational issues in software projects. It aims at train software developers fully aware of the management issues of complex projects.
Expected learning outcomes
Students will be able to critically discuss key organzational models (cathedral, bazaar, kibbutz, agile). She will be able to leverage on software configuration management tools (in particular git) and continuous integration & delivery services. She will able to write programs together with special documentation and specifications aimed at division of labour and collaboration (in particular by exploiting Design by Contract approaches).
Course syllabus and organization

Single session

Lesson period
First semester
Lectures will be mainly streamed via YouTube (with synchronous interaction with the instructors); streamed videos will be available until the conclusion of the course. Some lesson could be registered in asynchronous form. Laboratory exercises will conducted autonomously by the students and special synchronous feedback sessions will be organized. The oral examinations will be organized via MS Teams.
Course syllabus
- Fundamentals of development models (cathedral, bazaar, kibbutz, "agile" teams)
- Configuration management and versioning
- Continuous integration and delivery
- DevOps
- Documentation for collaborative work and language support (Design By Contract, linguistic means for separation of concerns)
Prerequisites for admission
Knowledge of software engineering terminology and basics, in particular: software process management, software design, testing and validation. A previous course on Software Engineering is highly recommended.
Teaching methods
Lectures. Three laboratory sessions aimed at experimenting with the tools will be organized during the course.
Teaching Resources
Slides, mandatory readings and the recording of most of the lectures are available on the course website:
Assessment methods and Criteria
The examination is divided in two parts: a laboratory exercise and an oral discussion. The laboratory lasts 2 hours on a GNU/Linux platform; the student must answer to some written questions, solve an exercise on Design By Contract with the Eiffel language, and an exercise on git based configuration management. The oral discussion focuses on the all the topics of the course and it aims at assessing critical thinking on the subject.

At the end of the oral discussion a final mark (on a 30 point scale) is given, by taking into account: knowledge of the subject and tools, critical thinking attitude, clarity of exposition and precision of language.
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
By appointment only
Office 5004, Via Celoria 18, Milan