|Unit||Credits||Academic sector||Period||Academic staff|
The course introduces the basic scientific and professional notions of software engineering, addressing in particular the different phases (planning, design, validation and testing, and maintenance) of the software development process.
The course introduces the design and development of software systems. Via the development and implementation of prototypical concrete software projects, the students will learn a number of advanced techniques for the development of object-oriented software systems.
- Introduction to software engineering:
-- Software: product and process.
-- Quality attributes.
-- Software life-cycles.
-- Phases and activities of the software development process.
-- Models of the software life-cycle.
- Planning of the development process:
-- Feasibility study.
-- Definition of requirements and constraints.
-- Risk management.
-- Production control.
-- Configuration management.
-- Project administration.
- Software development:
-- Requirements elicitation and analysis.
-- Rapid prototyping.
-- Specification and implementation.
-- Component-based design.
-- Standards for implementation and documentation.
- The standard language UML 2 for software modeling (notation and main diagram types).
- Software verification, validation and testing:
-- Validation methods and strategies.
-- Testing methods and strategies (unit, integration, functional, and system testing).
-- Testing methods and strategies for object-oriented software.
-- Validation and testing metrics.
-- Software metrics.
-- Cost models and estimation.
-- Resource estimation and allocation in software projects.
-- Quality design.
-- Standards ISO 9001, 9000-3, 9126.
The course covers the motivation and benefits of design patterns for object-oriented programming.
After an introduction to design patterns, the course will consider a number of example problems in order to provide a detailed analysis of the software development process and the application of design patterns (in particular, patterns such as Strategy, Observer, State, Adapter, and Abstract Factory). The examples will also provide a means to focus on the definition and use of the main principles of object-oriented programming.
The use of Java for the programming projects will allow students to gather the experience required to apply design patterns.
The examination consists of a written test, for which the students obtain 4 credits, which will be added to the 1 credit the students obtain when they complete the laboratory course (for which the examination consists of the completion of a number of projects, which the students can carry out in small groups of 3 o 4 students).
The written test must be taken without the help of notes, books, or other documentation. The teacher may decide to replace the written test with an oral examination, especially whenever it is not possible to make sure that the students cannot access this documentation.