Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
).
Modello a cascata
- Implementazione: codice
Processo:
Modello: 2 significati
- Particolare organizzazione di un processo o di una architettura.
Generici vs Customizzati
Costo:
- Customizzati: il costo è a carico del committente
- Generici: il costo è distribuito tra tanti clienti
Specifica:
- Customizzati: i requisiti sono decisi dal committente
- Generici: i requisiti sono decisi dall’azienda in base alle tendenze
del mercato.
Specifica
- Requisiti funzionali
• Servizi che il cliente richiede dal sistema, cioè cosa deve
fare l’applicazione.
Processo di specifica
Studio di fattibilità
Si decide se è possibile costruire il sistema (analizzando le risorse, i
costi ed i tempi),se sviluppare un sistema nuovo oppure usarne uno
di terze parti si decide se il sistema è effettivamente utile al
cliente/committente, raccogliendo informazioni. Infine si prepara un
documento, che contiene solitamente diverse soluzioni e le relative
risorse(soldi e tempo) necessario allo sviluppo di esse.
-Stakeholder:
• In ambito economico, persono che può influenzare il successo
di un impresa(azionisti, finanziatori, amministratori,
dipendenti, clienti, fornitori,pubblica amministrazione,
opinione pubblica, ecc).
• In ambito del processo software, persone che possono
influenzare il processo(cliente / committente,utenti
finali,esperti del dominio
,sviluppatori che hanno lavorato su sistemi simili
,sviluppatori che hanno lavorato sui sistemi che dovranno
interagire
,con quello da sviluppare)
Requisiti di sistema
• espansione dei requisiti utente.
• Base per la progettazione, tradurre il linguaggio naturale, che
può presentare: ambiguità(il significato di una parola può
essere ambiguo) e un eccessiva lunghezza, in linguaggio
formale(Linguaggio naturale strutturato: template, Modelli
grafici: UML, Notazioni basate su concetti matematici)
contiene:
• Risultato della deduzione dei requisiti, scritti sia ad alto livello
che a basso livello
• Ciò che si deve sviluppare
Struttura del documento:
• Introduzione
• Glossario, descrizione termini tecnici
• requisiti utente(funzionali e non funzionali)
• requisiti di sistema(funzionali e non funzionali)
◦ • Identificatore
◦ • Nome
◦ • Tipo (funzionale / non funzionale)
◦ • Priorità
◦ • Descrizione
◦ • Modelli (UML)
Tecniche di validazione:
• revisione (realizzato da un gruppo), controllando il manuale di
specifica si individuano eventuali omissioni o
malfunzionamenti
• costruzione di prototipi, si costruiscono prototipi per essere
mostrati al committente e agli utenti.
Progettazione
Information hiding
Un sottositema/modulo deve avere le seguenti caratteristiche:
nascondere i propri algoritmi e dati ai sottosistemi esterni, essere
accessibile solo dalla sua interfaccia e la sua
modifica non deve impattare sul resto del
sistema.
Stili architetturali:
Controllo
Strutturazione
Cliente-Server: i client sanno localizzare i server (che forniscono il
servizio) tramite un collegamente (di rete), inversamente i server
non devono conoscere i client. Utilizzano il protocollo request/reply:
- request: il client richiede il servizio tramite una procedura remota,
e attende
- reply: il server invia una risposta
Client-Server:
- collegamenti dedicati: i client hanno dei collegamenti dedicati
verso i server e viceversa
- rete convidisa: i client ed i server si trovano sulla stessa rete (es
rete ad anello)
- internet: utilizzano internet per comunicare tra loro
- stratificato: può essere strutturata su 3 strati (presentazione,
elaborazione e gestione dei dati)
- 2-tiers, i tre strati dell’applicazione sono distribuiti su 2 macchine
(client e server).
- Thin client: il server si occupa dell’ elaborazione e della
gestione dati, mentre il
Client si occupa della presentazione ( determina il
carico del server e la
Capacità di calcolo del client viene sprecata).
Implementazione
Implementazione dei sottosistemi: solitamente i sottosistemi
vengono implementati in parallelo (un team per ogni sottosistema).
Collaudo
Testing
Processo di testing:
- Preparazione dei test-case (dati di input, dati di output attesi)
Approcci di testing:
I test case sono composti da dati di input e dati output attesi, i dati
di input possono essere infiniti, chiaramente noi vogliamo testare il
sistema un numero finito di volte.
I test case vengono fatti in base alla conoscenza di quali sono i dati
di I/O. L’insieme dei dati viene suddiviso in partizioni di
equivalenza, da ogni partizione si ricaveranno i test-case. Dato
l’insieme dei dati di input e l’insieme di output, una partizione di
equivalenza è un sottoinsieme dei dati di input per cui il sistema
produce lo stesso dato di output, oppure, il sistema produce dati di
out che appartengono sempre ad un determinato sottoinsieme.
Esempi funzioni:
Per ogni dato di output si possono identificare più partizioni
di equvalenza, non per forza 1 come nella figura
precedentemente
Complessità ciclomatica:
n° di cammini indipendenti equivale alla CC del flow-graph G
A, B e C
• Prototipi
• Versioni del sistema per sistemi operativi diversi
• Versioni del sistema per tipi di hardware diversi
• Nuove versioni con funzioni in comune con le precedenti
Manutenzione
Tipi di manutenzione:
- correttiva: vengono corretti dei difetti delle fasi di specifica
(costose potrebbero essere necessario riprogettare il sistema),
progettazione (costose perchè si devono modificare i componenti
del sistema) e implementazione ( meno costosi da correggere)
- adattiva ( adattamento del sistema a cambiamento di
piattaforma ) per esempio hardware nuovi o nuovo sistema
operativo(interessa solo i requisiti funzionali)
- migliorativa, miglioramento dei requisiti o realizzazione di nuovi
requisiti(interessa sia i requisiti funzionali che non funzionali)
Fattori che
influenzano
il costo di
manutenzione:
- Dipenzenza dei componenti, la manutenzione di un componente
potrebbe richiede la manutenzione, di altri componenti del sistema.
- Linguaggio di programmazione, un linguaggio ad alto livello è più
facile da mantenere.
- Struttura del codice, codice ben strutturato e documentato è più
facile da mantenere
- Collaudo (una fase di collaudo accurata riduce il numero di difetti
scoperti successivamente alla consegna)
- Qualità della documentazione.
- Stabilità dello staff ( il costo si riduce se chi ha sviluppato il
sistema è lo stesso a mantenerlo)
- Età del sistema, il costo aumenta con l’aumentare dell’età del
sistema, per esempio un sistema vecchio utilizzerà linguaggi di
programmazione superati e quindi satà più difficile da mantenere.
- Stabilità del dominio dell’applicazione ( se il dominio varia, il
sistema deve essere aggiornato)
-Stabilità della piattaforma il cambiamento della piattaforma (hw o
sistema operativo)può richiedere la manutenzione del sw, questo
succede spesso.
Processo di manutenzione:
Solitamente si crea una urgent patch quando bisogna risolvere un problema in fretta,
per vari motivi:
1. Errori che impediscono di utilizzare il sistema
2. Malfunzionamento del sistema che causa perdite economiche
3. Introduzione di leggi che richiedono la modifica del software
4. ecc…
Fe vs Re
Nel caso i tre punti precedenti non siano rispettati si dice che il
progetto fallisce.
Difficoltà di gestione:
1. il SW è intangibile non si può vedere materialmente il
progresso di un progetto, per sopperire a questo si scrive della
buona documentazione
2. I progetti sono unici, quindi l’esperienza acquisita con i
progetti precedenti è relativamente utile.
Processo di gestione:
Piano di progetto: documento che definisce le attività di gestione
di un progetto, viene scritto all’inizio del progetto ed aggiornato
durante il progetto:
- Introduzione: obbiettivi (ibuettuvu) e vincoli
- Organizzazione: persone/ruoli
- Analisi dei rischi: possibilità di rischi e come affrontarli
- Risorse sw e hw, stima del costo e dei tempi di consegna
- Divisione del lavoro: in task, milestone e deliverables.
- Tempistica: dipendenze tra le attività, temi stimati per raggiungere
ogni milestone, allocazione delle persone alle attività
- Rapporti: tipi di rapporto che saranno prodotti durante il progetto.
Attività di pianificazione:
Principi di pianificazione:
Illustrazione 14: CC: T1, M1, T3, M4, T9, M6, T11, M8, T12:55 giorni lavorativi
Bar Chart
con
indicazione
di chi
svolge le
varie task.
Il ritardo è causato soprattutto da:
• scadenze non realistiche
• mutamenti dei requisiti che non tengono conto delle
tempistiche
• stima troppo ottimistica del lavoro
• rischi non considerati
Rischi
Il rischio ha due caratteristiche:
incertezza (probabilità di verificarsi) e perdita(se il rischio si
verifica influenza negativamente tempistiche e qualità). I rischi si
possono classificare in base alla loro fonte (causa) e a ciò che
colpiscono (effetto).
• Rischi tecnologici, hw o sw
• Rischi riguardanti il personale
• Rischi organizzativi, derivanti dall’organizzazione aziendale
• Rischi strumentali, strumenti CASE
• Rischi dei requisiti, cambiamento dei requisiti
• Rischi di stima, valutazione delle caratteristiche del sistema
Si stima la probabilità del rischio e la gravità dei suoi effetti nel caso
si verificasse. La valutazione è fatto in base alle informazioni sul
progetto, sul team, sul processo, sull’organizzazione ecc… e
l’esperienza del manager.
Modello a cascata:
Modelli iterativi
Questi modelli prevedono la ripetizione di alcune fasi del processo. Il
sistema è un prototipo evolutivo, il prototipo evolve nel sistema
finale.
Sviluppo evolutivo:
- generazione del primo prototipo: si considera un sottoinsieme
dei requisit, se ne fa la specifica, la progettazione l’implementazione
e il colaudo. In ogno fase, è possibile ritornare a quella precedente.
Infine si genera una versione delsistema che realizza i requisiti
considerati (se si ricevono dei feedback dal committente si devono
ripetere le fasi).
- generazione dei prototipi successivi: si considera un altro
sottoinsieme di requisit e si aggiorna il prototipo corrente.
- si itera il processo fino a quando tutti i requsiti sono stati
considerati
Contro:
- Il processo è poco visibile (la documentazione non viene sempre
aggiornata a causa dell’elevato costo).
- I prototipi devono essere generati rapidamente
- Il committente deve essere disponibile a fornire un feedback
- Modello costoso (sviluppo di varie versioni)
- Il codice potrebbe essere poco strutturato se si applicano molti
cambiamenti.
Include le attività di
gestione (manager)
Ogni loop rappresenta un
task del processo. I loop
sono divisi in 4 settori:
- Determinazione di
obiettivi e alternative
- Valutazione delle
alternative e dei rischi
- Sviluppo e convalida
- Pianificazione