Software Methodologies (2011–2012)
Corso tenuto nell’ambito del master Erasmus Mundus Data Mining and Knowledge Management (DMKM), Politehnica University of Bucharest.
Presentazione
Software Methodologies era uno dei moduli offerti a Bucarest nell’ambito del programma europeo di master Data Mining and Knowledge Management. Nel contesto di un master orientato al data mining, al knowledge management e alla modellazione avanzata, questo corso introduceva gli studenti alla logica ingegneristica dello sviluppo software: processi, paradigmi, modelli, metodi di analisi e progettazione, nonché criteri per la scelta di una metodologia adatta a un determinato tipo di sistema.
Il corso poneva l’accento sul passaggio dal problema da risolvere a una soluzione software coerente, verificabile ed evolutiva. Da questo punto di vista, completava molto bene il profilo DMKM: non soltanto algoritmi e modelli di conoscenza, ma anche disciplina di progettazione, modellazione e realizzazione dei sistemi software che incorporano tali tecniche.
Dati essenziali
- Denominazione del corso: Software Methodologies
- Programma: Erasmus Mundus Master in Data Mining and Knowledge Management (DMKM)
- Istituzione partner: Politehnica University of Bucharest
- Codice del corso: S1-C6-UPB
- Numero di crediti: 4 ECTS
- Lingua di insegnamento: inglese
- Docente responsabile / course coordinator: Luca Dan Șerbănați
- Semestre: primo semestre
Obiettivi e competenze
Il corso mirava a fornire una comprensione sistematica delle principali metodologie di sviluppo software e dei criteri secondo i quali esse possono essere valutate e scelte. L’accento non cadeva soltanto sulla descrizione di metodi consolidati, ma anche sulla capacità di confrontare paradigmi, comprenderne i limiti e selezionare l’approccio appropriato in funzione del problema da risolvere.
- comprensione del processo software e dei modelli del ciclo di vita;
- padronanza delle nozioni di analisi, progettazione, validazione e riuso;
- confronto tra metodologie strutturate, orientate agli oggetti e agili;
- comprensione della relazione tra modelli, notazioni e processo di sviluppo;
- familiarizzazione con lo sviluppo basato su componenti e con l’orientamento ai servizi;
- formazione di un atteggiamento critico nella scelta di metodi, processi e strumenti.
Contenuto del corso
1. Fondamenti di ingegneria del software
La prima parte introduce le nozioni di base: la natura del software, la complessità dei sistemi software, la crisi del software, l’idea di processo software, le discipline dello sviluppo, l’assicurazione della qualità, la gestione e la nozione di maturità del processo.
2. Modelli di processo software
Vengono discussi i principali modelli di processo: il ciclo di vita classico, il modello waterfall, la prototipazione, RAD, il modello incrementale, il modello a spirale, lo sviluppo concorrente, lo sviluppo iterativo e incrementale, nonché lo sviluppo basato su componenti.
3. La nozione di metodologia software
Il corso definisce la metodologia come un insieme di pratiche, regole, modelli e notazioni che guidano lo sviluppo di un sistema software. Vengono analizzate le principali famiglie di metodologie: structured methodologies, information engineering e object-oriented methodologies.
4. Structured Methodologies
Una parte importante è dedicata alle metodologie strutturate, in particolare alla famiglia SSADM: ciclo di vita strutturato, analisi dei requisiti, modellazione dei dati, modellazione dei processi, modellazione comportamentale, DFD, ERD, dizionario dei dati, diagrammi di stato ed estensioni per sistemi real-time.
5. Enterprise and Information Engineering
Il corso amplia la prospettiva verso l’enterprise modeling e l’information engineering: modellazione dell’impresa, processi di business, enterprise architecture, business engineering, modelli di processi e oggetti, nonché l’uso di UML nella modellazione di business.
6. Activity diagrams, business models e ontologies
Un segmento distinto tratta i diagrammi di attività, il workflow, l’associazione delle attività ad agenti ed entità di business, nonché le ontologie come strumento di formalizzazione e integrazione concettuale nell’enterprise modeling.
7. Object-oriented, agile, component-based e service-oriented development
La scheda del corso mostra esplicitamente l’apertura verso le metodologie orientate agli oggetti, i metodi agili, lo sviluppo basato su componenti e lo sviluppo orientato ai servizi. In quest’area, il corso poneva l’accento sul riuso, sulla progettazione architetturale e sulla scelta flessibile del processo in funzione del contesto applicativo.
Attività pratiche
La parte applicativa prevedeva l’uso effettivo di metodi diversi per lo stesso problema, proprio per mettere in evidenza i vantaggi e i limiti di ciascun approccio.
- esercizi e compiti periodici;
- lavori applicativi e attività di laboratorio;
- confronto tra più metodologie per la stessa applicazione;
- analisi critica dei compromessi tra rigore, velocità di sviluppo e riuso;
- uno studio di caso finale.
Nella scheda estesa del corso compaiono esplicitamente esempi quali SSADM, Unified Process / RUP, Scrum, Extreme Programming, Crystal, nonché l’orientamento verso componenti e servizi.
Valutazione
- Esame finale: 30%
- Esercizi e lavori durante il corso: 40%
- Case study: 30%
Lo schema di valutazione riflette molto bene il profilo del corso: non soltanto verifica teorica, ma anche applicazione concreta, confronto tra metodi e capacità di giustificare una scelta metodologica.
Bibliografia
- Ian Sommerville, Software Engineering, 8th Edition, Addison-Wesley, 2007.
- James Shore, Shane Warden, The Art of Agile Development, O’Reilly, 2007.
- Jim Highsmith, Agile Software Development Ecosystems, Addison-Wesley Professional, 2002.
- Luca Dan Șerbănați, Integrating Tools for Software Development, Prentice Hall, 1993.
- Thomas Erl, Service-Oriented Architecture (SOA): Concepts, Technology, and Design, Prentice Hall, 2005.
- Rod Johnson, Expert One-on-One J2EE Design and Development, Wrox, 2002.
Risorse
Per questa pagina esistono già ampie note del corso e documenti di syllabus o schede didattiche. Qui possono essere aggiunti i collegamenti ai file PDF o DOC dopo aver stabilito la cartella definitiva.





