|
|
Riga 1: |
Riga 1: |
− | [[Categoria:Corsi]][[Categoria:Corsi Informatica]][[Categoria:Corsi Secondo Semestre]]
| |
| | | |
| == News == | | == News == |
| | | |
− | === 07/03/06: Orario === | + | === Orario === |
| | | |
| '''L'orario delle lezioni viene modificato in '''17:45 - 19:15''' | | '''L'orario delle lezioni viene modificato in '''17:45 - 19:15''' |
− |
| |
− | === 06/04/06: Primo Compitino ===
| |
− |
| |
− | '''Il compitino si terrà, invece del giorno <font color=red>28/04</font> come precedentemente segnalato, il <font color=red>05/05</font> in aula 200 alle 17:30'''
| |
− |
| |
− | === 20/04/06: Primo Compitino in data '''05/05''' ===
| |
− |
| |
− | '''E' stato confermato dal prof. Ornaghi che il compitino sarà il <font color=red>5 maggio ore 17.30 aula 200 settore didattico Via Celoria</font>.'''
| |
− |
| |
− | === 04/05/06: Lezione di preparazione al compitino ===
| |
− |
| |
− | '''Il giorno 04/05 durante il normale orario di lezione il prof si è reso disponibile a fare esercizi in preparazione al compitino.'''
| |
− |
| |
− | === Lezioni cancellate/spostate ===
| |
− | ==== Lezione del 27/04/2006 ====
| |
− |
| |
− | AVVISO: causa indisponibilita' dell'aula Beta, la lezione del '''27/04/2006''' sara' in '''via Celoria''', aula '''303'''
| |
| | | |
| === Appelli === | | === Appelli === |
Riga 33: |
Riga 15: |
| *25/1/2007 | | *25/1/2007 |
| | | |
− | == Anni precedenti ==
| |
| == Informazioni generali == | | == Informazioni generali == |
| === Docenti === | | === Docenti === |
− | [[Mario Ornaghi]] | + | [[Giancarlo Martella]] |
− | === Corsi di laurea ===
| |
− | *[[:Categoria:Corsi Informatica|Informatica]]
| |
| === Modalità d'esame === | | === Modalità d'esame === |
− | * Compitini e, per chi non ha fatto o superato i compitini, orale tradizionale | + | * Esame scritto. Domande aperte. |
− | * Orale:
| |
− | ** per chi ha fatto i compitini: verbalizzazione del voto dei compitini, con eventuali brevi domande nel caso di incertezze;
| |
− | ** per chi non ha fatto i compitini o non è soddisfatto del voto dei compitini orale dettagliato; il voto sarà determinato dall’orale.
| |
− | === Prerequisiti al corso ===
| |
− | === Orari e luogo delle lezioni ===
| |
− | *Martedì ''17:45-19:15'' Aula Beta (218 posti, via Comelico 39)
| |
− | *Giovedì ''17:45-19:15'' Aula Beta (218 posti, via Comelico 39)
| |
− | *[http://www.dsi.unimi.it/occorrenza.php?z=0;id_corso=5;id_occ=975 link al corso su DSI]
| |
− | === Orario di ricevimento studenti ===
| |
− | == Informazioni specifiche ==
| |
| === Siti del corso === | | === Siti del corso === |
− | *[http://www.dsy.it/forum/forumdisplay.php?s=&forumid=85 http://www.dsy.it/forum/forumdisplay.php?s=&forumid=85 ('''hosted forum del professor Ornaghi''')]
| |
| === Forum del corso, e affini === | | === Forum del corso, e affini === |
− | * [http://www.dsy.it/forum/forumdisplay.php?s=&forumid=237 Forum sul Dsy di Ingegneria del Software (in comune con turno 1)]
| |
− | * [http://www.dsy.it/forum/forumdisplay.php?s=&forumid=85 http://www.dsy.it/forum/forumdisplay.php?s=&forumid=85 ('''hosted forum del professor Ornaghi''')]'''
| |
− | '''NOTA''': per avere la password del Forum chiedere in [http://www.dsy.it/forum/showthread.php?s=&threadid=9431 questo thread]
| |
− |
| |
| == Materiale didattico == | | == Materiale didattico == |
| === Programma del corso === | | === Programma del corso === |
− | * Parte I. '''Generalità e Progettazione | + | * Parte I |
− | ** Introduzione all’ingegneria del software; | + | ** Intro |
− | ** Ciclo di vita del Software
| + | *Parte II=== Esami passati, tesine, compiti .. === |
− | ** Qualità e Principi
| |
− | ** Cenni su Requisiti ed Analisi
| |
− | ** Progettazione ed Architetture
| |
− | *Parte II. '''Analisi, Specifica e Verifica
| |
− | ** Analisi, specifica e verifica nel ciclo di vita
| |
− | ** Specifica
| |
− | *** Operazionale vs dichiarativa
| |
− | *** formale vs informale
| |
− | ** Verifica
| |
− | *** Testing
| |
− | *** Analisi
| |
− | *** Tools
| |
− | *Parte III. '''Analisi, Progettazione e programmazione OO (Object Oriented) | |
− | ** Sarà interfogliata alle parti I e II, specializzandole al caso OO
| |
− | ***In particolare, Principi di OOA&P: patterns
| |
− | ** Introdurrà e userà UML
| |
− | === Testi ===
| |
− | *'''Ghezzi, Jazayeri, Mandrioli: Ingegneria del Software - fondamenti e principi, 2° ed., Prentice Hall'''
| |
− | ** per la parte UML<br>''C. Larman: Applicare UML e i pattern – 3° ed., Pearson 2005
| |
− | === Altro materiale consigliato ===
| |
− | *''Gamma et al: Design Patterns. Prima edizione italiana. Addison-Wesley Italia, 2002
| |
− | *''M. Fowler. UML distilled. Prima edizione italiana. Addison Wesley Italia, 2000
| |
− | === Video delle lezioni ===
| |
− | === Appunti ===
| |
− | * [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 '''Lucidi A.A. 2005/2006]'''
| |
− | (si possono scaricare solo '''dopo'' aver eseguito il login come utente Dsy e aver inserito la password)
| |
− | * [http://www.dsy.it/forum/showthread.php?s=&threadid=18011 Lucidi A.A. 2004/2005]
| |
− | | |
− | === Altro materiale in Internet ===
| |
− | Si consiglia l'utilizzo del software free '''ARGO''', scaricabile gratuitamente da [http://argouml.tigris.org http://argouml.tigris.org]
| |
− | | |
− | === Esami passati, tesine, compiti .. === | |
| | | |
| == Diario del corso == | | == Diario del corso == |
Riga 101: |
Riga 33: |
| | | |
| * Introduzione al corso | | * Introduzione al corso |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
| === Lezione del 09/03/2006 === | | === Lezione del 09/03/2006 === |
− |
| |
− | * [[:it:Ingegneria del software#Storia|Nascita dell'ingegneria del software]]
| |
− |
| |
− | * [[:it:Ingegneria del software|Ingegneria del software]]
| |
− | ** definizioni
| |
− |
| |
− | * [[:it:Ciclo di vita del software|Ciclo di vita del software]]
| |
− | ** [[:it:Modello a cascata|modello a cascata]]: analisi dei requisiti, disegno e specifica del sistema, codifica e verifica dei moduli, integrazione e verifica del sistema, rilascio e manutenzione
| |
− | * [[:it:Ciclo di vita del software#Modelli e metamodelli di ciclo di vita|Altri processi di sviluppo]]
| |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
| === Lezione del 14/03/2006 === | | === Lezione del 14/03/2006 === |
− |
| |
− | * [[:it:Qualità del software|Qualità del software]]
| |
− | ** Classificazione delle qualità
| |
− | *** Qualità [[:it:Qualità del software#Qualità interne|interna]], [[:it:Qualità del software#Parametri di qualità esterni|esterna]], del prodotto, del processo
| |
− | ** Le principali qualità
| |
− | *** Qualità comportamentali ([[:it:Qualità del software#Robustezza|robustezza]], [[:it:Qualità del software#Affidabilità|affidabilità]], completezza, [[:it:Qualità del software#Usabilità|usabilità]])
| |
− | *** [[:it:Qualità del software#Efficienza e prestazioni|Prestazioni]]
| |
− | *** [[:it:Qualità del software#Manutenibilità|Manutenibilità]]
| |
− | *** Utilizzabilità del software ([[:it:Qualità del software#Riusabilità|riusabilità]])
| |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
− | === Lezione del 16/03/2006 ===
| |
− |
| |
− | * [[:it:Qualità del software|Qualità del software]]
| |
− | ** Utilizzabilità
| |
− | *** [[:it:Qualità del software#Riusabilità|Riusabilità]]
| |
− | *** [[:it:Qualità del software#Portabilità|Portabilità]]<br><small>= capacità di un sistema software di essere adattato a piattaforme HDW e sistemi operativi o SFTW diversi</small>
| |
− | *** Interoperabilità<br><small>= capacità di un sistema di cooperare con altri sistemi</small>
| |
− |
| |
− | * Qualità del disegno e del codice
| |
− | ** [[:it:Qualità del software#Verificabilità|Verificabilità]]<br><small>= misura l’effettività (ai fini della verifica) di documentazione e moduli di verifica</small>
| |
− | ** Comprensibilità<br><small>= misura della chiarezza di codice, disegno, specifiche, a parità di difficoltà intrinseca dell’ambito di problema</small>
| |
− |
| |
− | * Qualità del processo
| |
− | ** Produttività<br><small>= misura la produttività di un processo di produzione del software</small>
| |
− | ** Tempestività<br><small>= capacità del processo di rispettare i tempi previsti</small>
| |
− | ** Visibilità
| |
− |
| |
− | * I '''Principi'''
| |
− | ** Sono orientati, in particolare, alle qualità [[:it:Qualità del software#Affidabilità|affidabilità]] e modificabilità<br>Sono:<br>rigore e formalità<br><small>seguire un procedimento disciplinato e rigoroso; usare metodi formali dove appropriato; formalizzare il problema</small>
| |
− | ** separazione (separation of concerns)<br><small>trattare separatamente problematiche diverse</small>
| |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
− | === Lezione del 21/03/2006 ===
| |
− |
| |
− | * I '''Principi'''
| |
− | ** modularità<br><small>decomporre un sistema in parti coese e con basso accoppiamento, dette moduli</small>
| |
− | *** alta coesione
| |
− | *** basso accoppiamento
| |
− | ** astrazione<br><small>astrarre dai dettagli non rilevanti rispetto allo scopo</small>
| |
− | ** anticipazione dei cambiamenti<br><small>prevedere le possibili modifiche adattive, perfettive, di riuso</small>
| |
− | ** generalità<br><small>chiedersi sempre se un problema può essere risolto come caso particolare di un problema più generale.</small>
| |
− | ** incrementalità <br><small>procedere per incrementi</small>
| |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
− | === Lezione del 23/03/2006 ===
| |
− |
| |
− | * La fase di disegno o progetto
| |
− | ** [[:it:Analisi dei requisiti|Analisi]] e specificazione dei requisiti
| |
− | ** La fase di disegno ([[:it:Progettazione (ingegneria del software)|progetto]])
| |
− | ***Disegno architetturale
| |
− | ***Disegno del software
| |
− |
| |
− | * Caratteristiche di disegno
| |
− | ** Tecniche di modularizzazione
| |
− | *** I moduli: aspetti strutturali
| |
− | *** La relazione ''"usa"''
| |
− | *** grado di accoppiamento
| |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
− | === Lezione del 28/03/2006 ===
| |
− |
| |
− | '''Prima raccolta firme per il compitino, il foglio girerà ancora settimana prossima'''
| |
− |
| |
− | * La Relazione ''"componente di"''<br><small>consente di ''documentare le scelte man mano fatte''<br>controllare gli ''effetti sui livelli alti di modifiche introdotte nei livelli più bassi'', al fine di mantenere la consistenza della documentazione<br>''sviluppare famiglie di prodotti''</small>
| |
− | ** Aspetti strutturali di ''usa'' e ''componente di''
| |
− |
| |
− | * Nozione di ''modulo''
| |
− | ** [[:it:Interfaccia (informatica)|Interfaccia]]<small><br>rappresenta tutto ciò che è necessario sapere per utilizzare un modulo M, e deve essere specificata in modo preciso e rigoroso</small>
| |
− | ** [[:it:Incapsulamento (informatica)|Incapsulamento o Information hiding]]<small><br>nascondere gli aspetti implementativi</small>
| |
− | ** Pubblicazione delle interfacce
| |
− | *** cosa pubblicare nelle interfacce<small><br>trascurare i dettagli irrilevanti e mettere solo quelli essenziali rispetto allo scopo</small>
| |
− | *** come specificare le interfacce in modo rigoroso
| |
− |
| |
− | * Notazioni per i moduli: requisiti essenziali
| |
− | ** alcuni esempi
| |
− | ** moduli generici
| |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
− | === Lezione del 30/03/2006 ===
| |
− |
| |
− | '''Seconda raccolta firme per il compitino, il foglio girerà ancora settimana prossima.<br>In ogni caso basta una sola firma.'''
| |
− |
| |
− | * Disegno nei sistemi concorrenti e distribuiti
| |
− | ** I [[:it:Monitor (sincronizzazione)|monitor]]
| |
− | ** Guardians (tipico di [[:Wikipedia:Ada programming language|ADA]])
| |
− | ** Software distribuito
| |
− | *** legame Modulo - Macchina
| |
− | *** comunicazione fra moduli<small><br>chiamata procedura remota<br>messaggi</small>
| |
− | *** duplicazione e distribuzione
| |
− |
| |
− | * Architettura
| |
− | ** Architettura di Sistema<small><br>Struttura delle parti che compongono un’installazione completa + individuazione delle responsabilità delle parti + interconnessioni + eventualmente tecnologia</small>
| |
− | *** Architetture generali
| |
− | **** [[:it:Pipeline software|pipeline]]<small><br>l'uscita di un elemento è presa come ingresso dell'elemento successivo</small>
| |
− | **** blackboard
| |
− | **** basate su eventi<small><br>le varie componenti rispondono al verificarsi di determinati eventi</small>
| |
− | *** Architetture orientate a domini specifici
| |
− | **** [[:it:Modello-vista-controllore|model - view - controller]]
| |
− | **** [[:it:Sistema client/server|client - server]]
| |
− | ** Componenti<small><br>insieme di componenti software di livello applicativo + relazioni strutturali fra essi + dipendenze che influiscono sul loro comportamento<br>in generale è una parte software riusabile in più applicazioni distinte</small>
| |
− | *** Architettura come piattaforma per l'integrazione delle componenti<small><br>ad esempio in ambiente distribuito CORBA (vedi wikipedia [[:it:CORBA|italia]] o [[:Wikipedia:CORBA|inglese]])<br>interfacce di comunicazione definite in un linguaggio standard: [[:Wikipedia:Interface description language|IDL]]</small>
| |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
− | === Lezione del 04/04/2006 ===
| |
− |
| |
− | * Object Oriented Design (OOD) e [[:it:Programmazione orientata agli oggetti|Object Oriented Programming]] (OOP)
| |
− | ** caratteristiche generali
| |
− | *** OOP per il software di qualità<small><br>facilita in particolare<br>Utilizzabilità<br>Manutenibilità<br>che derivano da [[:it:Programmazione orientata agli oggetti#Ereditarietà|eredità]], [[:it:Programmazione orientata agli oggetti#Polimorfismo|polimorfismo]], [[:it:Classe astratta|classi astratte]] ed interfacce</small>
| |
− | *** OOP e principi
| |
− | *** Collaborazione e responsabilità, aspetti architetturali
| |
− |
| |
− | * [[:it:Programmazione orientata agli oggetti|OOP]] tramite [[:it:UML|UML]]
| |
− | ** UML: generalità<small><br>linguaggio di modellazione OO<br>linguaggio grafico<br>sintassi grafica organizzata a 4 livelli<br>semantica type-instance<br>formalismo aperto ad estensioni e personalizzazioni</small>
| |
− | *** UML per il disegno: aspetti architetturali<small><br>diagrammi statici e dinamici<br>relazioni fra moduli</small>
| |
− | **** generalizzazione
| |
− | **** realizzazione
| |
− | **** dipendenza
| |
− | **** associazione
| |
− | ** Diagrammi di classe
| |
− | *** [[:it:Object Diagram|Oggetti]] e [[:it:Class Diagram|Classi]] in UML
| |
− | *** Semantica di istanza delle classi implementative<small><br>una classe implementativa è interpretata (nella semantica di istanza) come l’insieme delle sue istanze</small>
| |
− | **** Identità ed uguaglianza strutturale di oggetti<small><br>un oggetto è uguale solo a sé stesso</small>
| |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
− | === Lezione del 06/04/2006 ===
| |
− |
| |
− | * UML
| |
− | ** Generalizzazione fra classi
| |
− | ** Stereotipi predefiniti per classi
| |
− | *** sintassi grafica
| |
− | * Semantica type -> instance e la generalizzazione
| |
− | * UML
| |
− | ** Relazione di realizzazione nei diagrammi di classe
| |
− | ** Semantica delle interfacce
| |
− | ** Le associazioni
| |
− | *** I link
| |
− | ** Diagrammi di classe
| |
− | *** Diagrammi di oggetti e semantica dei diagrammi di classe
| |
− | **** Semantica type -> instance dei diagrammi di classe
| |
− | **** Associazioni, generalizzazione, ereditarietà
| |
− | **** I livelli del modello e degli oggetti nella modellazione
| |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
− | === Lezione del 11/04/2006 ===
| |
− |
| |
− | ''Ultima lezione valida per il compitino.<br>La prossima lezione si terrà giovedì 20/04.''
| |
− |
| |
− | * I diagrammi di classe nella programmazione OO.
| |
− | * Le associazioni nel disegno
| |
− | ** navigazione
| |
− | ** vincoli di molteplicità
| |
− | ** associazione di composizione
| |
− | ** associazione "parte di"
| |
− | * Ripasso
| |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
− | === Lezione del 20/04/2006 ===
| |
− |
| |
− | * I diagrammi di classe nella costruzione del modello concettuale
| |
− | * ''Preparazione per il compitino'': dettaglio ed alcuni esempi
| |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
− | === Lezione del 27/04/2006 ===
| |
− |
| |
− | * Diagrammi UML per il disegno di livelli più alti
| |
− | ** Diagrammi di Package
| |
− | *** Package come moduli
| |
− | *** import/export con i package
| |
− | ** Diagrammi di Componenti
| |
− | ** Diagrammi di Deployment
| |
− | * ''Soluzione esercizi lezione precedente''
| |
− |
| |
− | (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
| |
− |
| |
− | === Lezione del 02/05/2006 ===
| |
− |
| |
− | * Le specifiche nel processo di produzione
| |