Software Engineering
A.Y. 2018/2019
Learning objectives
Knowledge of models and tools for the analysis, design, development, and testing of software systems. Ability to design, develop, and test software systems
Expected learning outcomes
Undefined
Lesson period: Second semester
Assessment methods: Esame
Assessment result: voto verbalizzato in trentesimi
Single course
This course cannot be attended as a single course. Please check our list of single courses to find the ones available for enrolment.
Course syllabus and organization
Milan
Responsible
Lesson period
Second semester
Course syllabus
It is composed of four parts:
Software development processes:
- Qualities of software
- Activities characterizing the life cycle of software development
- Models of life cycle of software development
- Unified Process
- CMMI
- Agile Methodologies
- eXtreme Programming
- open source software process peculiarities
Design:
- object oriented design model
- Polimorfism and Dinamic Binding
- Objects' relations
- Identificatino of classes
- UML diagrams: Class, Sequence, State, Object, UseCase, Activity, Component, Deployment
- Patterns: Observer, Decorator, Strategy, Singleton, Factory, Adapter, Composite, Facade, State, Command, Model-View-Controller
Verification and Validation:
- Introduction to Verification and Validation
- Static vs Dynamic Analysis
- testing Coverage criteria: command, decision, condition, path, modified conditions, cycles' k-coverage
- structural testing
- test doubles: stub, mock, spy, e fake objects
- functional Testing
- Data-Flow Analysis
- Mutation Analysis
- Debugging
- Fagan Code Inspection
Formal Specification:
- Petri nets
- Formal definition
- Transitions' relation: Sequence, Conflict, Concurrency
- Net properties: Boundedness, Conservativeness
- Petri Nets' Dynamic analysis: reachability set, reachability Tree, Coverability Tree
- Petri Nets' Static Analysis: P and T invariants
- Timed Petri Nets: TB nets and possible time semantics
- Timed Petri Nets' Analysis: Symbolic reachability Tree
Software development processes:
- Qualities of software
- Activities characterizing the life cycle of software development
- Models of life cycle of software development
- Unified Process
- CMMI
- Agile Methodologies
- eXtreme Programming
- open source software process peculiarities
Design:
- object oriented design model
- Polimorfism and Dinamic Binding
- Objects' relations
- Identificatino of classes
- UML diagrams: Class, Sequence, State, Object, UseCase, Activity, Component, Deployment
- Patterns: Observer, Decorator, Strategy, Singleton, Factory, Adapter, Composite, Facade, State, Command, Model-View-Controller
Verification and Validation:
- Introduction to Verification and Validation
- Static vs Dynamic Analysis
- testing Coverage criteria: command, decision, condition, path, modified conditions, cycles' k-coverage
- structural testing
- test doubles: stub, mock, spy, e fake objects
- functional Testing
- Data-Flow Analysis
- Mutation Analysis
- Debugging
- Fagan Code Inspection
Formal Specification:
- Petri nets
- Formal definition
- Transitions' relation: Sequence, Conflict, Concurrency
- Net properties: Boundedness, Conservativeness
- Petri Nets' Dynamic analysis: reachability set, reachability Tree, Coverability Tree
- Petri Nets' Static Analysis: P and T invariants
- Timed Petri Nets: TB nets and possible time semantics
- Timed Petri Nets' Analysis: Symbolic reachability Tree
INF/01 - INFORMATICS - University credits: 12
Laboratories: 48 hours
Lessons: 72 hours
Lessons: 72 hours
Professors:
Bellettini Carlo Nicola Maria, Monga Mattia
Shifts:
Professor:
Bellettini Carlo Nicola Maria
Turno A
Professor:
Bellettini Carlo Nicola MariaTurno B
Professor:
Monga MattiaProfessor(s)