Architetture software
Anno accademico 2009-2010
Avvisi
(È disponibile anche un elenco completo degli
avvisi.)
Alcune informazioni circa lo svolgimento degli esami di Architetture software
e Ingegneria del software nel mese di febbraio 2010:
- tutti gli studenti che intendono sostenere l'esame di Architetture
software e Ingegneria del software nella sessione di febbraio 2010 devono
prenotarsi tramite i canali consueti (portale dello studente oppure
prenota.uniroma3.it) entro 4 giorni lavorativi dalla prova scritta del 4
febbraio - oppure, per posta elettronica entro, al più, mercoledì 3 febbraio
ore 12:00
- gli orali si svolgeranno orientativamente nelle seguenti date:
- ci sarà un primo turno di orali, nelle
seguenti date: giovedì 4 (subito dopo lo scritto, ma solo
per pochi studenti), venerdì 5 mattina e pomeriggio, lunedì
8 mattina, martedì 9 mattina, e (forse) mercoledì 10 mattina
- ci sarà inoltre un secondo turno di
orali, orientativamente nelle seguenti date: mercoledì 17,
giovedì 18 e venerdì 19
- tutti gli studenti che si prenotano all'esame sono invitati a
contattarmi entro la data di mercoledì 3 febbraio per posta elettronica per
comunicarmi le seguenti informazioni (tutte in un singolo messaggio)
- se lo studente intende sostenere l'orale nel primo turno
oppure nel secondo turno - vi prego di NON comunicarmi un
giorno particolare in cui volete sostenere l'orale, poiché
non terrei in considerazione questa informazione in questo
momento - le preferenze per lo svolgimento degli orali
potranno essere espresse durante la prova scritta
- se lo studente è di Ingegneria del software (ord. 509),
se intende sostenere l'esame con il programma dell'ultima
edizione del corso di Ingegneria del software (vedi
Ingegneria del
software) oppure con il programma di Architetture
software
- in caso di mancata o tardiva comunicazione, assumerò:
- primo turno
- per gli studenti 509, esame con l'ultimo programma di
Ingegneria del software
Alcune informazioni circa lo svolgimento del corso di Architetture software
nei prossimi giorni
- lunedì 25 gennaio - lezione dalle 14:00 alle 15:30
- martedì 26 gennaio - lezione dalle 11:30 alle 13:00
- giovedì 28 gennaio - gli studenti sono invitati ad un seminario su Cloud
computing, ospitato nell'ambito del corso di Sistemi informativi, dalle 9:45
alle 11:15
- giovedì 28 gennaio - altro seminario su Cloud computing, ospitato
nell'ambito del corso di Architetture software, dalle 11:30 alle 13:00
Le lezioni del corso di Architetture software si svolgeranno
- nel primo quarto (dal 5 ottobre al 13 novembre 2009), lunedì, mercoledì e
venerdì,
dalle 11:30 alle 13:00, in aula N13A
- nel secondo quarto (dal 1 dicembre 2009 al 29 gennaio 2010), a
partire da giovedì 7 gennaio 2010:
- lunedì, dalle 14:00 alle 15:30, in aula N10
- martedì e
giovedì, dalle 11:30 alle 13:00, in aula N13A
- venerdì, dalle 15:45 alle 17:15, in aula N10
Introduzione al corso
Introduzione al corso.
Architetture software
In breve, la disciplina delle architetture software – o
architettura del software
- è interessata ai sistemi software complessi
- si occupa delle parti interessate allo sviluppo di un
sistema e dei loro interessi, sia funzionali che, soprattutto,
di qualità – ad es., prestazioni, disponibilità, modificabilità
- si occupa della strutturazione del sistema in elementi e
relazioni tra elementi
- studia le relazioni tra la struttura interna del sistema e
le sue qualità esterne
- la comprensione di tali relazioni è alla
base della progettazione dei sistemi software
complessi
- la progettazione dell'architettura software di un sistema è
guidata dalle qualità fondamentali che il sistema deve esibire,
e procede sulla base dell’applicazione di principi, linee guida
e soluzioni pre-esistenti
Obiettivo formativo
Il corso di Architetture software ha l’obiettivo di
presentare gli aspetti sia metodologici che tecnologici relativi alle
architetture software, che hanno un ruolo fondamentale nel raggiungimento degli
obiettivi di qualità (requisiti non funzionali) dei sistemi software.
Specificamente, ha l’obiettivo di presentare metodologie e strumenti per la
progettazione e la valutazione di architetture software e, in particolare, di
architetture per sistemi software distribuiti e di tipo enterprise, incluse le
architetture basate su componenti e le architetture orientate ai servizi.
Alla fine del corso lo studente dovrebbe sapere impostare un progetto di
un’architettura software, analizzandone dettagli e problematiche tecnologiche e
metodologiche, e valutare l’architettura in termini di raggiungimento di
obiettivi di qualità.
Prerequisiti
Il corso non prevede specifici prerequisiti: tutto ciò che è stato studiato
sarà utile - ma niente indispensabile.
Un prerequisito importante è il corso di Analisi e progettazione del software.
Altri prerequisiti molto utili sono i corsi di Sistemi informativi su web
e
Sistemi operativi. Utile Basi di dati II, così come Programmazione concorrente
e 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.
Programma
Programma del corso di Architetture software relativo all'anno
accademico 2009-2010.
- Architetture software:
- introduzione e concetti di base
- processo di definizione dell'architettura software
- parti interessate e interessi - requisiti e qualità
- descrivere l'architettura - punti di vista e viste - il
punto di vista funzionale - il punto di vista delle
informazioni (cenni)
- progettare per le qualità - tattiche architetturali -
stili architetturali - prospettive architetturali (cenni)
- valutazione di architetture software (cenni)
- Architetture dei sistemi distribuiti
- architetture distribuite: client/server, architettura a
oggetti distribuiti, messaging e integrazione di
applicazioni, architetture a componenti, architettura
orientata ai servizi
- Middleware e tecnologie per sistemi distribuiti
- tecnologie a oggetti distribuiti, messaging, componenti,
web services
Lezioni
Le lezioni del corso di Architetture software si svolgeranno
- nel primo quarto (dal 5 ottobre al 13 novembre 2009), lunedì, mercoledì e
venerdì,
dalle 11:30 alle 13:00, in aula N13A
- nel secondo quarto (dal 1 dicembre 2009 al 29 gennaio 2010), a
partire da giovedì 7 gennaio 2010:
- lunedì, dalle 14:00 alle 15:30, in aula N10
- martedì e
giovedì, dalle 11:30 alle 13:00, in aula N13A
- venerdì, dalle 15:45 alle 17:15, in aula N10
Argomenti delle lezioni
| Data |
Argomento |
Materiale didattico |
|
5 ottobre 2009 |
Introduzione al corso |
asw010 |
| Introduzione alle architetture software |
asw110 |
|
7 ottobre 2009 |
Architetture software: concetti |
asw120
opzionale:
[IEEE 1471-2000] |
|
9 ottobre 2009 |
Punti di vista e viste |
asw140
[Kruchten 1995] |
|
|
|
|
|
12 ottobre 2009 |
Ottenere qualità: tattiche,
stili e prospettive architetturali |
asw160 |
|
|
Introduzione ai connettori e al
middleware |
asw810
esempi: workspace Eclipse |
|
14 ottobre 2009 |
Processi software (cenni) |
asw210
opzionale: [Bohem 1988] |
|
|
Processo di definizione dell'architettura |
asw220 |
|
|
Requisiti e scenari: requisiti |
asw250 |
|
16 ottobre 2009 |
Comunicazione interprocesso e
socket |
asw820
esempi: workspace Eclipse |
|
|
|
|
|
19 ottobre 2009 |
Requisiti e scenari: scenari |
asw250 |
|
|
Tattiche architetturali: introduzione, tattiche
per le prestazioni |
asw310
[Bachmann, 2007]
sezioni 1-6
opzionale:
[Scott, 2009]
opzionale:
[Kim, 2009] |
|
21 ottobre 2009 |
Tattiche architetturali: tattiche per le
prestazioni, tattiche per la modificabilità |
asw310 |
|
23 ottobre 2003 |
Oggetti distribuiti e
invocazione remota |
asw830
esempi: workspace Eclipse |
|
|
|
|
|
26 ottobre 2009 |
Tattiche architetturali: tattiche per la
disponibilità |
asw310 |
|
|
Oggetti distribuiti e
invocazione remota: legame dei parametri |
|
|
28 ottobre 2009 |
Tattiche architetturali: tattiche per la sicurezza
(cenni) |
asw310 |
|
|
Stili architetturali e pattern |
asw350 |
|
30 ottobre 2009 |
POSA: Un catalogo di pattern architetturali
(prima parte): Domain Model, Layers, Domain Object |
asw361 |
|
|
|
|
|
2 novembre 2009 |
POSA: Un catalogo di pattern architetturali
(prima parte): Pipes and Filters |
asw361 |
|
4 novembre 2009 |
POSA: Un catalogo di pattern architetturali
(seconda parte): MVC, Shared Repository, database Access Layer (cenni),
Microkernel |
asw362 |
|
6 novembre 2009 |
Messaging |
asw840
esempi: workspace Eclipse |
|
|
|
|
|
9 novembre 2009 |
POSA: Un catalogo di pattern architetturali
(seconda parte): Reflection |
asw362 |
|
|
Architetture dei sistemi distribuiti:
introduzione, architetture client/server |
asw410 |
|
13 novembre 2009 |
Architetture dei sistemi distribuiti -
architetture a oggetti distribuiti; Proxy; Broker |
asw410 |
|
|
|
|
|
|
|
|
|
|
|
|
|
7 gennaio 2010 |
Mini tutorial: modellazione di
attività e processi |
asw910 |
|
8 gennaio 2010 |
Messaging (e integrazione di
applicazioni) |
asw430 |
|
|
|
|
|
11 gennaio 2010 |
Introduzione a Java EE - introduzione alla piattaforma Java EE; Enterprise
Bean; session bean; message-driven bean |
asw850
esempi: workspace Eclipse |
|
12 gennaio 2010 |
Architetture basate su componenti |
asw450 |
|
14 gennaio 2010 |
Mini tutorial: UML components |
asw920 |
|
|
|
|
|
|
|
|
|
18 gennaio 2010 |
Un catalogo di punti di vista |
asw510 |
|
|
Punto di vista funzionale - introduzione al
punto di vista funzionale; interessi; modelli |
asw520 |
|
19 gennaio 2010 |
Punto di vista funzionale -
attività; problemi e insidie |
|
|
|
Mini tutorial: Validazione
dell'architettura |
asw950 |
|
21 gennaio 2010 |
Web Services |
asw860
esempi: workspace
Eclipse |
|
|
|
|
|
25 gennaio 2010 |
Service Oriented
Architecture |
asw470 |
|
26 gennaio 2010 |
Service Oriented
Architecture |
|
|
|
Mini tutorial: Web Services
development lifecycle |
asw930 |
|
|
Punto di vista delle
informazioni (cenni) |
asw530 |
|
28 gennaio 2010 |
Seminario su Cloud computing -
svolto nell'ambito del corso di Sistemi informativi |
cc_si |
|
|
Seminario su Cloud computing -
svolto nell'ambito del corso di Architetture software |
cc_asw |
|
|
|
|
Homework
Gli homework, scritti a mano, vanno fatti pervenire al docente durante le
lezioni del corso o il ricevimento studenti, nei tempi indicati nella seguente
tabella.
Materiale didattico
Materiale didattico di riferimento
Il materiale didattico di riferimento per il corso, che sarà disponibile su
questo sito web, è costituito da:
- dispense - i link alle dispense saranno disponibili nella
sezione delle lezioni.
- articoli e presentazioni - i link sono qui sotto
Articoli e presentazioni (in programma)
-
[Kruchten, 1995]
P. Kruchten,
Architectural Blueprints - The "4+1" View Model of
Software Architecture, IEEE Software, 1995 (copia
locale)
- presenta il famoso modello a 4+1 viste per la
progettazione e la descrizione di architetture
-
[Parnas, 1972]
D.L. Parnas, On
the Criteria To Be Used in Decomposing Systems into Modules,
Communications of the ACM, 1972 (copia
locale)
-
[Bachmann, 2007]
F. Bachmann, L. Bass, R. Nord,
Modifiability Tactics,
Rapporto tecnico CMU/SEI-2007-TR-002 (copia
locale)
- introduce le tattiche architetturali e presenta un
catalogo di tattiche per la modificabilità
- inoltre, correla le tattiche presentate con alcuni
diffusi stili architetturali
- [Daniels] J. Daniels,
UML Components (copia
locale)
Articoli e presentazioni (letture consigliate, ma non in programma)
-
[IEEE 1471-2000]
IEEE Std 1471-2000 IEEE Recommended Practice for
Architectural Description of Software-Intensive Systems (copia
locale)
- uno standard IEEE relativo alle architetture software
-
[Boehm, 1988]
B.W. Boehm,
A Spiral Model of Software Development and Enhancement,
IEEE Computer, 1988 (copia
locale)
- presenta il famoso modello a spirale per lo sviluppo del
software
-
[Scott, 2009] J. Scott, R. Kazman,
Realizing and refining Architectural Tactics: Availability,
Rapporto tecnico CMU/SEI-2009-TR-006 (copia
locale)
- presenta un catalogo di tattiche per la disponibilità
- a differenza di [Bachmann, 2007], lo presenta per
differenza da [SAP], quindi non è un articolo del tutto
autocontenuto
- presenta anche uno studio di caso di progettazione
basato su tattiche, non proprio semplice
-
[Kim, 2009]
S. Kim, D.K. Kim, L. Lu, S. Park,
Quality-driven
architecture development using architectural tactics,
The Journal of Systems and Software, 2009 (copia
locale)
- tra le altre cose (meno importanti) presenta uno studio
di caso relativo alla progettazione basato su tattiche
architetturali
-
Altro materiale didattico, di consultazione
Il corso ed il relativo materiale didattico è ispirato ad un certo numero di
libri sulle architetture software, che sono pertanto utili per la consultazione
(dovrebbero essere quasi tutti disponibili nella biblioteca di ateneo) ma non
necessari, soprattutto in caso di regolare frequenza alle lezioni del corso.
Altri articoli e presentazioni - in corso di aggiornamento
Altro materiale didattico sarà predisposto facendo riferimento, tra l'altro,
anche ai seguenti libri:
Libri su architetture software
- [SAP]
- Len Bass, Paul Clements, Rick Kazman
Software architecture in
practice (2nd edition)
Pearson, Addison Wesley, 2003
- [POSA1]
- 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
- [SSA]
- Nick Rozanski e Eoin Woods
Software Systems Architecture
Addison Wesley, 2005
- [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
- [TMD]
- Richard N. Taylor, Nenad Medvidovic, Eric M. Dashofy
Software
architecture - foundations, theory, and practice
John Wiley and
Sons, 2010
- [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 - Elements of Reusable Object-oriented Software
Addison-Wesley, 1995
- [GoF] in italiano
- 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
Sito web del corso
Newsgroup del corso
Esami
L'esame di Architetture software consiste (la modalità d'esame
potrebbe cambiare) di:
- una prova scritta - circa 15 punti su 30
- una prova orale - circa 15 punti su 30
Le date previste per le prove scritte dell'esame di Architetture software
sono:
- 4 febbraio 2010
- 5 luglio 2010
- ... settembre 2010
Per partecipare all'esame è necessario prenotarsi all'esame presso il
Portale dello studente.
(Sul sito
prenota.uniroma3.it
per gli studenti di Ingegneria del software). 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
Portale dello studente (o
sul sito
prenota.uniroma3.it,
per gli studenti di Ingegneria del software) 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.