Differenze tra le versioni di "Ingegneria del software Turno 2/2005-2006"

Da WikiDsy.
(Appunti)
 
(87 versioni intermedie di 9 utenti non mostrate)
Riga 1: Riga 1:
 +
[[Categoria:Corsi 2005-2006]]
 +
 
== News ==
 
== News ==
  Il corso inizia '''STASERA''' (07/03/06) in aula '''Beta''' alle 17:30.
+
 
 +
=== 07/03/06: Orario ===
 +
 
 +
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.
 +
 
 +
=== Secondo Compitino ===
 +
 
 +
Il secondo compitino si terrà il '''23/06''' in aula '''Beta''' alle '''17.00'''. Sono ammessi al secondo compitino gli studenti non insufficienti nel primo compitino.'''
 +
 
 
=== Lezioni cancellate/spostate ===
 
=== 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'''
 +
 +
==== Lezione del 18/05/2006 ====
 +
 +
  AVVISO: la lezione del 18 maggio '''non''' si terra' a causa impegno in commissione elettorale
 +
  per il CDA dell'Universita'.
 +
 +
=== Risultati Primo Compitino ===
 +
 +
  AVVISO: i risultati del primo compitino sono stati pubblicati [http://www.dico.unimi.it/files/avviso/allegati/allegati418281.pdf qui].
 +
 
=== Appelli ===
 
=== Appelli ===
 +
 
*20/4/2006
 
*20/4/2006
 
*22/6/2006
 
*22/6/2006
Riga 8: Riga 45:
 
*21/9/2006  
 
*21/9/2006  
 
*19/10/2006
 
*19/10/2006
*25/1/2007  
+
*25/1/2007
 +
 
 
== Anni precedenti ==
 
== Anni precedenti ==
 
== Informazioni generali ==
 
== Informazioni generali ==
Riga 16: Riga 54:
 
*[[:Categoria:Corsi Informatica|Informatica]]
 
*[[:Categoria:Corsi Informatica|Informatica]]
 
=== Modalità d'esame ===
 
=== Modalità d'esame ===
 +
* Compitini e, per chi non ha fatto o superato i compitini, orale tradizionale
 +
* 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 ===
 
=== Prerequisiti al corso ===
 
=== Orari e luogo delle lezioni ===
 
=== Orari e luogo delle lezioni ===
*Martedì ''17:30-19:30'' Aula Beta (218 posti, via Comelico 39)  
+
*Martedì ''17:45-19:15'' Aula Beta (218 posti, via Comelico 39)  
*Giovedì ''17:30-19:30'' 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]
 
*[http://www.dsi.unimi.it/occorrenza.php?z=0;id_corso=5;id_occ=975 link al corso su DSI]
 
=== Orario di ricevimento studenti ===
 
=== Orario di ricevimento studenti ===
 
== Informazioni specifiche ==
 
== 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=237 Forum "libero" sul Dsy]
+
* [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''')]'''
* [http://www.dsy.it/forum/forumdisplay.php?s=&forumid=85 Hosted forum del professore]
+
  '''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
 +
** Introduzione all’ingegneria del software;
 +
** Ciclo di vita del Software
 +
** 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 ===
 
=== 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 ===
 
=== 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 ===
 
=== Video delle lezioni ===
 
=== Appunti ===
 
=== 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]
 
* [http://www.dsy.it/forum/showthread.php?s=&threadid=18011 Lucidi A.A. 2004/2005]
  
 
=== Altro materiale in Internet ===
 
=== 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 .. ===
 
=== Esami passati, tesine, compiti .. ===
 +
 
== Diario del corso ==
 
== Diario del corso ==
 +
 
=== Lezione del 07/03/2006 ===
 
=== Lezione del 07/03/2006 ===
   Da farsi stasera...
+
 
[[Categoria:Corsi]][[Categoria:Corsi Informatica]][[Categoria:Corsi Secondo Semestre]]
+
* Introduzione al corso
 +
 
 +
  (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
 +
 
 +
=== 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 ===
 +
 
 +
* [[: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
 +
* Analisi dei requisiti
 +
** Analisi OO
 +
** Funzioni del sistema
 +
* Analisi concettuale
 +
** Glossario
 +
* UML: [[:it:Use Case Diagram|Casi d'uso]]
 +
** Sistema ed attori
 +
** Presentazione
 +
** Classificazione
 +
** Estensioni ed inclusioni
 +
** Casi d'uso rispetto a disegno e specifica
 +
* ''Esercizio in preparazione al compitino''
 +
 
 +
  (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
 +
 
 +
=== Lezione del 09/05/2006 e 11/05/2006 ===
 +
 
 +
* Le specifiche e il loro ruolo
 +
** Specifica dei requisiti
 +
** Specifica di disegno
 +
** Specifica dei vincoli
 +
** Specifica dei moduli
 +
* Utilità delle specifiche
 +
** Comprendere e precisare i requisiti dell’utente
 +
** Stabilire i requisiti del sistema verso l'implementazione
 +
** Specificare l’interfaccia fra sistema ed esterno
 +
** Fornire precisi punti di riferimento per le modifiche
 +
* Qualità principali delle specifiche
 +
** Comprensibilità, chiarezza e non ambiguità
 +
** Consistenza
 +
** Completezza
 +
* Stili di specifica
 +
* Specifiche dichiarative
 +
** UML, diagrammi di classe e vincoli
 +
** Raffinamenti, disegno e specifica dei moduli
 +
 
 +
* I Vincoli ed [[:it:OCL|OCL]]
 +
** I vincoli nella specifica
 +
** OCL
 +
*** Sintassi, tipi base
 +
*** Operazioni su collection, exists e forAll, Set, Bag, Sequence
 +
*** Segnatura derivata dal modello
 +
*** Semantica
 +
* Specifica UML dei contratti
 +
** Correttezza rispetto ai contratti ed ai vincoli
 +
 
 +
  (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
 +
 
 +
=== Lezione del 16/05/2006 ===
 +
 
 +
  AVVISO: la lezione del 18 maggio '''non''' si terra' a causa impegno in commissione elettorale
 +
  per il CDA dell'Universita'.
 +
 
 +
* [[:it:UML|UML]]: Diagrammi di interazione
 +
** Diagrammi di collaborazione<small><br>diagrammi di oggetti che mostrano come i messaggi passano da un oggetto all’altro in uno scenario tipico</small>
 +
** [[:it:Sequence Diagram|Diagrammi di sequenza]]<small><br>mostrano come i messaggi si susseguano e siano collegati nell’asse del tempo</small>
 +
*** messaggi e stacking
 +
*** messaggi sincroni e asincroni e creazione oggetti
 +
* [[:it:Automa (informatica)|Automi]]
 +
* UML: [[:it:Statechart Diagram|Diagrammi di stato]]
 +
* UML: eventi
 +
** call events, signals e time/change events
 +
 
 +
  (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
 +
 
 +
=== Lezione del 18/05/2006 ===
 +
 
 +
  SOSPESA
 +
 
 +
=== Lezione del 23/05/2006 ===
 +
 
 +
* Transizioni in [[:it:UML|UML]]
 +
* Stati in UML
 +
* Norma generale<small><br>Quando il risultato di un metodo (o componente) non è costante, ma dipende dalla storia precedente, è bene descrivere il comportamento dell’oggetto mediante un diagramma di stato.</small>
 +
* Specifiche in presenza di concorrenza; concorrenza nei diagrammi di stato
 +
** Attività interne
 +
** Attività interne concorrenti
 +
** Buffer, produttore, consumatore
 +
* Diagrammi di attività in UML
 +
** Transizioni nei diagrammi di attività
 +
*** branch, fork, join
 +
** Uso
 +
* Reti di Petri
 +
** Modello di computazione: marcatura, condizione
 +
** Modello di computazione: abilitazione, scatto, eventi
 +
** Modello di computazione: sequenze di scatto e computazioni
 +
 
 +
  (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
 +
 
 +
=== Lezione del 25/05/2006 ===
 +
 
 +
* Reti di Petri
 +
** Concorrenza
 +
* Pattern (cenni)
 +
** [[:Wikipedia:GRASP (Object Oriented Design)|GRASP]] (General Responsibility Assignment Software Patterns)
 +
*** GRASP valutativi
 +
*** GRASP basilari
 +
**** Creator
 +
**** Don't talk to strangers
 +
**** Pure Fabrication
 +
** Pattern GRASP di disegno
 +
*** Controller
 +
*** Command
 +
 
 +
  (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
 +
 
 +
=== Lezione del 30/05/2006 ===
 +
 
 +
  (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
 +
 
 +
=== Lezione del 01/06/2006 ===
 +
 
 +
  (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
 +
 
 +
=== Lezione del 06/06/2006 ===
 +
 
 +
  (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])
 +
 
 +
=== Lezione del 08/06/2006 ===
 +
 
 +
* Strategie per il test empirico
 +
** Criteri di test mediante suddivisione del dominio
 +
*** Principio di copertura completa
 +
** Insiemi di test minimali
 +
** Test in piccolo e in grande
 +
* Test in piccolo
 +
** Test con scatola trasparente (in piccolo)
 +
*** Criterio di copertura delle istruzioni
 +
*** Criterio di copertura degli archi
 +
*** Criterio di copertura dei cammini
 +
*** Copertura delle condizioni e delle condizioni multiple<small><br>La copertura delle condizioni richiede che ogni condizione atomica sia esercitata almeno una volta per vero e almeno una volta per falso</small>
 +
** Test con scatola nera (in piccolo)<small><br>è guidato dalle specifiche. E' detto anche test funzionale</small>
 +
*** Criteri derivati da contratti
 +
*** Uso di tabelle
 +
** Test di confine (boundary)
 +
* Oracoli
 +
 
 +
 
 +
* Test in grande
 +
* Test dei moduli
 +
** Stub e driver
 +
* Test di integrazione
 +
** Test di integrazione bottom-up / top-down (relazione “uses” aciclica)
 +
** Bottom-up e top-down modulari (relazione di sotto-modulo)
 +
** Test di integrazione object-oriented
 +
* Test di sistema
 +
** Test di sovraccarico
 +
** Test di robustezza
 +
** Test di (non) regressione
 +
 
 +
 
 +
* Strumenti per il testing
 +
 
 +
  (slide disponibili [http://www.dsy.it/forum/showthread.php?s=&threadid=24522 qui])

Versione attuale delle 14:47, 2 ago 2006


News

07/03/06: Orario

L'orario delle lezioni viene modificato in 17:45 - 19:15

06/04/06: Primo Compitino

Il compitino si terrà, invece del giorno 28/04 come precedentemente segnalato, il 05/05 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 5 maggio ore 17.30 aula 200 settore didattico Via Celoria.

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.

Secondo Compitino

Il secondo compitino si terrà il 23/06 in aula Beta alle 17.00. Sono ammessi al secondo compitino gli studenti non insufficienti nel primo 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

Lezione del 18/05/2006

 AVVISO: la lezione del 18 maggio non si terra' a causa impegno in commissione elettorale
 per il CDA dell'Universita'.

Risultati Primo Compitino

 AVVISO: i risultati del primo compitino sono stati pubblicati qui.

Appelli

  • 20/4/2006
  • 22/6/2006
  • 18/7/2006
  • 21/9/2006
  • 19/10/2006
  • 25/1/2007

Anni precedenti

Informazioni generali

Docenti

Mario Ornaghi

Corsi di laurea

Modalità d'esame

  • Compitini e, per chi non ha fatto o superato i compitini, orale tradizionale
  • 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)
  • link al corso su DSI

Orario di ricevimento studenti

Informazioni specifiche

Siti del corso

Forum del corso, e affini

 NOTA: per avere la password del Forum chiedere in questo thread

Materiale didattico

Programma del corso

  • Parte I. Generalità e Progettazione
    • Introduzione all’ingegneria del software;
    • Ciclo di vita del Software
    • 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
      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

 (si possono scaricare solo 'dopo aver eseguito il login come utente Dsy e aver inserito la password)

Altro materiale in Internet

Si consiglia l'utilizzo del software free ARGO, scaricabile gratuitamente da http://argouml.tigris.org

Esami passati, tesine, compiti ..

Diario del corso

Lezione del 07/03/2006

  • Introduzione al corso
 (slide disponibili qui)

Lezione del 09/03/2006

 (slide disponibili qui)

Lezione del 14/03/2006

 (slide disponibili qui)

Lezione del 16/03/2006

  • Qualità del software
    • Utilizzabilità
      • Riusabilità
      • Portabilità
        = capacità di un sistema software di essere adattato a piattaforme HDW e sistemi operativi o SFTW diversi
      • Interoperabilità
        = capacità di un sistema di cooperare con altri sistemi
  • Qualità del disegno e del codice
    • Verificabilità
      = misura l’effettività (ai fini della verifica) di documentazione e moduli di verifica
    • Comprensibilità
      = misura della chiarezza di codice, disegno, specifiche, a parità di difficoltà intrinseca dell’ambito di problema
  • Qualità del processo
    • Produttività
      = misura la produttività di un processo di produzione del software
    • Tempestività
      = capacità del processo di rispettare i tempi previsti
    • Visibilità
  • I Principi
    • Sono orientati, in particolare, alle qualità affidabilità e modificabilità
      Sono:
      rigore e formalità
      seguire un procedimento disciplinato e rigoroso; usare metodi formali dove appropriato; formalizzare il problema
    • separazione (separation of concerns)
      trattare separatamente problematiche diverse
 (slide disponibili qui)

Lezione del 21/03/2006

  • I Principi
    • modularità
      decomporre un sistema in parti coese e con basso accoppiamento, dette moduli
      • alta coesione
      • basso accoppiamento
    • astrazione
      astrarre dai dettagli non rilevanti rispetto allo scopo
    • anticipazione dei cambiamenti
      prevedere le possibili modifiche adattive, perfettive, di riuso
    • generalità
      chiedersi sempre se un problema può essere risolto come caso particolare di un problema più generale.
    • incrementalità
      procedere per incrementi
 (slide disponibili qui)

Lezione del 23/03/2006

  • La fase di disegno o progetto
    • Analisi e specificazione dei requisiti
    • La fase di disegno (progetto)
      • Disegno architetturale
      • Disegno del software
  • Caratteristiche di disegno
    • Tecniche di modularizzazione
      • I moduli: aspetti strutturali
      • La relazione "usa"
      • grado di accoppiamento
 (slide disponibili qui)

Lezione del 28/03/2006

 Prima raccolta firme per il compitino, il foglio girerà ancora settimana prossima
  • La Relazione "componente di"
    consente di documentare le scelte man mano fatte
    controllare gli effetti sui livelli alti di modifiche introdotte nei livelli più bassi, al fine di mantenere la consistenza della documentazione
    sviluppare famiglie di prodotti
    • Aspetti strutturali di usa e componente di
  • Nozione di modulo
    • Interfaccia
      rappresenta tutto ciò che è necessario sapere per utilizzare un modulo M, e deve essere specificata in modo preciso e rigoroso
    • Incapsulamento o Information hiding
      nascondere gli aspetti implementativi
    • Pubblicazione delle interfacce
      • cosa pubblicare nelle interfacce
        trascurare i dettagli irrilevanti e mettere solo quelli essenziali rispetto allo scopo
      • come specificare le interfacce in modo rigoroso
  • Notazioni per i moduli: requisiti essenziali
    • alcuni esempi
    • moduli generici
 (slide disponibili qui)

Lezione del 30/03/2006

Seconda raccolta firme per il compitino, il foglio girerà ancora settimana prossima.
In ogni caso basta una sola firma.
  • Disegno nei sistemi concorrenti e distribuiti
    • I monitor
    • Guardians (tipico di ADA)
    • Software distribuito
      • legame Modulo - Macchina
      • comunicazione fra moduli
        chiamata procedura remota
        messaggi
      • duplicazione e distribuzione
  • Architettura
    • Architettura di Sistema
      Struttura delle parti che compongono un’installazione completa + individuazione delle responsabilità delle parti + interconnessioni + eventualmente tecnologia
      • Architetture generali
        • pipeline
          l'uscita di un elemento è presa come ingresso dell'elemento successivo
        • blackboard
        • basate su eventi
          le varie componenti rispondono al verificarsi di determinati eventi
      • Architetture orientate a domini specifici
    • Componenti
      insieme di componenti software di livello applicativo + relazioni strutturali fra essi + dipendenze che influiscono sul loro comportamento
      in generale è una parte software riusabile in più applicazioni distinte
      • Architettura come piattaforma per l'integrazione delle componenti
        ad esempio in ambiente distribuito CORBA (vedi wikipedia italia o inglese)
        interfacce di comunicazione definite in un linguaggio standard: IDL
 (slide disponibili qui)

Lezione del 04/04/2006

  • Object Oriented Design (OOD) e Object Oriented Programming (OOP)
    • caratteristiche generali
      • OOP per il software di qualità
        facilita in particolare
        Utilizzabilità
        Manutenibilità
        che derivano da eredità, polimorfismo, classi astratte ed interfacce
      • OOP e principi
      • Collaborazione e responsabilità, aspetti architetturali
  • OOP tramite UML
    • UML: generalità
      linguaggio di modellazione OO
      linguaggio grafico
      sintassi grafica organizzata a 4 livelli
      semantica type-instance
      formalismo aperto ad estensioni e personalizzazioni
      • UML per il disegno: aspetti architetturali
        diagrammi statici e dinamici
        relazioni fra moduli
        • generalizzazione
        • realizzazione
        • dipendenza
        • associazione
    • Diagrammi di classe
      • Oggetti e Classi in UML
      • Semantica di istanza delle classi implementative
        una classe implementativa è interpretata (nella semantica di istanza) come l’insieme delle sue istanze
        • Identità ed uguaglianza strutturale di oggetti
          un oggetto è uguale solo a sé stesso
 (slide disponibili 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 qui)

Lezione del 11/04/2006

Ultima lezione valida per il compitino.
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 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 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 qui)

Lezione del 02/05/2006

  • Le specifiche nel processo di produzione
  • Analisi dei requisiti
    • Analisi OO
    • Funzioni del sistema
  • Analisi concettuale
    • Glossario
  • UML: Casi d'uso
    • Sistema ed attori
    • Presentazione
    • Classificazione
    • Estensioni ed inclusioni
    • Casi d'uso rispetto a disegno e specifica
  • Esercizio in preparazione al compitino
 (slide disponibili qui)

Lezione del 09/05/2006 e 11/05/2006

  • Le specifiche e il loro ruolo
    • Specifica dei requisiti
    • Specifica di disegno
    • Specifica dei vincoli
    • Specifica dei moduli
  • Utilità delle specifiche
    • Comprendere e precisare i requisiti dell’utente
    • Stabilire i requisiti del sistema verso l'implementazione
    • Specificare l’interfaccia fra sistema ed esterno
    • Fornire precisi punti di riferimento per le modifiche
  • Qualità principali delle specifiche
    • Comprensibilità, chiarezza e non ambiguità
    • Consistenza
    • Completezza
  • Stili di specifica
  • Specifiche dichiarative
    • UML, diagrammi di classe e vincoli
    • Raffinamenti, disegno e specifica dei moduli
  • I Vincoli ed OCL
    • I vincoli nella specifica
    • OCL
      • Sintassi, tipi base
      • Operazioni su collection, exists e forAll, Set, Bag, Sequence
      • Segnatura derivata dal modello
      • Semantica
  • Specifica UML dei contratti
    • Correttezza rispetto ai contratti ed ai vincoli
 (slide disponibili qui)

Lezione del 16/05/2006

 AVVISO: la lezione del 18 maggio non si terra' a causa impegno in commissione elettorale
 per il CDA dell'Universita'.
  • UML: Diagrammi di interazione
    • Diagrammi di collaborazione
      diagrammi di oggetti che mostrano come i messaggi passano da un oggetto all’altro in uno scenario tipico
    • Diagrammi di sequenza
      mostrano come i messaggi si susseguano e siano collegati nell’asse del tempo
      • messaggi e stacking
      • messaggi sincroni e asincroni e creazione oggetti
  • Automi
  • UML: Diagrammi di stato
  • UML: eventi
    • call events, signals e time/change events
 (slide disponibili qui)

Lezione del 18/05/2006

 SOSPESA

Lezione del 23/05/2006

  • Transizioni in UML
  • Stati in UML
  • Norma generale
    Quando il risultato di un metodo (o componente) non è costante, ma dipende dalla storia precedente, è bene descrivere il comportamento dell’oggetto mediante un diagramma di stato.
  • Specifiche in presenza di concorrenza; concorrenza nei diagrammi di stato
    • Attività interne
    • Attività interne concorrenti
    • Buffer, produttore, consumatore
  • Diagrammi di attività in UML
    • Transizioni nei diagrammi di attività
      • branch, fork, join
    • Uso
  • Reti di Petri
    • Modello di computazione: marcatura, condizione
    • Modello di computazione: abilitazione, scatto, eventi
    • Modello di computazione: sequenze di scatto e computazioni
 (slide disponibili qui)

Lezione del 25/05/2006

  • Reti di Petri
    • Concorrenza
  • Pattern (cenni)
    • GRASP (General Responsibility Assignment Software Patterns)
      • GRASP valutativi
      • GRASP basilari
        • Creator
        • Don't talk to strangers
        • Pure Fabrication
    • Pattern GRASP di disegno
      • Controller
      • Command
 (slide disponibili qui)

Lezione del 30/05/2006

 (slide disponibili qui)

Lezione del 01/06/2006

 (slide disponibili qui)

Lezione del 06/06/2006

 (slide disponibili qui)

Lezione del 08/06/2006

  • Strategie per il test empirico
    • Criteri di test mediante suddivisione del dominio
      • Principio di copertura completa
    • Insiemi di test minimali
    • Test in piccolo e in grande
  • Test in piccolo
    • Test con scatola trasparente (in piccolo)
      • Criterio di copertura delle istruzioni
      • Criterio di copertura degli archi
      • Criterio di copertura dei cammini
      • Copertura delle condizioni e delle condizioni multiple
        La copertura delle condizioni richiede che ogni condizione atomica sia esercitata almeno una volta per vero e almeno una volta per falso
    • Test con scatola nera (in piccolo)
      è guidato dalle specifiche. E' detto anche test funzionale
      • Criteri derivati da contratti
      • Uso di tabelle
    • Test di confine (boundary)
  • Oracoli


  • Test in grande
  • Test dei moduli
    • Stub e driver
  • Test di integrazione
    • Test di integrazione bottom-up / top-down (relazione “uses” aciclica)
    • Bottom-up e top-down modulari (relazione di sotto-modulo)
    • Test di integrazione object-oriented
  • Test di sistema
    • Test di sovraccarico
    • Test di robustezza
    • Test di (non) regressione


  • Strumenti per il testing
 (slide disponibili qui)