Ingegneria del software

Anno accademico 2008-2009

Prof. Luca Cabibbo


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:

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:

  1. 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.
  2. 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):

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:

È inoltre utile una buona conoscenza della lingua inglese.


Lezioni

Le lezioni del corso di Ingegneria del software si svolgeranno

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.


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:

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

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.