Software Development in Complex Teams
A.Y. 2026/2027
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 while developing an operational knowledge of the basic principles of popular tools designed to support collaborative development efforts.
Expected learning outcomes
Students will be able to critically discuss key organzational models (cathedral, bazaar, kibbutz, agile). They will be able to leverage on software configuration management tools (in particular git) and continuous integration & delivery services. They 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).
Lesson period: Third four month period
Assessment methods: Esame
Assessment result: voto verbalizzato in trentesimi
Single course
This course cannot be attended as a single course. Please check our list of single courses to find the ones available for enrolment.
Course syllabus and organization
Single session
Responsible
Lesson period
Third four month period
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)
- 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
Lecture-based instruction. Depending on room availability, a few lab sessions may be organized to practice using the tools introduced in class.
Teaching Resources
Most of the syllabus is covered by the lecture slides and the mandatory reading of selected scientific articles. Additionally, reading certain excerpts from the following books is required:
The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition
by Frederick Brooks Jr., Addison Wesley 978-0201835953
Agile!: The Good, the Hype and the Ugly
by Bertrand Meyer, Springer 978-3319051543
The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition
by Frederick Brooks Jr., Addison Wesley 978-0201835953
Agile!: The Good, the Hype and the Ugly
by Bertrand Meyer, Springer 978-3319051543
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.
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.
INFO-01/A - Informatics - University credits: 6
Lessons: 48 hours
Professors:
Bellettini Carlo Nicola Maria, Monga Mattia
Professor(s)