INGEGNERIA DEL SOFTWARE

Informatica INGEGNERIA DEL SOFTWARE

0512100019
DIPARTIMENTO DI INFORMATICA
CORSO DI LAUREA
INFORMATICA
2013/2014



OBBLIGATORIO
ANNO CORSO 3
ANNO ORDINAMENTO 2008
PRIMO SEMESTRE
CFUOREATTIVITÀ
648LEZIONE
336LABORATORIO


Obiettivi
CONOSCENZA E CAPACITÀ DI COMPRENSIONE:
A PARTIRE DALLA FONDAMENTALE DEFINIZIONE DI SISTEMA SOFTWARE, SARANNO ACQUISITE DALLO STUDENTE
LE NOZIONI RELATIVE ALLA MODELLAZIONE DEI SISTEMI SOFTWARE NEL LINGUAGGIO UML,
LE CONOSCENZE NECESSARIE PER LA PRODUZIONE DELLA SPECIFICA DEI REQUISITI SOFTWARE,
LE CONOSCENZE NECESSARIE PER LA MODELLAZIONE DI UN'ARCHITETTURA SOFTWARE E LA SUA IMPLEMENTAZIONE,
LE TECNICHE DI VERIFICA E VALIDAZIONE DEL SOFTWARE.

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE:
LO STUDENTE SARÀ IN GRADO DI USARE UN APPROCCIO INGEGNERISTICO ALL’ANALISI, PROGETTAZIONE, REALIZZAZIONE, TESTING E MANUTENZIONE DEL SOFTWARE.
INOLTRE SVOLGERÀ, IN GRUPPO, PARTE DELLE ATTIVITÀ PREVISTE PER LA REALIZZAZIONE DEL PROGETTO SOFTWARE IMPARANDO A RICONDURRE AD UNITÀ IL LAVORO CHE IL PROJECT MANAGER HA DIVISO TRA I PARTECIPANTI AL PROGETTO.

ABILITÀ COMUNICATIVE:
SARANNO ACQUISITE ABILITÀ DI COMUNICAZIONE PIANIFICATA E NON PIANIFICATA.
TALI ABILITÀ SI MANIFESTERANNO MEDIANTE LA CONDIVISIONE DI ARTEFATTI CON CUI I PARTECIPANTI AL PROGETTO SI SCAMBIERANNO CONOSCENZA.
SARANNO ANCHE ACQUISITI MECCANISMI DI COMUNICAZIONE SINCRONA E ASINCRONA BASATI SU STRUMENTI SOFTWARE DI SUPPORTO.

AUTONOMIA DI GIUDIZIO
GLI STUDENTI ACQUISIRANNO AUTONOMIA DI GIUDIZIO SULLA BASE DELLE ATTIVITÀ DI PROGETTO PIANIFICATE.
IL PIANO DI PROGETTO CONTERRÀ, OLTRE ALLE ATTIVITÀ DA SVOLGERE, ANCHE I VINCOLI DI TEMPO, COSTO E QUALITÀ
CHE IL PROGETTO DEVE RISPETTARE. MEDIANTE ATTIVITÀ DI MONITORAGGIO CONTINUO GLI STUDENTI IMPARERANNO A CONFRONTARE IL PIANIFICATO CON IL REALIZZATO E A PRENDERE LE NECESSARIE DECISIONI.

CAPACITÀ DI APPRENDIMENTO:
SI MANIFESTERÀ MEDIANTE LA CAPACITÀ DI INDIVIDUARE INFORMAZIONI DI VALORE E DI ASSIMILARLE
PER SVILUPPARE ATTITUDINI AL PROBLEM SOLVING.
Prerequisiti
GLI STUDENTI DEVONO CONOSCERE I CONCETTI RELATIVI AGLI ALGORITMI E ALLE STRUTTURE DATI FONDAMENTALI E SAPERLI IMPLEMENTARE MEDIANTE I LINGUAGGI DI PROGRAMMAZIONE PROCEDURALI E AD OGGETTI.
SONO NECESSARIE ANCHE COMPETENZE RELATIVE ALLE BASI DI DATI E IN PARTICOLARE VIENE RICHIESTA LA CONOSCENZA DEL MODELLO RELAZIONALE E DEL LINGUAGGIO SQL.
GLI STUDENTI DEVONO GIÀ ESSERE IN GRADO DI SCRIVERE PROGRAMMI PER RISOLVERE SEMPLICI PROBLEMI DI PROGRAMMAZIONE.
E' DESIDERABILE, ANCHE SE NON INDISPENSABILE, LA CONOSCENZA DEL LINGUAGGIO PHP.
Contenuti
IL CORSO HA L’OBIETTIVO DI INTRODURRE LO STUDENTE AI CONCETTI DELL’INGEGNERIA DEL SOFTWARE E DI TECNICHE, STRUMENTI, METODI E METODOLOGIE PER LA REALIZZAZIONE DI SISTEMI SOFTWARE DI MEDIE E GRANDI DIMENSIONI.

CONCETTI FONDAMENTALI:
ATTIVITÀ DI SVILUPPO E ARTEFATTI;
LA GESTIONE DEL PROCESSO SOFTWARE;
LA GESTIONE DELLA COMUNICAZIONE.

MODELLARE IN UML:
DIAGRAMMI: CASI D'USO, CLASSI, INTERAZIONE, STATECHART, ATTIVITÀ, DISPIEGAMENTO;
LA SPECIFICA DEI CASI D’USO;
ORGANIZZARE I DIAGRAMMI CON I PACKAGES.

DOMINARE LA COMPLESSITÀ:
RACCOLTA DEI REQUISITI;
REQUISITI FUNZIONALI E NON FUNZIONALI;
PROPRIETÀ DEI REQUISITI;
LE ATTIVITÀ DELL’INGEGNERIA DEI REQUISITI;
IL DOCUMENTO DI SPECIFICA DEI REQUISITI (RAD).

ANALISI DEI REQUISITI:
OGGETTI ENTITY, BOUNDARY E CONTROL;
LE SCHEDE CRC;
LE ATTIVITÀ DELL’ANALISI;
LA GESTIONE DEI REQUISITI.

DISEGNO DEL SISTEMA:
LA DECOMPOSIZIONE IN SOTTOSISTEMI;
SCOPI DI PROGETTO;
RAPPRESENTARE I SOTTOSISTEMI CON I PACKAGES;
LE INTERFACCE DEI SOTTOSISTEMI;
ACCOPPIAMENTO, COESIONE, LIVELLI E PARTIZIONI;
AGGREGARE CLASSI IN SOTTOSISTEMI;
STILI ARCHITETTURALI;
LE ATTIVITÀ DEL DISEGNO.

DISEGNO DEL SISTEMA:
DIAGRAMMI DI DISPIEGAMENTO;
OGGETTI PERSISTENTI;
DEFINIRE GLI SCHEMI DI CONTROLLO DEGLI ACCESSI;
PROGETTARE IL FLUSSO DI CONTROLLO DEI PROGRAMMI;
IDENTIFICARE LE CONDIZIONI LIMITE;
GESTIRE IL DISEGNO CON IL SDD.

DISEGNO A OGGETTI:
LA SPECIFICA DELLE INTERFACCE, TIPI, SEGNATURE E VISIBILITÀ;
CONTRATTI: INVARIANTI, PRECONDIZIONI E POSTCONDIZIONI,
CENNI SUL LINGUAGGIO OCL;
LE ATTIVITÀ DELLA SPECIFICA DELLE INTERFACCE;
DOCUMENTARE IL DISEGNO A OGGETTI CON L’ODD.

DAI MODELLI AL CODICE:
CONCETTI DI MAPPATURA: TRASFORMAZIONE DI MODELLI; RIFACIMENTI, FORWARD ENGINEERING, REVERSE ENGINEERING,
LE ATTIVITÀ DI MAPPATURA;
INCAPSULAMENTO DEL CODICE;
LA GESTIONE DELL’IMPLEMENTAZIONE.

IL TESTING:
CONCETTI DI TESTING;
ATTIVITÀ DI TESTING: ISPEZIONE, TESTING DI USABILITÀ, TESTING DI COMPONENTE (O UNITARIO), TEST D’INTEGRAZIONE;
TESTING DI COMPONENTE: TECNICHE E WHITEBOX, TESTING BASATO SULLO STATO DEGLI OGGETTI;
TESTING D’INTEGRAZIONE: STRATEGIE BOTTOM UP, TOP DOWN E SANDWICH;
TESTING DI SISTEMA;
LA GESTIONE DEL TESTING.
Metodi Didattici
IL CORSO DI INGEGNERIA DEL SOFTWARE PREVEDE 48 ORE DI LEZIONI FRONTALI E 36 ORE DI ESERCITAZIONI ASSISTITE IN LABORATORIO.
GLI STUDENTI VERRANNO ORGANIZZATI IN GRUPPI DI LAVORO E AD OGNI GRUPPO VERRÀ ASSEGNATO UN PROGETTO PER
LA REALIZZAZIONE DI SOFTWARE APPLICATIVO IN AREA GESTIONALE O TECNICA.
A VALLE DELLE LEZIONI DI CARATTERE TEORICO, SARANNO PIANIFICATE ESERCITAZIONI PRATICHE FINALIZZATE A UNA MIGLIORE
ASSIMILAZIONE DEI CONCETTI TRASMESSI DURANTE LE LEZIONI FRONTALI E SI RICHIEDERÀ CHE I GRUPPI DI LAVORO TRASFERISCANO
LE CONOSCENZE ACQUISITE AI PROGETTI ASSEGNATI.
A SOSTEGNO DI TUTTO IL CICLO DI APPRENDIMENTO, SI UTILIZZERÀ IL SISTEMA PER LA GESTIONE DELLA CONOSCENZA
"KNOWLEDGE TREE", MEDIANTE IL QUALE GLI STUDENTI INTERAGIRANNO CON IL DOCENTE E TRA LORO PER CONDIVIDERE
IL MATERIALE DIDATTICO E GLI ARTEFATTI PRODOTTI DURANTE IL PROCESSO DI SVILUPPO.
Verifica dell'apprendimento
IL CORSO PREVEDE UNA PRESENZA COSTANTE DEGLI STUDENTI SIA IN AULA CHE IN LABORATORIO.
LE ATTIVITÀ DI VERIFICA DELL’APPRENDIMENTO INIZIERANNO GIÀ DOPO IL PRIMO MESE DI CORSO E CONTINUERANNO ALLE MILESTONE SIGNIFICATIVE DI PROGETTO.

LA VERIFICA FINALE CONSISTE IN:

1. UNA PROVA SCRITTA CON QUESITI A RISPOSTA MULTIPLA SUI CONTENUTI TEORICI E/O SEMPLICI PROBLEMI DI MODELLAZIONE IN UML (20 PUNTI);
2. DISCUSSIONE DEL PROGETTO PER ACCERTARE LE CAPACITÀ PRATICHE ACQUISITE E IL CONTRIBUTO INDIVIDUALE ALLA REALIZZAZIONE(10 PUNTI).
Testi
1. BERND BRUEGGE, ALLEN H. DUTOIT “OBJECT-ORIENTED SOFTWARE ENGINEERING USING UML, PATTERNS AND JAVA” - THIRD ED. - PEARSON, 2010.
(CAP. DA 1 A 7 INCLUSO, 9, 10, 11, 14 E 15).

2. IAN SOMMERVILLE “SOFTWARE ENGINEERING” NINTH ED., ADDISON WESLEY, 2011.
(CAP. 1 E 22)

3. SLIDE DEL CORSO
Altre Informazioni
I TESTI DI RIFERIMENTO SARANNO INTEGRATI CON APPUNTI E MATERIALE DIDATTICO CON PARTICOLARE RIFERIMENTO AGLI STRUMENTI SOFTWARE UTILIZZATI DURANTE IL CORSO.

PER TUTTE LE ATTIVITÀ DI ORIENTAMENTO RIFERIRSI AGLI ORARI DI RICEVIMENTO, OPPURE SCRIVERE ALLA MAIL NOTA@UNISA.IT OPPURE UTILIZZARE IL SISTEMA "KOWLEDGE TREE" NON APPENA SI RICEVERANNO LE CREDENZIALI DI ACCESSO.
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2016-09-30]