Software engineering

A.Y. 2016/2017
Overall hours
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
Course syllabus and organization

Linea Milano

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
- Agile Methodologies
- eXtreme Programming
- open source software process peculiarities

- 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