Corsi di Laurea in Informatica (classe L31)
Info: didattica@dmi.unipr.it      +39 0521 906058
 Corsi di insegnamento: Ingegneria del Software Logout
 

Ingegneria del Software

 

Anno accademico 2015/2016

Codice del corso 06015
Docente Dott. Federico Bergenti (Titolare del corso)
Anno 3░ anno
Corso di studi L31 Informatica
Tipologia Caratterizzante
Crediti/Valenza 9
SSD INF/01 - informatica
Erogazione Tradizionale
Lingua Italiano
Frequenza Obbligatoria
Valutazione Scritto ed orale
Periodo didattico Primo semestre
Storico Anni precedenti
 

Obiettivi formativi del corso

Proporre un percorso che, partendo dall'analisi della Software Crisis e passando per lo studio dei tradizionali modelli di sviluppo, arrivi a definire i fondamentali aspetti architetturali dei moderni sistemi software.

Il corso prevede, oltre a lezioni teoriche, una serie di esercitazioni in aula e in laboratorio sulla parte relativa al linguaggio Java.

Con riferimento agli Indicatori di Dublino:

Conoscenza e capacità di comprensione
Il corso introduce i primi concetti relativi all'ingegneria del software. Particolare enfasi è data alla comprensione delle metodologie classiche. Il testo di riferimento è in italiano, ma viene altresì utilizzata durante le lezioni la terminologia in lingua inglese come avviamento alla consultazione di letteratura scientifica internazionale.

Capacità di applicare conoscenza e comprensione
Le conoscenze teoriche presentate vengono sempre applicate alla risoluzione di problemi specifici. Le esercitazioni che affiancano il corso sono incentrate sulla risoluzione di esercizi e problemi, con particolare riferimento alla realizzazione di applicazioni Web in Java. Spesso i metodi risolutivi vengono presentati sotto forma algoritmica, sviluppando negli studenti la capacità di strutturare procedure utili in numerose parti
dell'informatica e non solo nello studio dell'ingegneria del software.

Autonomia di giudizio
Gli esercizi, che vengono proposti relativamente alla parte teorica svolta a lezione, possono venire risolti individualmente o in gruppo. Il confronto con i compagni di corso, nel lavoro a casa o durante gli svolgimenti in aula, favorisce lo sviluppo di capacità specifiche per poter a chiarire ai compagni o ai docenti le proprie argomentazioni. Spesso gli esercizi proposti possono venire risolti in modi molto diversi e l'ascolto delle
soluzioni proposte da altri permette di sviluppare la capacità di individuare strutture comuni, al di là delle apparenti differenze superficiali.

Abilità comunicative
Le numerose discussioni sui diversi metodi per risolvere i problemi proposti consentono di migliorare le capacità di comunicazione. Vengono inoltre abitualmente utilizzate durante le spiegazioni (ed esplicitamente
evidenziate in classe) alcune modalità di comunicazione specifiche della tecnologia informatica.

Capacità di apprendimento
Lo studio delle origini delle soluzioni tecnologiche e la loro introduzione motivata da considerazioni qualitative e quantitative contribuisce a realizzare negli studenti la capacità di apprendere in modo profondo e non soltanto superficiale e ripetitivo. Le conoscenze così acquisite non sono mai rigide e definitive, ma sono perfettamente adattabili ad ogni evoluzione e cambiamento di prospettiva e di contesto.

 

Risultati dell'apprendimento

Risultati dell'apprendimento e modalità di verifica
Saper comprendere e utilizzare in modo appropriato le tecniche relative all'analisi, progettazione, realizzazione, testing e validazione del software. Saper lavorare in Java per la realizzazione di semplici architetture software. Conoscere le basi del project management. Conoscere e saper utilizzare le principali tecniche per la realizzazione di applicazioni Web in Java.

Modalità di verifica/esame
L'esame consiste in una prova scritta e un progetto a cui si accede solo al superamento della prova scritta. E' possibile sostenere più volte la prova scritta ma ogni scritto consegnato annulla lo scritto precedente.

 

Programma

  • Processi di Sviluppo del Software
    Il processo di sviluppo del software: aspetti economici, organizzativi e metodologici; il gruppo di lavoro; prodotto software e processo; il ciclo di vita dei sistemi software; modelli di sviluppo software: modello tradizionale a cascata; modello evolutivo e a fontana, altri modelli.
  • Linguaggi di Modellazione del Software
    Modellazione del software: modelli e linguaggi di specifica; il linguaggio UML; uso di UML entro i progetti informatici; gli strumenti CASE.
  • Analisi dei Requisiti
    Analisi e specifica dei requisiti:l'interazione con il cliente e la formalizzazione dei requisiti; il metodo dei casi d'uso e le sue applicazioni; risultati del processo di analisi.
  • Architetture Software
    Le architetture software: architetture software per piccoli sistemi; architetture client-server, multi-tier e Web; il pattern MVC e le sue applicazioni; riuso delle componenti server e approccio multicanale.
  • Ambienti di Sviluppo
    il linguaggio Java; l'architettura di Java2; Java e le proprietà di oggetti; sistemi multi-tier in Java; sistemi Web in Java;  cenni al linguaggio C# e all'architettura .NET.
  • Progettazione di Software e Codifica
    Progettazione dei sistemi software: principi e metodi di progettazione; principi di modularità ed incapsulamento; la progettazione orientata agli oggetti; i “design patterns” ed il loro uso; regole di scrittura del codice.
  • Testing, Verifica e Validazione
    La fase di test, sviluppi parziali e test parziali (scatola bianca e scatola nera); test di aggregazione; test su dati reali; test di regressione; collaudo; entrata in produzione e manutenzione ordinaria; case study.
  • Metodologie di gestione dei progetti software: il project management
    La conduzione operativa di un progetto: impostazione e definizione di obiettivi; analisi dei vincoli; scelta di strumenti e architetture; il lavoro in team; metriche e diagrammi utili (Gantt, PERT, ...); il problema della documentazione; comunicazione entro e fuori un team; evoluzione e manutenibilità dei sistemi, manutenzione evolutiva.
 

Testi consigliati e bibliografia

C. Ghezzi, A. Fuggetta, S. Morasca, A. Morzenti, M. Pezze, Ingegneria del Software, Mondadori Informatica, II edizione Simon Bennett, John Skelton, Ken Lunn, UML, Mc Graw-Hill Bruce Eckel, Thinking in Java, disponibile presso http://www.mindview.net, II edizione Bruce Eckel, Thinking in Patterns, disponibile presso http://www.mindview.net E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns, Addison-Wesley

 

Orario lezioniV

GiorniOreAula

 

Materiale didattico

Test online

Vai a Moodle

Visita i forum

Registrati al corso

Studenti registrati

Ultimo aggiornamento: 20/10/2015 16:35
HOMEDuplica il recordPrimoPrecedenteSuccessivoUltimoPS