INGEGNERIA ELETTRICA ELETTRONICA E INFORMATICAComputer EngineeringAcademic Year 2022/2023

1001224 - INGEGNERIA DEL SOFTWARE A - Z

Teacher: Orazio TOMARCHIO

Expected Learning Outcomes

The course covers the principles, methods and main tools of Software Engineering, a discipline dedicated to the study of methodologies, techniques and tools used in the development of large scale software systems. The learning objectives are as follows:

Knowledge and understanding

Applying knowledge and understanding

Making judgements

Communication skills

Learning skills

Course Structure

The main teaching methods are as follows: 

Further, the teacher assigns homeworks to students' groups to be solved independently and to be discussed in the classroom.

Should teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, in line with the programme planned and outlined in the syllabus.

Required Prerequisites

Detailed Course Content

  1.   Introduction to Software Engineering
    • Origins and motivations of Software Engineering. Basic definitions. Software life cycle. Software process model: waterfall, incremental, iterative/evolutionary, prototypal, spiral, unified process.
  2. Software requirements
    • Functional and non-functional requirements. Requirement analysis and specification. Requirements engineering processes. Documenting requirements. Requirements validation. 
  3. Software design
    • Software design methodologies: top-down, structural methods, functional and object oriented strategies. Design quality: cohesion, coupling, software metrics. Architectural design. Architectural patterns. Object oriented analysis and design. 
  4. UML software modeling 
    • Introduction to UML (Unified Modeling Language). UML and software life cycle. Requirements modeling with use cases. Class diagrams. Sequence and communication diagrams. State diagrams. Activity diagrams. Component and deployment diagrams. Case tools supporting UML.
  5. Design pattern 
    • The role of design patterns in the design and development of software systems. Creational, structural and behavioral patterns. 
  6. Verification and validation 
    • Quality controls of software products: verification and validation. Software testing. Black-box and white-box testing. Test cases. Equivalence partitioning. JUnit.
  7. Software development management 
    • Software configuration management. Configuration item, versioning, configurations, repository. Versioning tools (CVS, SVN, Git). Build, release and branch management.

Textbook Information

Course Planning

 SubjectsText References
1Introduzione all'Ingegneria del Software[SOM] Cap. 1
2Overview Analisi e Progettazione orientata agli oggetti[LAR] Cap. 1
3Ciclo di vita e Processi di sviluppo del Software[LAR] Cap. 2 e 3 - [FOW] Cap. 2
4La modellazione del software. Introduzione a UML[FOW] Cap. 1
5Generalità sulla fase di ideazione[LAR] Cap. 4 e 5
6Requisiti[LAR] Cap. 6 - [SOM] Cap. 6
7Casi d'uso[LAR] Cap. 7 - [FOW] Cap. 9
8Ulteriori Elaborati sui requisiti[LAR] Cap. 8
9La fase di elaborazione[LAR] Cap. 10-11
10Modelli di Dominio[LAR] Cap. 12 - [FOW] Cap. 3
11Diagrammi di sequenza di sistema[LAR] Cap. 13
12Contratti delle Operazioni[LAR] Cap. 14
13Verso la Progettazione. Cenni su Architetture Software[LAR] Cap. 15-16-17
14Diagrammi di Interazione in UML[LAR] Cap. 18 - [FOW] Cap. 4-12
15Diagrammi delle Classi in UML[LAR] Cap. 19 - [FOW] Cap. 3-5
16Pattern GRASP: progettazione di oggetti con responsabilità[LAR] Cap. 20
17Esempi di progettazione di oggetti con i pattern GRASP[LAR] Cap. 21
18Trasformare i progetti in codice[LAR] Cap. 22 - 23
19Dall'iterazione 1 all'iterazione 2[LAR] Cap. 26 - 27
20Ulteriori pattern GRASP[LAR] Cap. 28
21Raffinamento Modello di Dominio[LAR] Cap. 34 - [FOW] Cap. 5
22Diagrammi di attività in UML[LAR] Cap. 31 - [FOW] Cap. 11
23Diagrammi di macchina a stati in UML[LAR] Cap. 32 - [FOW] Cap. 10
24Introduzione ai Design Pattern GoF[GAM] Cap. 1
25Pattern creazionali[GAM] Cap. 3
26Pattern strutturali[GAM] Cap. 4
27Pattern comportamentali[GAM] Cap. 5
28Esempi sui pattern[LAR] Cap. 29
29Correlare i casi d'uso. Use Case Diagram in UML[LAR] Cap. 33 - [FOW] Cap. 9
30Diagrammi di deployment e dei componenti in UML [LAR] Cap. 41 - [FOW] Cap. 8-14
31Introduzione al testing del SoftwareDispense del docente - [SOM] Cap. 22
32Criteri di testingDispense del docente - [SOM] Cap. 23
33Automazione dei testDispense del docente
34JUnitDispense del docente
35Gestione della configurazione del software.
Sistemi di controllo delle versioni
Dispense del docente
36SVNDispense del docente
37GitDispense del docente
38Evoluzione dei sistemi distribuiti e tecnologie di middlewareDispense del docente

Versione in italiano