ALaRI Hang Glider

Search form

Education and Innovation in Embedded Systems Design

USI Università della Svizzera italiana, USI Faculty of Informatics, Advanced Learning and Research Institute USI Università della Svizzera italiana USI Faculty of Informatics USI Advanced Learning and Research Institute

Software Engineering

Professor Ghezzi Carlo
Course program MSc
Year 1
Semester Fall
Category Elective
Academic year 2016/2017


Software engineering is the discipline of building software in a methodical way to ensure that the product satisfies its users' needs, is correct (or, more generally, dependable) and maintainable. The course teaches the students how to organize software development projects, how to analyze and specify software requirements, and how to verify software. The course will focus on the use of formal models and methods in software development.

  1. Software lifecycle models. Project planning and management. Cost estimation. Standards. Maturity models.
  2. Requirements elicitation and specification. 
  3. Notations and models for formal specification: state machines and Statecharts, Petri nets, declarative descriptions (Alloy).
  4. Verification: testing, formal program verification, model checking.

The course will be based on lectures and exercise sessions.

The students will also be given assignments, which will be presented and discussed in class.


  • C. Ghezzi, M. Jazayeri, D. Mandrioli, Fundamentals of Software Engineering, 2nd Edition, Prentice Hall, 2002.
  • A. van Lamsweerde, Requirements Engineering, J. Wiley & Sons, 2009.
    M. Pezzè, M. Young, Software Testing and Analysis: Process, Principles and Techniques, J. Wiley & Sons, 2007.
  • D. Jackson, Software Abstractions: Logic, Language, and Analysis, MIT Press, 2006.

Additional material (course slides, research papers, drafts) will be made available by the instructors.