INGEGNERIA DEL SOFTWARE
A.A. | CFU |
---|---|
2011/2012 | 12 |
Docente | Ricevimento studentesse e studenti | |
---|---|---|
Edoardo Bontà | su appuntamento |
Assegnato al Corso di Studio
Giorno | Orario | Aula |
---|
Obiettivi Formativi
Il corso presenta le metodologie, le tecniche e gli strumenti fondamentali per la gestione delle varie fasi del processo di sviluppo di sistemi software complessi, con particolare riferimento al paradigma di progettazione e programmazione orientato agli oggetti.
English version: The objective of this course is to illustrate the main methodologies, techniques, and tools for complex software systems development process management, with particular emphasis on object oriented design and programming paradigm.
Programma
01. Fondamenti di ingegneria del software
01.01 Concetti di base dell'ingegneria del software.
01.02 La qualità del software.
01.03 Il processo di sviluppo software.
02. Analisi e progettazione ad oggetti
02.01 Il paradigma ad oggetti.
02.02 Introduzione alla modellazione del software.
02.03 Unified Process.
03. Unified modeling language (UML)
03.01 Introduzione a UML.
03.02 Diagrammi di struttura: classi, oggetti, package.
03.03 Diagrammi di comportamento: casi d’uso.
03.04 Analisi di robustezza e interazione fra entità.
03.05 Diagrammi di interazione: comunicazione, sequenza.
03.06 Macchine a stati, attività e altri diagrammi.
04. Programmazione ad oggetti: il linguaggio C++
04.01 Concetti di base di C++.
04.02 Classi e oggetti.
04.03 Sovraccarico di operatori.
04.04 Ereditarietà.
04.05 Funzioni virtuali e polimorfismo.
04.06 Template.
04.07 Gestione delle eccezioni.
04.08 Introduzione alla Standard Library.
05. Introduzione al linguaggio Java
05.01 Principali differenze tra Java e C++.
05.02 Interfacce e polimorfismo.
05.03 Package.
05.04 Programmi stand-alone e applet.
06. Design pattern
06.01 Introduzione ai design pattern.
06.02 Pattern creazionali: Singleton, Factory.
06.03 Pattern strutturali: Proxy.
06.04 Pattern comportamentali: Observer, Visitor.
07. Metodi di ingegneria del software
07.01 Analisi dei requisiti.
07.02 Principi di progettazione del software.
07.03 Tecniche di collaudo del software.
07.04 Metriche del software.
08. Gestione di progetti software
08.01 Pianificazione del progetto software.
08.02 Stime di progetto.
08.03 Analisi e gestione dei rischi.
08.04 Pianificazione temporale.
08.05 Gestione delle configurazioni software.
08.06 La documentazione di progetto.
08.07 Strumenti CASE.
09. Argomenti avanzati
09.01 I metodi formali.
09.02 Ingegneria del software "cleanroom".
09.03 Reingegnerizzazione.
10. Attività di laboratorio
10.01 C++: classi e oggetti.
10.02 C++: gestione della memoria e sovraccarico di operatori.
10.03 C++: funzioni virtuali e polimorfismo.
10.04 C++: gestione eccezioni e utilizzo della Standard Library.
10.05 C++: implementazione di interfacce grafiche.
10.06 C++: design pattern.
10.07 Java: compilazione/esecuzione programmi.
10.08 Java: programmi stand-alone e applet, file archivio "jar".
English version:
01. Software Engineering Fundamentals
01.01 Basic concepts of Software Engineering.
01.02 Software quality.
01.03 Software development process.
02. Object Oriented Analysis and Design
02.01 The object oriented paradigm.
02.02 Introduction to software modeling.
02.03 Unified process.
03. Unified Modeling Language (UML)
03.01 Introduction to UML.
03.02 Structure diagrams: classes, objects, and packages.
03.03 Behavior diagrams: use case.
03.04 Robustness analysis and interactions among entities.
03.05 Interaction diagrams: communication, sequence.
03.06 State machine, activity, and other diagrams.
04. Object Oriented Programming: Language C++
04.01 Basic concepts of C++.
04.02 Classes and objects.
04.03 Operator overloading.
04.04 Inheritance and derived classes.
04.05 Polymorphism and virtual functions.
04.06 Templates.
04.07 Exception handling.
04.08 Introduction to the Standard Library.
05. Introduction to Java
05.01 Main differences between Java and C++.
05.02 Interfaces and polymorphism.
05.03 Packages.
05.04 Stand-alone programs and applets.
06. Design Patterns
06.01 Introduction to design patterns.
06.02 Creational patterns: Singleton, Factory.
06.03 Structural patterns: Proxy.
06.04 Behavioral patterns: Observer, Visitor.
07. Methods for Software Engineering
07.01 Requirements analysis.
07.02 Principles of software design.
07.03 Software testing techniques.
07.04 Software metrics.
08. Software Project Management
08.01 Software project planning.
08.02 Project estimation.
08.03 Risk analysis and management.
08.04 Project scheduling.
08.05 Software configuration management.
08.06 Project documentation.
08.07 CASE tools.
09. Advanced Topics
09.01 Formal methods.
09.02 Cleanroom software engineering.
09.03 Reengineering.
10. Lab and Practice
10.01 C++: classes and objects.
10.02 C++: memory management and operator overloading.
10.03 C++: virtual functions and polymorphism.
10.04 C++: exception handling and Standard Library.
10.05 C++: graphical interfaces implementation.
10.06 C++: design pattern.
10.07 Java: compiling and running programs.
10.08 Java: stand-alone programs and applets, archive file "jar".
Eventuali Propedeuticità
Programmazione degli Elaboratori, Algoritmi e Strutture Dati.
Modalità Didattiche, Obblighi, Testi di Studio e Modalità di Accertamento
- Modalità didattiche
Lezioni teoriche ed esercitazioni di laboratorio, sia in presenza che a distanza.
English version: Theory lectures and laboratory exercises, both face-to face and on-line.
- Testi di studio
Pressman, "Software Engineering: A Practitioner's Approach", McGraw-Hill, 2009.
(Pressman, "Principi di Ingegneria del Software", McGraw-Hill, 2008.)
Fowler, "UML Distilled", Addison-Wesley, 2003.
(Fowler, "UML Distilled", Pearson Italia (Addison-Wesley), 2010.)
Stroustrup, "The C++ Programming Language", Addison-Wesley, 1997.
(Stroustrup, "C++: Linguaggio, Libreria Standard, Principi di Programmazione", Pearson Italia (Addison-Wesley), 2000.)
Schildt, "Java: The Complete Reference", McGraw-Hill, 2006.
(Schildt, "Java(TM) - La Guida Completa", McGraw-Hill, 2007.)
Gamma, Helm, Johnson, Vlissides, "Design Patterns: Elements of Reusable Object-Oriented Software", Addison-Wesley, 1995.
(Gamma, Helm, Johnson, Vlissides, "Design Patterns: Elementi per il riuso di software ad oggetti", Pearson Italia (Addison-Wesley), 2002.)
- Modalità di
accertamento Progetto individuale, prova scritta e prova orale.
English version: Individual project, written exam, and oral exam.
- Disabilità e DSA
Le studentesse e gli studenti che hanno registrato la certificazione di disabilità o la certificazione di DSA presso l'Ufficio Inclusione e diritto allo studio, possono chiedere di utilizzare le mappe concettuali (per parole chiave) durante la prova di esame.
A tal fine, è necessario inviare le mappe, due settimane prima dell’appello di esame, alla o al docente del corso, che ne verificherà la coerenza con le indicazioni delle linee guida di ateneo e potrà chiederne la modifica.
Note
Il corso è erogato sia in presenza che a distanza nel Corso di Laurea di Informatica Applicata.
English version: The course is offered both face-to-face and on-line within the Laurea Degree Program in Applied Computer Science.
« torna indietro | Ultimo aggiornamento: 07/01/2012 |