Software Engineering
Professor | Ghezzi Carlo Pezzè Mauro |
Course program | MSc |
Year | 1 |
Semester | Fall |
Category | Fundamental |
ECTS | 6 |
Academic year | 2013/2014 |
Course type: Lecture
Value in ECTS: 6
Academicyear 2013/2014 - Fall semester
Objectives
Software engineering is the discipline of building software in a methodical way to ensure that software satisfies its users’ needs, is 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 methodsin software development.
Contents
- Software lifecycle models. Project planning and management. Standards.
- Maturity models.
- Requirements elicitation and specification.
- Notations and models for formal specification: state machines and Statecharts, Petri nets, declarative descriptions (Alloy).
- Verification: testing, analysis, model checking
Teaching mode
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.
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.
M. Jackson, Software Requirements and Specification: A Lexicon of Software Practice, Principles, and Prejudices, Addison Wesley 2000.
M. Jackson, Problem Frames: Analyzing and Structuring Software Development Problems, Addison Wesley, 2000.
Additional material (course slides, research papers, drafts) will be made available by the instructures.