Ingegneria del software
Anno accademico 2008-2009
AVVISO IMPORTANTE
Per informazioni aggiornate circa gli esami di
Ingegneria del software, si consulti il sito di
Architetture software.
Attenzione, alcune sezioni di questo sito potrebbero
riferirsi ancora all'edizione 2007-2008 del corso.
Avvisi
(È disponibile anche un elenco completo degli
avvisi.)
L'appello di settembre dell'esame di Ingegneria del software si svolgerà con il
seguente calendario:
- prova scritta: venerdì 11 settembre, ore 9:30, aula N10 - attenzione,
l'esame non sarà alle 9:00 come inizialmente previsto, ma è posticipato alle
ore 9:30 - si raccomanda comunque la massima puntualità (con riferimento
all'orario delle 9:30)
- orali - si svolgeranno in un sotto-insieme delle seguenti date, sulla
base di un calendario stabilito durante la prova scritta, anche sulla base
dell'ordine di prenotazione all'esame ed alle preferenze espresse dagli
studenti
- venerdì 11 settembre, ore 14:30
- martedì 15 settembre, ore 9:30
- martedì 15 settembre, ore 15:00
- mercoledì 16 settembre, ore 14:30
Per partecipare all'esame è necessario prenotarsi all'esame presso il sito
prenota.uniroma3.it.
La prenotazione va fatta entro quattro giorni lavorativi (che
corrispondono a circa una settimana effettiva) prima della data
dell'appello (vedi date indicate sopra).
Chi avesse problemi a prenotarsi presso il sito delle prenotazioni è invitato
caldamente a contattare il docente per posta elettronica entro gli stessi
termini.
Per motivi organizzativi, gli studenti non prenotati sul sito
prenota.uniroma3.it che non contatteranno il
docente entro 24 ore dall'esame non saranno ammessi all'esame stesso.
Introduzione al corso
Introduzione al
corso.
Premessa - che cos'è l'Ingegneria del software
La Guida al corpo della conoscenza sull'Ingegneria del software (SWEBOK)
definisce l'ingegneria del software come:
- L'applicazione di un approccio sistematico, disciplinato e quantificabile
allo sviluppo, l'esercizio e la manutenzione del software, ovvero,
l'applicazione dell'ingegneria al software.
- Lo studio degli approcci di cui al punto 1.
Lo SWEBOK inoltre identifica dieci aree della conoscenza relative
all'ingegneria del software (tra parentesi un esempio di argomento di interesse
per l'area):
- Requisiti del software (ad es., raccolta e specifica dei requisiti)
- Progettazione del software (ad es., progettazione orientata agli oggetti,
architetture software, progettazione architetturale, architettura dei
sistemi distribuiti, architetture applicative, ingegneria del software
basata su componenti)
- Costruzione del software (ad es., programmazione orientata agli oggetti)
- Verifica del software (ad es., tecniche di test)
- Manutenzione del software (ad es., reverse engineering)
- Gestione delle configurazioni del software (ad es., gestione e rilascio di
versioni del software)
- Gestione dell'ingegneria del software (ad es., pianificazione di progetti
software)
- Processi dell'ingegneria del software (ad es., definizione e gestione di processi
software, come ad esempio UP)
- Strumenti e metodi dell'ingegneria del software (ad es., strumenti CASE)
- Qualità del software (ad es., processi per la gestione della qualità del
software).
Molti dei corsi già offerti dal collegio didattico di
Ingegneria
informatica di Roma Tre già contribuiscono, in
diversa misura, allo studio di queste aree. Ad esempio, il corso di
Programmazione orientata agli oggetti riguarda l'area della Costruzione del
software, mentre quello di Analisi e progettazione del software riguarda
principalmente l'area della Progettazione del software, ma tocca anche le aree
dei Requisiti del software e dei Processi dell'ingegneria del software.
Questo corso di Ingegneria del software non ha la pretesa di studiare tutte
le aree della conoscenza dell'ingegneria del software. Si pone in modo
complementare rispetto agli altri corsi offerti dal collegio didattico di
Ingegneria informatica, nel senso che cerca di studiare contenuti diversi da
quelli affrontati negli altri corsi. Neanche in questo caso, però, ha la pretesa
di studiare tutte le aree scoperte rispetto all'attuale offerta didattica.
In particolare, rivestono un interesse particolare per il corso le tematiche
relative alle architetture software ed alla loro progettazione.
Obiettivo formativo
Il corso di Ingegneria del software ha l’obiettivo di presentare, in
generale, gli aspetti fondamentali, sia metodologici che tecnologici che
organizzativi, dell’ingegneria del software.
Ha inoltre l’obiettivo di presentare, in modo più specifico,
strumenti e metodologie relative alla progettazione di architetture
software e, in particolare, di architetture per sistemi software
distribuiti e di tipo enterprise.
Alla fine del corso lo studente dovrebbe sapere impostare un
progetto software, analizzandone dettagli e problematiche tecnologiche e
metodologiche, ed anche (in parte) organizzative.
Prerequisiti
Il corso non prevede specifici prerequisiti: tutto ciò che è stato studiato
sarà utile - ma niente indispensabile.
Un prerequisito molto importante è il corso di Analisi e progettazione del software.
Altri prerequisiti importanti sono i corsi di Sistemi informativi su web,
Sistemi operativi, Programmazione concorrente, Tecnologia delle
basi di dati. Utile Sicurezza dei sistemi informatici e delle reti.
Per questo motivo, la partecipazione al corso:
- è fortemente sconsigliata agli studenti della laurea triennale;
- è sconsigliata anche agli studenti del primo anno della laurea
magistrale - nel senso che possono fruire meglio di questo corso al secondo
anno.
È inoltre utile una buona conoscenza della lingua inglese.
Lezioni
Le lezioni del corso di Ingegneria del software si svolgeranno
- nel primo quarto (dal 1 ottobre al 12 novembre 2008), lunedì e giovedì,
dalle 9:45 alle 11:15, in aula N3
- nel secondo quarto (dal 1 dicembre 2008 al 23 gennaio 2009),
martedì e
venerdì lunedì e giovedì, dalle 9:45 alle 11:15, in aula N3
Argomenti delle lezioni
Attenzione, alcune informazioni in questa sezione del
sito potrebbero riferirsi ancora all'edizione 2007-2008 del corso.
Data |
Argomento |
Materiale didattico |
2 ottobre 2008 |
Introduzione al corso |
ids00 |
Introduzione all'ingegneria del software |
ids01 |
6 ottobre 2008 |
Introduzione alle architetture software |
as01 |
Architetture software: concetti |
as02
[IEEE 1471-2000] |
9 ottobre 2008 |
Architetture software: concetti |
|
Punti di vista e viste |
as03
[Kruchten 1995] |
Prospettive architetturali |
as04 |
16 ottobre 2008 |
Introduzione al middleware |
mw01
[Bakken 2003] |
Comunicazione
interprocesso e socket |
mw02
esempi: workspace Eclipse |
20 ottobre 2008 |
Processo di definizione dell'architettura |
as07 |
Requisiti e scenari - requisiti; casi d'uso |
as10 |
23 ottobre 2008 |
Requisiti e scenari - scenari
funzionali e non funzionali; applicare gli
scenari |
|
Stili architetturali e
pattern |
as11 |
27 ottobre 2008 |
Oggetti
distribuiti e invocazione remota - chiamata di procedure remote; oggetti
distribuiti; Java RMI; confronto tra RMI e socket; ulteriori aspetti (fino a
"gestione dello stato") |
mw03
esempi: workspace Eclipse |
30 ottobre 2008 |
POSA: Un catalogo di pattern
architetturali: introduzione; Domain Model; Layers; Domain Object |
pa01 |
3 novembre 2008 |
POSA: Un catalogo di pattern
architetturali: Pipes and Filters |
|
Oggetti distribuiti e invocazione remota - legame dei parametri |
|
|
|
|
6 novembre 2008 |
Architetture dei sistemi
distribuiti - introduzione; architetture Client-Server |
pa02 |
POSA: Un catalogo di pattern
architetturali: MVC (cenni); Shared Repository; Database
Access Layers |
|
10 novembre 2008 |
Architetture dei sistemi distribuiti -
architetture a oggetti distribuiti; Proxy; Broker |
|
POSA: Un catalogo di pattern
architetturali: Blackboard (cenni); Microkernel; Reflection |
|
|
|
|
1 dicembre 2008 |
Messaging |
mw04
esempi: workspace Eclipse |
4 dicembre 2008 |
Messaging (e integrazione di
applicazioni) |
pa03 |
10 dicembre 2008 |
Un catalogo di punti di vista |
as15 |
Punto di vista funzionale - introduzione al
punto di vista funzionale; interessi; modelli |
as16 |
11 dicembre 2008 |
Mini tutorial: modellazione di
processi |
t01 |
Punto di vista funzionale -
attività; problemi e insidie |
|
15 dicembre 2008 |
Introduzione a Java EE - introduzione alla piattaforma Java EE; Enterprise
Bean; session bean; message-driven |
mw05
esempi: workspace Eclipse |
18 dicembre 2008 |
Architetture basate su componenti |
pa04 |
Mini tutorial: UML components |
t02 |
|
|
|
8 gennaio 2009 |
Punto di vista delle
informazioni |
as17 |
12 gennaio 2009 |
Web Services |
mw06
esempi: workspace
NetBeans |
15 gennaio 2009 |
Service Oriented
Architecture |
pa05 |
|
questionari di valutazione
della didattica |
|
19 gennaio 2009 |
Service Oriented
Architecture - ESB |
|
Introduzione a Java EE - Java EE e qualità |
|
Prospettiva della disponibilità e
della resilienza |
as26 |
22 gennaio 2009 |
Prospettiva della
disponibilità e della resilienza |
|
|
|
|
|
Validazione dell'architettura (cenni) |
as14 |
|
Mini tutorial: ATAM |
t04 |
|
Mini tutorial: Web services
development lifecycle |
t03 |
|
Punto di vista della
concorrenza (cenni) |
as18 |
|
Punto di vista dello
sviluppo (cenni) |
as19 |
|
Punto di vista del
deployment (cenni) |
as20 |
|
|
|
Programma
Programma preliminare del corso di Ingegneria del software relativo all'anno
accademico 2008-2009.
- Panoramica sull’ingegneria del software
- introduzione all'ingegneria del software (dispensa ids01)
- processi software (dispensa ids02, articolo di Bohem)
- Architetture software: concetti
- introduzione alle architetture software (capitolo 1 di [SSA], dispensa as01)
- architetture software: concetti (capitolo 2 di [SSA], standard IEEE
1471-2000, dispensa as02)
- punti di vista e viste (capitolo 3 di [SSA], articolo di Kruchten,
dispensa as03)
- prospettive architetturali (capitolo 4 di [SSA], dispensa as04)
- Architetture software: processo
- processo di definizione dell'architettura (capitoli 5 (cenni) e 7 di
[SSA], dispensa as07)
- requisiti e scenari (capitoli 8 (cenni) e 10 di [SSA], dispensa
as10)
- creare la descrizione architetturale (capitoli 12 e
13 di [SSA], standard IEEE 1471-2000, dispensa as13)
- validazione dell'architettura (capitolo 14 di [SSA] (cenni),
dispensa as14)
- Architetture software: stili architetturali
- stili architetturali e pattern (capitolo 11 di [SSA], dispensa as11)
- POSA: un catalogo di stili architetturali (dispensa
pa01) - in dettaglio, ma solo cenni per quanto riguarda i seguenti stili
architetturali: MVC, Blackboard
- architetture dei sistemi distribuiti (dispensa pa02) - tranne
Peer-to-Peer
- messaging e integrazione di applicazioni (dispensa pa03)
- architetture basate su componenti (dispensa pa04)
- service oriented architecture (dispensa pa05)
- Architetture software: punti di vista
- un catalogo di punti di vista (capitoli 15 e 22 (cenni) di [SSA],
dispensa as15)
- punto di vista funzionale (capitolo 16 di [SSA], dispensa as16)
- punto di vista delle informazioni (capitolo 17 di [SSA], dispensa
as17)
- punto di vista della concorrenza (cenni) (capitolo 18 di [SSA], dispensa
as18)
- punto di vista dello sviluppo (cenni) (capitolo 19 di [SSA], dispensa as19)
- punto di vista del deployment (cenni) (capitolo 20 di
[SSA], dispensa as20)
- Architetture software: prospettive
- un catalogo di prospettive (capitolo 23 di [SSA],
dispensa as23)
- prospettiva della sicurezza (capitolo 24 di [SSA], dispensa as24,
articolo di Lampson)
- prospettiva della disponibilità e della resilienza (capitolo 26 di [SSA],
dispensa as26)
- Middleware
- introduzione al middleware (dispensa mw01, articolo
di Bakken)
- comunicazione interprocesso e socket (dispensa mw02)
- oggetti distribuiti e invocazione remota (dispensa mw03)
- messaging (dispensa mw04)
- introduzione a Java EE (dispensa mw05)
- web services (dispensa mw06)
- Mini tutorial
- modellazione di processi
(dispensa t01)
- UML components
(dispensa t02)
- Web Services development lifecycle (dispensa t03)
- ATAM, Architecture Tradeoff Analysis Method (dispensa t04)
Materiale didattico
Attenzione, alcune informazioni in questa sezione del
sito potrebbero riferirsi ancora all'edizione 2007-2008 del corso.
Libro di testo
- [SSA]
- Nick Rozanski e Eoin Woods
Software Systems Architecture
Addison Wesley, 2005, ISBN
0321112296
Articoli e presentazioni (in programma)
Altri articoli e presentazioni
Altro materiale didattico sarà predisposto facendo riferimento, tra l'altro,
anche ai seguenti libri:
Libri su architetture software
- [SAP/2e]
- Len Bass, Paul Clements, Rick Kazman
Software architecture in
practice (2nd edition)
Pearson, Addison Wesley, 2003
- [POSA]
- Frank Buchmann, Regine Meunier, Peter Sommerlad, Michael Stal
Pattern-oriented software architecture – a system of patterns
John
Wiley & Sons, 1996
- [POSA4]
- Frank Buchmann, Kevlin Henney, Douglas C. Schmidt
Pattern-oriented software architecture – a pattern language for distributed
computing
John Wiley & Sons, 2007
- [DSA]
- Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed
Little, Robert Nord, Judith Stafford
Documenting software architecture,
views and beyond
Addison Wesley, 2003
- [ESA]
- Paul Clements, Rick Kazman, Mark Klein
Evaluating software
architectures - methods and case studies
Addison Wesley, 2002
- [Gorton]
- Ian Gorton
Essential software architecture
Springer, 2006
-
- [Cheesman&Daniels]
- J. Cheesman, J. Daniels
UML Components - un semplice processo per
la specifica di software basato su componenti
Addison-Wesley, 2002
- [Papazoglou]
- Michael P. Papazoglou
Web services: Principles and Technology
Pearson Education, 2008
- [ACKM]
- Gustavo Alonso, Fabio Casati, Harumi Kuno, Vijay Machiraju
Web
Services, concepts, architectures and applications
Springer-Verlag, 2004
- [DEA/2e]
- Inderjeet Singh, Beth Stearns, Mark Johnson and the Enterprise Team
Designing Enterprise Applications with the J2EE Platform (second edition)
Addison-Wesley, 2002
Libri su sistemi distribuiti e tecnologie enterprise
- [CDK/4e]
- George Coulouris, Jean Dollimore, Tim Kindberg
Distributed systems, concepts
and design (4th edition)
Pearson, Addison Wesley, 2005
- [EIP]
- Gregor Hohpe, Bobby Woolf
- Enterprise Integration Patterns - Designing, Building, and Deploying
Messaging Solutions
Addison-Wesley, 2004
- [Liu]
- M. L. Liu
- Distributed Computing - Principles and Applications
Pearson Education,
2004
- [Mastering EJB/4ed]
- Rima Patel Sriganesh, Gerald Brose, Micah Silverman
Mastering Enterprise JavaBeans 3.0 (4th edition)
Wiley, 2006
Libri sulla progettazione orientata agli oggetti
- [GoF]
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Design Pattern - Elementi per il riuso di software a oggetti
Addison-Wesley, 2002
- [Larm/3e]
- Craig Larman
Applicare UML e i pattern - Analisi e progettazione orientata agli
oggetti
Terza edizione
Pearson Education Italia, 2005
Libri sull'ingegneria del software
- [Binato]
- Annalisa Binato, Alfonso Fuggetta, Laura Sfardini
Ingegneria del software - creatività e
metodo
Pearson Education Italia, 2006
- [Ghezzi/2e]
- Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli
Ingegneria del software -
fondamenti e principi (seconda edizione)
Pearson Education
Italia, 2004
- [Press/6e]
- Roger S. Pressman
Software
engineering, a practitioner's approach (6th edition)
McGraw-Hill Higher Education, 2004
in italiano: Principi di ingegneria del software (quarta edizione)
McGraw-Hill, 2005
- [Somm/7e]
- Ian Sommerville
Software
engineering (7th edition)
Pearson, Addison Wesley, 2004
in italiano: Ingegneria del software (settima edizione)
Pearson Education Italia, 2005
Sito web del corso
Newsgroup del corso
Esami
Attenzione, alcune informazioni in questa sezione del
sito potrebbero riferirsi ancora all'edizione 2007-2008 del corso.
L'esame di Ingegneria del software consiste di:
- una prova scritta (circa 20 punti), della durata di circa 80 minuti - a cui
verrà chiesto di rispondere a due domande (da scegliere su tre)
- una prova orale (circa 10 punti), comprendente anche una discussione della prova scritta,
nonché due/tre domande
Le date previste per le prove scritte dell'esame di Ingegneria del software
sono:
- 12 febbraio 2009
- 30 giugno 2009
- 11 settembre 2009
Per partecipare all'esame è necessario prenotarsi all'esame presso il sito
prenota.uniroma3.it.
La prenotazione va fatta entro quattro giorni lavorativi (che
corrispondono a circa una settimana effettiva) prima della data
dell'appello (vedi date indicate sopra).
Chi avesse problemi a prenotarsi presso il sito delle prenotazioni è invitato
caldamente a contattare il docente per posta elettronica entro gli stessi
termini.
Per motivi organizzativi, gli studenti non prenotati sul sito
prenota.uniroma3.it che non contatteranno il
docente entro 24 ore dall'esame non saranno ammessi all'esame stesso.
Testi di prove d'esame di appelli conclusi
Non sono disponibili testi d'esame di appelli conclusi.