Ingegneria del Software

Anno Accademico 2012-13

Corso di Laurea in Informatica
Facoltà di Scienze
Codice insegnamento: 2086; CFU: 6

AVVISI

  • 09-06-14: Seminario Metriche e stime dei costi del software: Prima Parte. Presentazione: pdf
  • 02-09-13: Attenzione: piccole modifiche al documento che illustra il progetto da svolgere relative a quali parti della documentazione vanno stampate per la consegna.
  • 18-06-13: Giorno 05-07-2013 ore 10 si terrà un seminario dal titolo "L’innovazione tecnologica e la system integration, un caso di studio aziendale" a cura di personale della Engineering Ingegneria Informatica. TUTTI gli studenti sono CALDAMENTE invitati a partecipare.
  • 29-05-13: Presentazione su tirocini presso ICAR-CNR del 24-05-13 (pdf)
  • 20-05-13: Spostamento data primo appello dal 14-06 al 19-06
  • 13-05-13: E' stato pubblicato il tema di progetto standard nella sezione ESAMI
  • 07-05-13: Lista iscritti al 07-05-13. Si ricorda che TUTTI gli studenti devono iscriversi. Chi non fosse elencato in questa lista è pregato di contattare il docente.
  • 30-04-13: le lezioni del 07-05-13 e 09-05-13 sono rimandate
  • 27-04-13: E' stato inserito il testo dell'esercitazione sull'aeromodello nella sezione materiali didattici.
  • 26-04-13: E' stato inserito il testo dell'esercitazione sullo sportello bancomat nella sezione materiali didattici.
  • 15-04-13: Tutti gli studenti devono organizzarsi in gruppi da 3 persone. I gruppi devono essere comunicati al docente con una unica lista via email entro il 29-04-13. Gli studenti iscritti al corso (nel portale UNIPA) che non si fossero autonomamente inseriti in gruppi, saranno assegnati dal docente a gruppi nuovi o esistenti.
  • 10-04-13: A seguito della richiesta di molti studenti, la lezione del giorno 11-04-2013 è rimandata per permettere la partecipazione al seminario di Informatica Teorica.
  • 09-04-13: inseriti esempi di tesine nella sezione Link Utili/Materiali Didattici
  • ATTENZIONE: Gli studenti del corso devono registrarsi entro il 31-03-2013 tramite il portale UNIPA.

DOCENTE

Massimo Cossentino (web page)
E-mail: cossentino(at ]pa.icar.cnr.it  (sostituire (at ] con @)
Ricevimento: dopo le lezioni il martedì. Per appuntamento (via e-mail) presso il mio ufficio in viale delle scienze, ed. 11 (Sistemi Informativi di Ateneo).

DESCRIZIONE DEL CORSO

Codice dell'insegnamento: 2086
CFU: 6
Il corso si terrà al secondo semestre.
Orario delle lezioni:
martedì e giovedì, ore 15-17, aula 4.

Obiettivo del corso:
Obiettivo del corso è lo studio del processo di sviluppo del software (con particolare riferimento ai software object-oriented). Verranno esaminate le tecniche di raccolta dei requisiti, stesura delle specifiche, pianificazione, progettazione, implementazione, integrazione e manutenzione.
Più in dettaglio:
  • Imparare a progettare sistemi software, cioè:
    • Raccogliere, analizzare e documentare i requisiti
    • Definire l'architettura del sistema incluse eventuali soluzioni distribuite
    • Definire il progetto di dettaglio
    • Definire il piano di test e i criteri di validazione del sistema
  • Imparare a lavorare in gruppo, condividere informazioni e coordinare attività
Come studiare
Dal libro di testo, i paragrafi segnalati di seguito, e dalle slide complementate dagli appunti presi a lezione.

Una buona definizione di Ingegneria del software è stata fornita da D.L. Parnas:
Software engineering is the "multi-person construction of multi-version software"
D.L. Parnas. Some Software Engineering Principles. In Structured Analysis and Design, State of the Art Report. Infotech International. (1978).

PREREQUISITI

Sono richieste conoscenze di programmazione ad oggetti (linguaggi C++ e Java). Per gli studenti che non le possedessero, il corso prevede alcune lezioni sui fondamenti dalla programmazione ad oggetti e al Java

LEZIONI ED ESERCITAZIONI

  • Martedì ore 15-17, aula 4
  • Giovedì ore 15-17, aula 4

ESAMI

Gli esami si baseranno sulla discussione del progetto di un software ad oggetti. Ulteriori specifiche verranno fornite in seguito.

Chiarimenti sulle regole d'esame:
  • Lo studente che rifiutasse il voto dopo aver fatto esami con la tesina potrà ripresentarsi dopo i tempi previsti. Il docente gli comunicherà se dovrà rifare il progetto (eventualmente con un un altro gruppo di studenti) o meno.
  • ISCRIZIONE: gli studenti devono iscriversi all'appello dal sito del portale UNIPA entro una settimana dalla data d'esame. La consegna della tesina (in portineria del SIA, nei tempi previsti) NON vale come iscrizione all'appello ma in mancanza di essa gli studenti non potranno sostenere l'esame.
Si raccomanda agli studenti la rigida osservanza dei tempi di consegna delle tesine (entro le ore 12 del sesto giorno lavorativo antecedente la data di esame)
Documenti utili:
  • Tema di progetto standard per l'a.a. 2012-13(pdf). Attenzione sono state apportate piccole modifiche al documento che illustra il progetto da svolgere volte a specificare quali parti della documentazione vanno stampate per la consegna.
  • Programma previsto per l'a.a. 2012-13

DATE ESAMI

  • 19-06-2013 ore 10:00, Aula TBD
  • 05-07-2013 ore 9:30, Aula TBD
  • 10-09-2013 ore 14:30, Aula TBD
  • 25-09-2013 ore 14:30, Aula TBD

MATERIALE DIDATTICO

Libro di testo:
B. Bruegge, A. H. Dutoit. Object-Oriented Software Engineering: Using UML, Patterns and Java. Third edition. International edition. ISBN: 0-13-606125-7. Prentice Hall

Introduzione a Java:
Bruce Eckel. Thinking in Java 3rd edition. Scaricabile gratuitamente
Oracle. Learning the Java Language.
M. Tarquini, A. Ligi. http://javamattone.4it.it/javamattone.pdf. Scaricabile gratuitamente.

Libri di consultazione:
I. Sommerville. Software Engineering. Prentice Hall
UML e Unified Process. Analisi e Progettazione Object Oriented. J. Arlow e I. Neustadt. McGraw-Hill
J. Rumbaugh,I. Jacobson, G. Booch. The Unified Modeling Languge Reference Manual. Addison Wesley

ESERCITAZIONI
Le seguenti esercitazioni sono fornite come spunto per la applicazione di quanto studiato durante il corso. Gli studenti possono svolgerle volontariamente, si suggerisce di farlo in gruppo. La correzione avverrà durante l'orario di ricevimento o su appuntamento in altre date.
Bancomat
Aeromodello

ORGANIZZAZIONE DEL CORSO

Settim. Giorno Capitolo Paragr. Argomento Presentazione
1 26/2 Cap. 1 par. 1.1-1.4, 1.6 Introduzione al corso
Introduzione alla Ingegneria del Software

0-Introduzione al corso
L1_Introduction_ch01lect1
28/2     Introduzione alla programmazione orientata agli oggetti (parte 1)

J1-OOP
2 5/3   Introduzione alla programmazione orientata agli oggetti (parte 2)

J1-OOP
7/3 Cap. 2 par. 2.1-2.4 Introduzione all'UML. Diagrammi dei casi d'uso L2_ModelingwithUML_ch02lect1
3 12/3 Cap. 2 par. 2.1-2.4 UML (parte 2). Diagrammi dei casi d'uso, delle classi L3_ModelingWithUML_ch02lect2
14/3 Cap. 2 par. 2.1-2.4 Diagrammi di sequenza, attività, stato, deployment, interazione. L5_ModelingwithUML_ch02lect4
4 19/3 Cap. 4 par. 4.1-4.6 Raccolta dei requisiti L10_Requirements_Elicitation_ch04lect1
RAD document template (da integrare con libro e slide)
21/3 Cap. 4 par. 4.1-4.6 Modello Funzionale dei Requisiti

L11_Functional_Modeling_ch04lect3
5 26/3 Cap. 5 par. 5.1-5.6 Raffinamento dei casi d'uso.
Analisi dei Requisiti: Concetti iniziali.
L11_Functional_Modeling_ch04lect3
L12_ObjectModeling_ch05lect2
6 04/04 Cap. 5 par. 5.1-5.6 Analisi dei Requisiti: dai casi d'uso agli oggetti L12_ObjectModeling_ch05lect2
7 09/04 Cap. 5 par. 5.1-5.6 Analisi dei requisiti: modellazione del comportamento degli oggetti L13_DynamicModeling_ch05lect3
8 16/04 Cap. 6 par. Progettazione architetturale del sistema L14_systemdes_ch06lect1-short
18/04 Cap. 6 par. Progettazione architetturale del sistema L15_Addressing Design Goals_ch07lect1
SDD_template
9 30/04 Cap. 8 par. 1-3 (escluso 8.3.5) Riuso L16_ObjectDesign_ch08lect1
02/05 Cap. 8 par. 1-3 (escluso 8.3.5) Riuso
10 14/05 Cap. 9 par. 1-6 Riuso - Template Object Design
Specifica delle interfacce
Linguaggio OCL
ODD_template
L19_SpecifyingInterfaces_ch09lect1
L20_OCL_ch09lect2-short
16/05 Cap. 10 par. 1-6 Dai modelli al codice L21_MappingModelsToCode_ch10lect1-short
11 21/05 Cap. 11 par. 1-4 Dal modello ad oggetti al modello relazionale
Unit Testing
L22_MappingModelsToTRelationalSchema_ch10lect2 L23_UnitTesting_ch11lect1
23/05 Cap. 11 par. 1-4 Unit Testing
12 28/05 Cap. 11 par. 1-4 Integration and System Testing
L24_SystemTesting_ch11lect2-short
30/05 Cap. 11 par. 1-4 Integration and System Testing
Project Management
Sito su Project Management

EVENTI

La pagina eventi si trova qui

LINK UTILI

Scaletta complessiva per un progetto OO e consigli per la stesura delle tesine: vedasi consigli

Object Management Group (OMG)
Unified Modeling Language (UML) Official Specification (ver. 2.4.1.).

CASE tools
Astah Community (consigliato)
Violet
Poseidon

Editor Java
BlueJ
Eclipse

Materiali didattici:

Qui verranno pubblicati i link alle slide usate nel corso.
Template vari: RAD Template, SPMP_Template, SDD_template, ODD_template, Test_template.

Esempi di tesina:
tesina 1, tesina 2, tesina 3, esempio di documento RAD.