Architetture software

Anno accademico 2011-2012

Prof. Luca Cabibbo



Avvisi

(È disponibile anche un elenco completo degli avvisi.)


Al fine di ridurre eventuali problemi legati al maltempo, la prova scritta degli esami di Architetture software e Ingegneria del software del 13 febbraio avrà inizio alle ore 10:00 anziché alle ore 9:00.

Inoltre, la prova scritta si svolgerà in aula N1 anziché in aula N13A.


Alcune informazioni circa lo svolgimento degli esami di Architetture software e Ingegneria del software nella sessione di febbraio 2012:


Gli studenti che intendono frequentare il corso di Architetture software sono invitati a registrarsi al corso usando l'apposito modulo di registrazione.
Perché? Per sapere chi e quanti siete, e per conoscere i vostri indirizzi di posta elettronica, nel caso dovessi contattarvi).

Inoltre, a partire da questo anno accademico (per ora solo in via sperimentale) gli studenti iscritti al corso di Laurea Magistrale in Ingegneria informatica devono, all’inizio di ogni semestre, iscriversi ai corsi che intendono seguire nel semestre. Fare riferimento all'avviso in proposito sul sito del collegio didattico.

Gli studenti Erasmus, invece, sono invitati a leggere queste informazioni, e a registrarsi al corso usando quest'altro  modulo di registrazione.


Introduzione al corso

Introduzione al corso.

Architetture software

In breve, la disciplina delle architetture software – o architettura del software

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 è certamente 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:

È inoltre utile una buona conoscenza della lingua inglese.


Programma

Programma del corso di Architetture software relativo all'anno accademico 2011-2012.


Lezioni

Le lezioni del corso di Architetture software si svolgeranno

Argomenti delle lezioni

Data Argomento Materiale didattico
3 ottobre 2011 Introduzione al corso asw010
Introduzione alle architetture software asw110
6 ottobre 2011 Architetture software: concetti asw120
opzionale: [IEEE 1471-2000]
10 ottobre 2011 Punti di vista e viste asw140
in programma:
[Kruchten 1995]
13 ottobre 2011 Ottenere qualità: tattiche, stili e prospettive architetturali asw160
  Introduzione ai connettori e al middleware asw810
esempi: workspace Eclipse
17 ottobre 2011 Processi software (cenni) asw210
opzionale: [Bohem 1988]
  Processo di definizione dell'architettura asw220
20 ottobre 2011 Requisiti, interessi e scenari asw250
24 ottobre 2011 Comunicazione interprocesso e socket: comunicazione interprocesso; un'applicazione client/server UDP; un'applicazione client/server TCP asw820
esempi: workspace Eclipse
27 ottobre 2011 Comunicazione interprocesso e socket: messaggi da scambiare asw820
  Tattiche architetturali: introduzione, tattiche per le prestazioni (cenni) asw310
in programma: [Bachmann, 2007] sezioni 1-6
opzionale: [Kim, 2009]
31 ottobre 2011 non ci sarà lezione  
3 novembre 2011 Tattiche architetturali: tattiche per la modificabilità asw310
7 novembre 2011 Oggetti distribuiti e invocazione remota: RPC; RMI; Java RMI; semantica dell'invocazione remota  asw830
esempi: workspace Eclipse
10 novembre 2011 Oggetti distribuiti e invocazione remota: servizi remoti con stato oppure con stato della sessione; legame dei parametri asw830
14 novembre 2011 Tattiche architetturali: tattiche per la disponibilità asw311
opzionale:
[Scott, 2009] sezione 2
opzionale:
[Kim, 2009]
17 novembre 2011 Pattern software asw350
  POSA: Un catalogo di pattern architetturali (prima parte): Introduzione asw360
21 novembre 2011 POSA: Un catalogo di pattern architetturali (prima parte): Domain Model; Layers asw360
24 novembre 2011 POSA: Un catalogo di pattern architetturali (prima parte): Domain Object, Pipes and Filters asw360
28 novembre 2011 POSA: Un catalogo di pattern architetturali (seconda parte): MVC (cenni), Shared Repository, Database Access Layer (cenni), Microkernel asw361
1 dicembre 2011 Messaging (middleware) asw840
esempi: workspace Eclipse
5 dicembre 2011 Messaging (middleware) asw840
  POSA: Un catalogo di pattern architetturali (seconda parte): Reflection asw361
  Architetture dei sistemi distribuiti: introduzione asw410
7 dicembre 2011 Architetture dei sistemi distribuiti - architetture client/server, architetture a oggetti distribuiti; Broker asw410
12 dicembre 2011 Messaging (stile architetturale) e integrazione di applicazioni asw430
15 dicembre 2011 Componenti (middleware) asw850
esempi: workspace Eclipse
     
     
     
9 gennaio 2012 Componenti (middleware) asw850
  Architetture basate su componenti asw450
12 gennaio 2012 Architetture basate su componenti asw450
  Cluster per architetture a componenti asw455
16 gennaio 2012 Web Services asw460
18 gennaio 2012 Mini tutorial: modellazione di processi (cenni) asw910
  Mini tutorial: UML components (cenni) asw920
19 gennaio 2012 Web Services: lo stile REST asw460
  Programmazione di Web Services asw860
esempi (ws): workspace Eclipse
esempi (rest): workspace Eclipse
23 gennaio 2012 Service-Oriented Architecture asw465
25 gennaio 2012 Cloud Computing asw470
[Berkeley, 2009]
   
  Un metodo per la definizione dell'architettura asw950
  Un metodo per la definizione dell'architettura asw950
   


Homework

Gli homework, scritti a mano, vanno fatti pervenire al docente durante le lezioni del corso o al ricevimento studenti, nei tempi indicati nella seguente tabella. In particolare, se la data di consegna è un giorno in cui è prevista lezione, la consegna va fatta entro l'inizio della lezione stessa.

Homework Argomento Riferimenti Data pubblicazione Data consegna
1 Scrum The Scrum Primer (link alla versione originale)
www.scrumalliance.org
10 ottobre 2011 27 ottobre 2011
2 Architettura a plug-in di Eclipse Eclipse Platform Technical Overview
Notes on the Eclipse Plug-in Architecture
27 ottobre 2011 17 novembre 2011
3 Realizzazione di un'applicazione di messaging Workspace asw-hw3-messaging 6 dicembre 2011 16 gennaio 2012
4 Clustering in Apache Tomcat Clustering Session/Replication HOW-TO
Tomcat Clustering
10 gennaio 2012 25 gennaio 2012
         

E' possibile consegnare l'homework in ritardo rispetto alla data di consegna indicata nella tabella?
Sì, ma con le seguenti osservazioni: (i) il ritardo massimo è una lezione (ovvero, l'homework può essere consegnato al più alla lezione successiva rispetto alla data indicata in tabella) e (ii) il numero massimo di ritardi ammessi per ciascuno studente è uno (ovvero, uno studente non può consegnare due homework in ritardo).


Materiale didattico

Materiale didattico di riferimento

Il materiale didattico di riferimento per il corso, che sarà disponibile su questo sito web, è costituito da:

Articoli e presentazioni (in programma) 

Articoli e presentazioni (letture consigliate, ma non in programma)

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

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 di:

Le date previste per le prove scritte dell'esame di Architetture software sono:

Per partecipare all'esame è necessario prenotarsi all'esame presso il Portale dello studente. 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 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.


Informazioni per gli studenti del corso di Ingegneria del software (ord. 509/99)

Informazioni per gli studenti del corso spento di Ingegneria del software (della Laurea Specialistica in Ingegneria informatica secondo l'ordinamento 509/99):


Informazioni per gli studenti Erasmus

In passato, si sono verificate delle situazioni spiacevoli con alcuni studenti Erasmus.
(Ci tengo a sottolineare il fatto che ciò è avvenuto solo con alcuni studenti Erasmus: altri studenti Erasmus si sono comportati correttamente, ed hanno studiato in modo assolutamente dignitoso).

A causa di tali avvenimenti, gli studenti Erasmus interessati a frequentare e sostenere l'esame di Architetture software devono

Si ricorda inoltre che al corso di Architetture software sono attribuiti 6 CFU (crediti formativi universitari), e che pertanto l'impegno richiesto ad uno studente in possesso dei prerequisiti del corso è di circa 6x25=150 ore.

Il docente sottolinea che finora ha trattato - e continuerà a trattare - gli studenti Erasmus allo stesso modo - dunque, né meglio né peggio - degli studenti locali.
In particolare (anche se non ci dovrebbe essere bisogno di dirlo) uno studente Erasmus che studia bene la materia verrà promosso all'esame, mentre uno studente Erasmus che studia poco o studia male la materia verrà bocciato all'esame - esattamente come verrebbe bocciato all'esame uno studente locale che studia poco o studia male. Questo indipendentemente da qualunque fatto o situazione che non riguarda strettamente lo studio e la comprensione della materia. E con l'ovvia considerazione che decidere se uno studente ha studiato bene o male è responsabilità della commissione d'esame - e non dello studente.


En pasado, se han verificado unas situaciones desagradables con unos estudiantes Erasmus.
(Quiero acentuar que esto ha pasado solo con unos estudiantes Erasmus: otros estudiantes se han comportado correctamente y han siempre estudiado de una manera absolutamente decente.) 

Por esos eventos, los estudiantes Erasmus que son interesados a frecuentar y dar el examen de Architetture Software tienen que

Se recuerda tambien que al curso de Architetture Software se dan 6 CFU (crediti formativi universitari), y que entonces el empeño que se pide a un estudiante que ya posee los requisitos del curso es más o menos de 6x25=150 horas .

El profesor acentua que hasta ahora ha tratado – y seguirá tratando- los estudiantes Erasmus de la misma manera – es decir ni mejor ni pejor – de los estudiantes locales .
En particular, aunque no sea necesario decirlo, un estudiante Erasmus que estudia bien la materia aprobará el examen, mientras un estudiante Erasmus que estudia poco o mal la materia suspenderá el examen – de la misma manera de un estudiante local que estudia poco o estudia mal. Eso independientemente de todos los aspectos que no conciernen propiamente el estudio y la comprensión de la materia. Y, por supuesto,considerando tambien que es la Comision de Examen que decide si un estudiante ha estudiado poco o mal – y no el estudiante mismo.