|Teoria||5||II semestre||Carlo Combi|
|Esercitazioni||1||II semestre||Barbara Oliboni|
|Teoria||Monday||4:30 PM - 6:30 PM||lesson||Lecture Hall A|
|Teoria||Tuesday||8:30 AM - 11:30 AM||laboratorio||Laboratory Delta|
|Teoria||Thursday||11:30 AM - 1:30 PM||lesson||Lecture Hall B|
The course introduces the basic scientific and professional notions of software engineering, addressing in particular the different phases of the software development process: planning, design, modeling and specification, implementation, testing and validation, evaluation, maintenance. The programming projects carried out in the lab complement the theory lectures with the design, documentation and realization of a software.
* Introduction to Software Engineering
-- Software life-cycles, phases and activities of the software development process.
-- Feasibility study, definition of requirements and constraints, use cases and scenarios.
-- Project management: planning, risk analysis and management, time and resources management.
* Requirement management and modeling
-- Ingegneria dei requisiti
-- Modelli di sistema
-- Specifiche dei Sistemi critici
-- Architectural design
-- Object-oriented design: the standard language UML 2 for software modeling: use case diagrams, class and package diagrams, activity and sequence diagrams.
-- Agile methods.
-- Scalability. Component-based design. Software reuse.
-- Design patterns: “Single Responsibility Principle”, “The Open/Closed Principle”, “The Liskov Substitution Principle”, “The Dependency Inversion Principle”, “The Interface Segregation Principle”.
* Verification, validation and software management
-- Testing: unit test, integration test, user acceptance test; white e black box test.
-- Version Management
The examination consists of a project relate to lab activities and of an oral examination.