Risorse bibliografiche
Risorsa bibliografica obbligatoria
Risorsa bibliografica facoltativa
Scheda Riassuntiva
Anno Accademico 2019/2020
Scuola Scuola di Ingegneria Industriale e dell'Informazione
Docente Rossi Matteo Giovanni
Cfu 5.00 Tipo insegnamento Monodisciplinare

Corso di Studi Codice Piano di Studio preventivamente approvato Da (compreso) A (escluso) Insegnamento

Obiettivi dell'insegnamento

Software development is more and more important in the realization of modern control systems. This course provides students in automation the basic concepts for a rigorous development of software systems. The course will introduce several specification notations and the most used methods for software verification and validation. Finally, it will present some examples of software development tool chains through a pair of case studies.

Risultati di apprendimento attesi

Dublin Descriptors

Expected learning outcomes

Knowledge and understanding

Students will learn how to:

  • identify the phases of software development and the specific activities associated with each phase
  • precisely model the behavior of software applications before they are implemented, in particular for what concerns their timing features
  • model the structure of software applications in terms of their modules and the interactions among them
  • test code to increase the confidence in its correctness      

Applying knowledge and understanding

Given informal descriptions of specific software applications, students will be able to:

  • build precise models of their desired behavior, to better understand the involved problems
  • define test cases to verify that the implemented application works as desired
  • (for students who take the exam through a project) develop and test code that realizes the desired application


Students who take the exam through a project will learn to:

  • document the work they carried out
  • present their work to the teacher, explain and defend their design choices

Lifelong learning skills

Students who take the exam through a project will learn to find solutions – in full autonomy – to the unforeseen problems that arise in the development of new applications


Argomenti trattati

1. General principles of software engineering.

1.1 The qualities of software.
1.2 Basic principles of software engineering.
1.3 A brief summary of the software lifecycle.

2. The modular design of software.

2.1 UML-based design.
2.2 General principles of object-oriented design and implementation.

3. Notations for the specification of software.

3.1 Operational notations: finite-state automata, Statecharts, timed Petri nets.
3.2 Descriptive notations: logic specifications.

4. Software verification through testing.

4.1 Basic principles and definitions.
4.2 White-box testing: coverage criteria.
4.3 The specifications of programs through pre- and post-conditions. Black-box testing.

5. Examples of software development toolchains 


Exercise work
Part of the classes will focus on presenting and solving exercises concerning topics covered during lessons.


Students are expected to know the basics of computer programming.

Modalità di valutazione

The assessment is based on a written exam at the end of the course. The written exam is open book, and it will assign up to 34 points. 30 cum laude will be assigned when the total score is higher than 31.

Students can also opt to pass the exam by developing a software project (from requirements, down to implementation and testing), in which they are expected to apply in practice the principles and techniques described during classes. The software development project must be carried out in a team of 2 or 3 people. Students who develop the software project are asked to produce documentation concerning the application developed, and must present their work in a final oral exam.

The following table provides a detailed overview of the elements that will be considered in the various assessment activities.


Type of assessment


Dublin descriptor

Written test

Solution of numerical problems

  • Software testing and anlaysis exercises

Exercises focusing on design aspects

  • Definition of UML models from informal descriptions
  • Definition of formal models of behaviors informally described, using various formalisms






1, 2, 3, 4, 5

Assessment of laboratorial artefacts

  • Assessment of the design and implementation work carried out by students in groups

2, 3, 4, 5

Oral presentation

  • Assessment of the presentation of the work carried out by students in groups during the software development project

2, 3, 4, 5


Risorsa bibliografica obbligatoriaC. Ghezzi, M. Jazayeri, D. Mandrioli, Fundamentals of Software Engineering, Second Edition, Editore: Pearson Prentice Hall, Anno edizione: 2002

Also available in Italian

Risorsa bibliografica obbligatoriaCourse website http://home.deib.polimi.it/rossi/SE4A.html

Software utilizzato
Nessun software richiesto

Forme didattiche
Tipo Forma Didattica Ore di attività svolte in aula
Ore di studio autonome
Laboratorio Informatico
Laboratorio Sperimentale
Laboratorio Di Progetto
Totale 50:00 75:00

Informazioni in lingua inglese a supporto dell'internazionalizzazione
Insegnamento erogato in lingua Inglese
Disponibilità di materiale didattico/slides in lingua inglese
Disponibilità di libri di testo/bibliografia in lingua inglese
Possibilità di sostenere l'esame in lingua inglese
Disponibilità di supporto didattico in lingua inglese
schedaincarico v. 1.8.0 / 1.8.0
Area Servizi ICT