Sommario
Modello “Waterfall” .......................................................................................................................................... 3
Studio di fattibilità ......................................................................................................................................... 3
Analisi e specificazione dei requisiti .............................................................................................................. 3
Design ............................................................................................................................................................ 4
Codifica e test ................................................................................................................................................ 4
Integrazione e test nel sistema...................................................................................................................... 4
Distribuzione, installazione e settaggio ......................................................................................................... 4
Manutenzione e mantenimento ................................................................................................................... 4
In generale ..................................................................................................................................................... 5
Lo standard ISO 9126 ......................................................................................................................................... 5
Funzionalità ................................................................................................................................................... 5
Affidabilità ..................................................................................................................................................... 6
Usabilità ......................................................................................................................................................... 6
Efficienza
........................................................................................................................................................ 6
Manutenibilità ............................................................................................................................................... 6
Portabilità ...................................................................................................................................................... 6
Classi e oggetti ................................................................................................................................................... 6
Modificatori di visibilità ................................................................................................................................. 7
public ......................................................................................................................................................... 7
protected ................................................................................................................................................... 7
Amichevole ................................................................................................................................................ 7
private ........................................................................................................................................................ 7
Categorie di metodi membro ........................................................................................................................ 8
Costruttori ..................................................................................................................................................... 8
Finalizzatori .................................................................................................................................................... 8
this ................................................................................................................................................................. 8
Assegnamento e uguaglianza ........................................................................................................................ 9
Dati e metodi membro static......................................................................................................................... 9
Ereditarietà .................................................................................................................................................... 9
Metodi e classi final ................................................................................................................................. 10
Metodi e classi abstract ........................................................................................................................... 10
Interfacce ..................................................................................................................................................... 11
Polimorfismo ............................................................................................................................................... 11
Introduzione al software design ...................................................................................................................... 12
Moduli ......................................................................................................................................................... 12
Relazioni tra moduli ..................................................................................................................................... 13
USES ......................................................................................................................................................... 13
IS_COMPONENT_OF ................................................................................................................................ 13
INHERITS .................................................................................................................................................. 14
Contratti ...................................................................................................................................................... 14
Stili ............................................................................................................................................................... 15
Architettura funzionale ........................................................................................................................... 15
Sistema a strati ........................................................................................................................................ 15
Tubi e filtri................................................................................................................................................ 15
Sistemi basati su eventi ........................................................................................................................... 15
Sistemi basati su repository ..................................................................................................................... 15
UML ................................................................................................................................................................. 15
Introduzione a UML ..................................................................................................................................... 17
Viste di UML ................................................................................................................................................ 17
Vista dei casi d’uso .................................................................................................................................. 17
Vista strutturale ....................................................................................................................................... 17
Vista comportamentale ........................................................................................................................... 18
Vista implementativa ............................................................................................................................... 18
Vista ambientale ...................................................................................................................................... 18
Use Case Diagram ........................................................................................................................................ 18
Relazioni tra use case .............................................................................................................................. 20
Class Diagram .............................................................................................................................................. 21
Relazioni tra class diagram ...................................................................................................................... 21
Object Diagram ............................................................................................................................................ 23
Package Diagram ......................................................................................................................................... 23
Relazioni nel package diagram ................................................................................................................ 24
Modello “Waterfall”
Il modello tradizionale “Waterfall”:
Identificare le fasi e le attività
Forzare la successione lineare tra una fase e la successiva
Nessun ritorno (sono dannosi)
o Miglior controllo e pianificazione
Output (artefatti) standardizzato per ogni fase
Software come una produzione industriale.
Il modello “Waterfall” si divide in due fasi:
Prime fasi
o Studio di fattibilità
o Analisi e specificazione dei requisiti
o Design
Fasi finali
o Codifica e test
o Integrazione e test nel sistema
o Distribuzione, installazione e settaggio
o Manutenzione e mantenimento
Studio di fattibilità
Lo studio di fattibilità consiste in:
Analisi dei costi e dei benefici
Determinare se il progetto deve partire, possibili alternative e risorse necessarie
Produzione del documento degli studi di fattibilità
Il documento degli studi di fattibilità ha le seguenti parti:
Descrizione preliminare del problema
Gli scenari che descrivono le possibili soluzioni
Costi e pianificazione delle diverse alternative
In pratica lo studio di fattibilità è soggetto a costi in termini di tempo e denaro, infatti non si è sicuri che il
cliente accetterà il l’offerta. Ciò comporta che le alternative potrebbero non essere considerate e che i rischi
possano essere sottovalutati.
Analisi e specificazione dei requisiti
L’analisi e la specifica dei requisiti consiste in:
Analisi del dominio in cui l’applicazione lavorerà
Identificazione dei requisiti
Derivare le specifiche del software
Produzione del documento di analisi e specifica dei requisiti (RASD)
La derivazione delle specifica comporta un interazione con gli utenti e la comprensione delle proprietà del
dominio.
Importante per questa fase è rispondere a queste domande:
Chi userà il sistema?
Perché va sviluppato?
Perché gli utenti lo useranno?
Che cosa fornirà?
Dove verrà usato, su quale infrastruttura?
Quanto e quanto a lungo verrà usato?
Il RASD vede essere:
Preciso
Completo
Consistente
Comprensibile
Modificabile
Esso potrebbe includere un manuale preliminare per l’utente e la pianificazione di test di sistema.
Il RASD specifica i requisiti funzionali, i requisiti non funzionali e requisiti sul processo di sviluppo e
manutenzione.
Design
Il design definisce l’architettura del software:
I componenti (moduli)
Le relazioni tra componenti
Le interazioni tra componenti
L’obiettivo del design è supportare lo sviluppo concorrente e separare le responsabilità.
Alla fine viene prodotto il documento di design.
Codifica e test
Ogni modulo viene implementato con un linguaggio di programmazione scelto.
Ogni modulo viene testato isolatamente dallo sviluppatore dello stesso.
Il codice deve essere documentato e commentato.
Integrazione e test nel sistema
I moduli sono integrati col sistema/sottosistema e i sistemi/sottosistemi integrati sono testati.
Questa fase e la precedente possono essere integrate in un piano di implementazione incrementale.
Il test dell’intero sistema è necessario per verificare le proprietà complessive.
A volte si possono avere degli alpha test e dei beta test.
Distribuzione, installazione e settaggio
L'obiettivo è quello di distribuire l'applicazione e gestire le diverse installazioni e configurazioni nei sistemi
dei clienti.
Manutenzione e mantenimento
Esso comprende tutte lo modifiche apportate dopo il rilascio del software. Il software non si “consuma”,
quindi se ci sono errori, essi sono sempre stati presenti e mai identificati nei test.
Esso include tipi diversi di cambiamenti: correttivi e evolutivi. In generale ci sono tre tipi di modifiche:
I cambiamenti correttivi (bug fix)
I cambiamenti adattivi per adattare il sistema a cambi di ambiente o cambio di dettagli
I cambiamenti perfettivi per l’aggiunta di nuove funzionalità
In generale
Alcune attività sono svolte durante l’intero ciclo di vita della progettazione:
Documentazione
Verifica e test
Gestione
Test ricorrenti e una tecnica di ispezione sistematica può scovare molti errori. Moduli con codici complessi
presentano più errori. I codici rilasciati presentano sempre una minima parte di bug. Errori fatti in fasi
precedenti comportano un maggiore sforzo per la rimozione. Sistemi vecchi e già ritoccati sono più difficili
da debuggare.
Le modifiche evolutive sono dettate da modifiche del mondo reale (o del dominio di lavoro). Molte delle
possibili modifiche possono e andrebbero prevenute. Uno dei principali obiettivi della progettazione del
software è quello di scrivere applicativi che possano essere modificati in futuro in modo affidabile, facile ed
economico.
Le specifiche sono spesso incomplete e ambigue. Ciò causa problemi perché le specifiche sono spesso parte
di un contratto tra sviluppatore e cliente.
Una buona pratica di ingegneria modificare prima il design, quindi modifica l'implementazione e applicare in
modo consistente i cambiamenti in tutti i documenti.
Il modello “Waterfall” richiede che il dominio sia compreso e i requisiti siano conosciuti e stabili. Ciò accade
molto di rado. Però ha il vantaggio che la trasparenza di progettazione consente il controllo anticipato e la
modifica tramite feedback. Ciò sostiene la flessibilità.
Lo standard ISO 9126
La qualità è definita in termini di sei caratteristiche:
Funzionalità
Affidabilità
Usabilità
Efficienza
Manutenibilità
Portabilità
Ogni caratteristica è poi definita in termini di sotto-caratteristiche.
Funzionalità
Definizione: la funzionalità è l’insieme di attributi che riguardano l’esistenza di un complesso di funzioni e
delle specifiche proprietà. Le funzioni sono quelle che soddisfano i requisiti stabiliti o impliciti.
Nella prima versione dello standard questa caratteristica si chiamava correttezza. Riguarda il che cosa deve
fare un’applicazione: requisiti funzionali.
Le altre 5 caratteristiche riguardano il come un’applicazione deve fare le cose: requisiti non funzionali.
Affidabilità
Definizione: l’affidabilità è l’insieme di attributi che riguardano la capacità del prodotto software di
mantenere il livello di prestazioni con condizioni e limiti di tempo fissati.
Differenza con affidabilità dei sistemi fisici: il software non si logora.
La frequenza dei guasti dipende dal prodotto software e dal modo in cui il prodotto software viene utilizzato.
Usabilità
Definizione: l’usabilità è l’insieme di attributi che riguardano lo sforzo necessario all’uso del prodotto e alla
valutazione individuale di tale uso relativamente a un insieme di utenti prefissato o implicito.
Esistono diverse categorie di utenti quali: utenti finali, operatori, installatori…
Efficienza
Definizione: l’efficienza è l’insieme di attributi che riguardano la relazione esistente tra il livello delle
prestazioni del prodotto software e la quantità di risorse necessarie nell’ambito di condizioni fissate.
Le risorse tipiche sono: il tempo, la memoria usata e l’occupazione di banda.
Manutenibilità
Definizione: la manutenibilità è l’insieme di attributi che riguardano lo sforzo necessario ad eseguire
modifiche.
La manutenzione può essere di tre tipi: correttiva, perfettiva e adattativa.
Portabilità
Definizione: la portabilità è l’insieme di attributi che riguardano la capacità del prodotto software di essere
trasferito da un ambiente all’altro.
Le principali differenze tra gli ambienti sono: organizzative, software e hardware.
Classi e oggetti
Una classe definisce un tipo, ossia:
L'insieme dei valori di dati
L'insieme delle operazioni ammesse su quei dati
La dimensione di quei dati
Una classe fornisce servizi ai clienti della classe, ovvero modalità per la definizione e l'uso dei dati membro.
Un oggetto è una variabile il cui tipo è una classe.
In Java, la dichiarazione identificatore_classe identificatore è la dichiarazione di un riferimento, non di un
oggetto. Gli oggetti devono essere creati (operatore new). Un oggetto è anche detto una istanza (= un
esemplare) di una classe, anche se non tutte le classi vengono poi effettivamente istanziate in oggetti e non
tutte le classi possono essere istanziate in oggetti (classi astratte).
Classi e oggetti contengono come elementi:
Dati, dett
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Riassunti Progettazione del Software
-
Progettazione del Software - parte 2
-
Progettazione dei Sistemi Produttivi
-
Sistemi organizzativi, parte 1 - Progettazione organizzativa