Foundations of software engineering (2020/2021)

Course code
Mariano Ceccato
Academic sector
Language of instruction
Teaching is organised as follows:
Activity Credits Period Academic staff Timetable
Teoria 5 I semestre Mariano Ceccato

Go to lesson schedule

Laboratorio 1 I semestre Mariano Ceccato

Go to lesson schedule

Learning outcomes

The course aims at presenting and practicing the main methodologies and technologies to adopt when designing and implementing software systems. At the end of the course, the student shall know how to define requirements, design, implement and verify software. This knowledge allows the student to take part to software development tasks in a proactive and consciously way, mastering the methodologies and technologies that support every software development phase.


The course program includes the following topics:
• Introduction to software engineering: definitions, ethical considerations, case studies.
• Software development process: waterfall model, spiral model, agile models.
• Requirement engineering: methodologies for collecting and validating requirements, interaction with stakeholders.
• Software design: UML and its adoption to design and document software. Class diagram, sequence diagram, object diagram, package diagram, use case diagram, activity diagram.
• Software development: configuration management, build system, integrated development environment (IDE).
• Software architecture: architectural view and design. Patterns of software architectures: Layers, Pipes and filters, Repository, Client server, MVC.
• Software validation: unit testing, integration testing, system testing. Black-box and white-box testing. Test case coverage and adequacy. Mutation testing.
• Software management: risk management and project management.
• Software evolution: refactoring and bad smells.

Assessment methods and criteria

The student will be evaluated with an oral exam and with the lab activity.

Reference books
Activity Author Title Publisher Year ISBN Note
Teoria Ian Sommerville Ingegneria del software - 10/Ed. (Edizione 10) Pearson 2017 9788891902245
Laboratorio Ian Sommerville Ingegneria del software - 10/Ed. (Edizione 10) Pearson 2017 9788891902245