Software Ingeneering

A.Y. 2018/2019
12
Max ECTS
120
Overall hours
SSD
INF/01
Language
Italian
Learning objectives
This course presents the fundamental principles and practices for designing and implementing software applications. The course is organized in two parts: the fundamentals of software engineering and the model-driven design. The first part provides basic knowledge on the design and analyses of software by testing and static analyses techniques. The second part introduces current model-based design methodologies, the concepts of PIMs (platform independent models) and PSMs (platform specific models), the use of model transformations, and the design pattern for component -based systems development.
Expected learning outcomes
At the end of the course students are able to address the design and documentation of medium-size software projects, and to diel with security aspects of software design. Students acquire skills on developing complete UML models, developing Java code from models, and performing code testing.
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

Linea Crema

Lesson period
First semester
Unità didattica A - lezioni
Course syllabus
1. SOFTWARE LIFE CYCLE. Software properties. Software development steps. Life cycle models. Security in the software life cycle. The vulnerability cycle.
2. SOFTWARE ARCHITECTURE. Principles of architecture. Security architecture guide lines.
3. DESIGN OF SOFTWARE. Properties of secure software models. Specification methods. Finite state machines. Communicating Machines. Design by contract. Il Java Modeling Language tool.
4. IMPLEMENTATION. Good and bad implementation practices. Security level of programming languages. Security violations in C code. Secure C code. An introduction to the Java Language. The Java sandbox case study. From models to code: finite state machines in Java.
5. TESTING. The testing activity within the software life cycle. Kinds of testing. Validation and verification techniques. Testing limits. Program-based testing. Program flow chart. Statement coverage, branch coverage, decision and condition coverage. MCC and MCDC methods. Tools Emma and JUnit.
6. MODEL-DRIVEN ENGINEERING. Principles of the MDE. Models and meta-models. Application contexts of the MDE: MDA (model-driven architecture), UML profiles for Domain-Specific Languages specification.
7. UML MODELLING: STRUCTURAL SPECIFICATION. Class diagrams and object diagrams. Constraint specification in OCL. Design patterns.
8. MODELLAZIONE UML: SPECIFICA COMPORTAMENTALE. Interaction diagrams, state machines, activity diagrams.
9. UNIFIED PROCESS AND ARCHITECTURE DESIGN. Process UP. SW architecture design. UML architecture: component diagram and deployment diagram. Architectural Patterns.
Unità didattica B - laboratorio
Course syllabus
1. SOFTWARE LIFE CYCLE. Software properties. Software development steps. Life cycle models. Security in the software life cycle. The vulnerability cycle.
2. SOFTWARE ARCHITECTURE. Principles of architecture. Security architecture guide lines.
3. DESIGN OF SOFTWARE. Properties of secure software models. Specification methods. Finite state machines. Communicating Machines. Design by contract. Il Java Modeling Language tool.
4. IMPLEMENTATION. Good and bad implementation practices. Security level of programming languages. Security violations in C code. Secure C code. An introduction to the Java Language. The Java sandbox case study. From models to code: finite state machines in Java.
5. TESTING. The testing activity within the software life cycle. Kinds of testing. Validation and verification techniques. Testing limits. Program-based testing. Program flow chart. Statement coverage, branch coverage, decision and condition coverage. MCC and MCDC methods. Tools Emma and JUnit.
6. MODEL-DRIVEN ENGINEERING. Principles of the MDE. Models and meta-models. Application contexts of the MDE: MDA (model-driven architecture), UML profiles for Domain-Specific Languages specification.
7. UML MODELLING: STRUCTURAL SPECIFICATION. Class diagrams and object diagrams. Constraint specification in OCL. Design patterns.
8. MODELLAZIONE UML: SPECIFICA COMPORTAMENTALE. Interaction diagrams, state machines, activity diagrams.
9. UNIFIED PROCESS AND ARCHITECTURE DESIGN. Process UP. SW architecture design. UML architecture: component diagram and deployment diagram. Architectural Patterns.
Unità didattica C - lezioni
Course syllabus
1. SOFTWARE LIFE CYCLE. Software properties. Software development steps. Life cycle models. Security in the software life cycle. The vulnerability cycle.
2. SOFTWARE ARCHITECTURE. Principles of architecture. Security architecture guide lines.
3. DESIGN OF SOFTWARE. Properties of secure software models. Specification methods. Finite state machines. Communicating Machines. Design by contract. Il Java Modeling Language tool.
4. IMPLEMENTATION. Good and bad implementation practices. Security level of programming languages. Security violations in C code. Secure C code. An introduction to the Java Language. The Java sandbox case study. From models to code: finite state machines in Java.
5. TESTING. The testing activity within the software life cycle. Kinds of testing. Validation and verification techniques. Testing limits. Program-based testing. Program flow chart. Statement coverage, branch coverage, decision and condition coverage. MCC and MCDC methods. Tools Emma and JUnit.
6. MODEL-DRIVEN ENGINEERING. Principles of the MDE. Models and meta-models. Application contexts of the MDE: MDA (model-driven architecture), UML profiles for Domain-Specific Languages specification.
7. UML MODELLING: STRUCTURAL SPECIFICATION. Class diagrams and object diagrams. Constraint specification in OCL. Design patterns.
8. MODELLAZIONE UML: SPECIFICA COMPORTAMENTALE. Interaction diagrams, state machines, activity diagrams.
9. UNIFIED PROCESS AND ARCHITECTURE DESIGN. Process UP. SW architecture design. UML architecture: component diagram and deployment diagram. Architectural Patterns.
Unità didattica D - laboratorio
Course syllabus
1. SOFTWARE LIFE CYCLE. Software properties. Software development steps. Life cycle models. Security in the software life cycle. The vulnerability cycle.
2. SOFTWARE ARCHITECTURE. Principles of architecture. Security architecture guide lines.
3. DESIGN OF SOFTWARE. Properties of secure software models. Specification methods. Finite state machines. Communicating Machines. Design by contract. Il Java Modeling Language tool.
4. IMPLEMENTATION. Good and bad implementation practices. Security level of programming languages. Security violations in C code. Secure C code. An introduction to the Java Language. The Java sandbox case study. From models to code: finite state machines in Java.
5. TESTING. The testing activity within the software life cycle. Kinds of testing. Validation and verification techniques. Testing limits. Program-based testing. Program flow chart. Statement coverage, branch coverage, decision and condition coverage. MCC and MCDC methods. Tools Emma and JUnit.
6. MODEL-DRIVEN ENGINEERING. Principles of the MDE. Models and meta-models. Application contexts of the MDE: MDA (model-driven architecture), UML profiles for Domain-Specific Languages specification.
7. UML MODELLING: STRUCTURAL SPECIFICATION. Class diagrams and object diagrams. Constraint specification in OCL. Design patterns.
8. MODELLAZIONE UML: SPECIFICA COMPORTAMENTALE. Interaction diagrams, state machines, activity diagrams.
9. UNIFIED PROCESS AND ARCHITECTURE DESIGN. Process UP. SW architecture design. UML architecture: component diagram and deployment diagram. Architectural Patterns.
Unità didattica A - lezioni
INF/01 - INFORMATICS - University credits: 4.5
Lessons: 36 hours
Unità didattica B - laboratorio
INF/01 - INFORMATICS - University credits: 1.5
Laboratories: 24 hours
Professor: Ciriani Valentina
Unità didattica C - lezioni
INF/01 - INFORMATICS - University credits: 4.5
Lessons: 36 hours
Unità didattica D - laboratorio
INF/01 - INFORMATICS - University credits: 1.5
Laboratories: 24 hours
Professor: Bellandi Valerio
Professor(s)
Reception:
On appointment
room 7008
Reception:
By appointment only
Dipartimento di Informatica - Via Celoria 18 - 20135 - Milano (MI)
Reception:
on appointment
Dept. of Computer Science