Search for contacts, projects,
courses and publications

Software Engineering

People

Ghezzi C.

Course director

Mocci A.

Course director

Xin R.

Assistant

Description

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.

 

REFERENCES

  • 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.

Education