Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Svantaggi
La divisione inflessibile del progetto in fasi distinte rende difficile rispondere alle mutevoli esigenze dei clienti. Pertanto, questo modello è appropriato solo quando i requisiti sono ben compresi e le modifiche saranno piuttosto limitate durante il processo di progettazione.
Si tenga anche conto del fatto che il ritorno ad una fase precedente costa tanto di più indietro verso fasi precedenti si deve ritornare. Pochissimi sistemi aziendali hanno requisiti stabili.
Il modello a cascata viene utilizzato principalmente per grandi progetti di ingegneria dei sistemi in cui un sistema viene sviluppato in diversi siti. In queste circostanze, la natura pianificata del modello a cascata aiuta a coordinare il lavoro.
Prototyping
Questo approccio intreccia le attività di specifica, sviluppo e convalida. Il sistema viene sviluppato come una serie di versioni (incrementi), ciascuna delle quali aggiunge nuove funzionalità alla versione precedente.
Ciascun incremento o
- La versione del sistema incorpora qualcuna delle funzionalità richieste dal cliente.
- In generale, gli incrementi iniziali del sistema includono la funzionalità più importante e urgente richiesta dal cliente.
- Questo significa che il cliente o l'utente può valutare il sistema nelle prime fasi dello sviluppo per vedere se esso realizza ciò che è stato richiesto.
- In caso contrario, deve essere modificato soltanto l'incremento corrente del sistema e, possibilmente, dovrà essere definita una nuova funzionalità per i successivi incrementi.
Prototyping esplorativo
L'obiettivo è lavorare con i clienti e far evolvere un sistema finale da delle specifiche iniziali. Dovrebbe iniziare con requisiti ben compresi, iniziando quindi da ciò che è chiaro e cercando di capire il resto.
Prototyping usa e getta
L'obiettivo è comprendere i requisiti di sistema (o un aspetto tecnico). Dovrebbe iniziare con
requisiti poco conosciuti. Viene sviluppato un prototipo "veloce esporco", quindi, quando i requisiti sono stati compresi, il prototipo viene gettato via. Concentrarsi solo su ciò che non è chiaro, per capirlo meglio. VANTAGGI Il costo di implementazione delle modifiche dei requisiti è ridotto. L'analisi e la documentazione che devono essere ripetute sono significativamente minori rispetto a quelle richieste dal modello a cascata. È più facile ottenere il feedback del cliente sul lavoro di sviluppo che è stato fatto. Il cliente può fare i suoi commenti durante le dimostrazioni del software e vedere quanto è già stato implementato. È difficile per un cliente giudicare l'avanzamento del lavoro dai documenti della progettazione del software. È possibile consegnare in anticipo al cliente una versione utilizzabile del software, anche se non sono state incluse tutte le funzionalità. I clienti sonoIn grado di utilizzare e valutare il software prima di quanto sia possibile con un processo a cascata.
SVANTAGGI
- Il processo non è visibile. I manager devono avere delle consegne regolari per misurare i progressi.
- Se il sistema è sviluppato velocemente, non è economico produrre documentazione che rifletta ogni versione del sistema.
- La struttura dei sistemi tende a degradarsi quando vengono aggiunti nuovi incrementi. Ogni volta che viene aggiunta una nuova funzionalità, il codice diventa sempre più complicato, quindi diventa sempre più difficile e costoso aggiungere nuove funzionalità a un sistema. Per ridurre il livello di degrado strutturale e di complicazione del codice, i metodi agili suggeriscono un costante refactoring (miglioramento della struttura) del software.
193. Hybrid
Combinazione di modelli: un ciclo di vita waterfall con attività prototyping dove necessario.
4. Sviluppo di sistemi formali
Quando formulo le specifiche mediante un
linguaggio matematico che so via via trasformare inversioni successive che mi portano ad una descrizione di questa trasformazione in termini di un programma eseguibile e quindi garantisco che le specifiche siano contenute nel risultato. Una bella idea, ma di attuazione praticamente molto limitata, difficile, se non di fatto impossibile.
Formal transformations
T1 T2 T3 T4
Formal Executable
R1 R2 R3
specification program
P1 P2 P3 P4
Proofs of transformation correctness
PROBLEMI
Necessità di competenze specialistiche e formazione per applicare la tecnica. Difficile specificare formalmente alcuni aspetti del sistema come l'interfaccia utente e i sistemi interattivi in generale. Si riesce a fare per problemi 'giocattolo' e non per sistemi complessi.
APPLICABILITÀ
Sistemi critici, specialmente quelli in cui è necessario creare un caso di sicurezza prima che il sistema venga messo in funzione.
5. Sviluppo orientato al riutilizzo (basato su componenti)
Si basa sul semplice
fatto che se si è già sviluppato qualcosa più o meno simile a ciò che si sta affrontando, è certamente utile poter riutilizzare codice già sviluppato (testato, ...) Basato sul riutilizzo sistematico in cui i sistemi sono integrati da componenti esistenti o sistemi COTS (Commercial-off-the-shelf). Requirements System design Requirements Component modification with reuse specification analysis Development System and integration validation Cicli di processo I requisiti di sistema si evolvono sempre nel corso di un progetto. Quindi l'iterazione del processo in cui le fasi precedenti vengono rielaborate fa sempre parte del processo per i sistemi di grandi dimensioni ogni volta che si verifica un cambiamento. L'iterazione può essere applicata a qualsiasi modello di processo generico. Ci sono due approcci (correlati) che applicano sistematicamente l'iterazione: - sviluppo incrementale: sviluppo basato su incrementi successivi,consegna incrementale oa fasi.- Combina il Waterfall con il modello prototyping;
piuttosto che fornire il sistema come una singola consegna, lo sviluppo e la consegna sono suddivisi in incrementi (cioè un sottosistema dell'intero sistema, chiamato anche rilasci) con ogni incremento che fornisce parte della funzionalità richiesta;
ai requisiti degli utenti viene data la priorità e i requisiti con la priorità più alta sono inclusi nei primi incrementi;
una volta avviato lo sviluppo di un incremento, i suoi requisiti vengono congelati sebbene i requisiti e gli incrementi successivi possano continuare a evolversi.
Design system
Define outline
Assign requirements
requirements architecture
to increments
Integrate
Validate
Develop system
Validate increment
System incomplete
Rischio
La possibilità di perdite, lesioni o altre circostanze avverse o indesiderate, corrisponde ad una mancanza di informazione. Si utilizza
L'analisi dei rischi come strumento di decision making per procedere nello sviluppo di un progetto.
Modello risk-driven denominato modello a spirale (proposto da Barry Bohem - 1988).
- sviluppo a spirale: più un approccio generale che un modello specifico di ciclo di vita
- Il processo è rappresentato come una spirale piuttosto che come una sequenza di attività con backtracking
- Ogni anello della spirale rappresenta una fase del processo.
- Nessuna fase fissa come la specifica o il progetto: i loop nella spirale vengono scelti in base a ciò che è richiesto
- I rischi vengono esplicitamente valutati e risolti durante tutto il processo
- Si parte dalle attività che hanno il più alto livello di rischio.
Determine objectives Evaluate alternatives alternatives and identify, resolve risks constraints Risk analysis Risk analysis Risk Opera-analysis Prototype 3 tional protoype Prototype 2 Risk Proto-analysis REVIEW type 1 Requirements plan Simulations, models,
- benchmarks
- Life-cycle plan
- Concept of Operation
- S/W Product requirements
- Detailed design
- Design Requirement Development
- Validation plan
- Code Unit test Design
- Integration V&V
- Integration and test plan
- Plan next phase test
- Acceptance test
- Develop, verify Service next-level product
Cause per cui un progetto di sviluppo software può fallire:
- Requisiti incompleti / vaghi, conflitti con le parti interessate
- Mancanza di coinvolgimento dell'utente, scarso input dell'utente
- Mancanza di risorse, abilità che non corrispondono al lavoro
- Aspettative non realistiche
- Scarsa gestione del progetto, pianificazione o stima dei costi
- Scarso supporto esecutivo
- Mancanza di comunicazione
- Modifica dei requisiti e delle specifiche
- Architettura scadente
- Rilevamento dei segnali di avviso di guasto in ritardo
Software project management
Un progetto (project) consiste, in senso generale, nell'organizzazione di azioni nel tempo per il perseguimento di uno scopo predefinito, attraverso le
varie fasi di progettazione (design), … daparte di uno o più progettisti, ... Scopo finale è la realizzazione di un bene o servizio il cui ciclo disviluppo è gestito tipicamente attraverso tecniche di project management. Cosa fa un manager? - Pianificare: quali obiettivi voglio raggiungere e in che tempi - Organizzare: quali attività, processi, come correlati, con quali competenze, … - Rendere disponibili le necessarie risorse (persone, macchine, corsi di formazione): quali risorse, quando, a fare cosa - Dirigere: attivare l’esecuzione di attività e supportarne l’esecuzione - Monitorare e controllare: verificare l’esecuzione, i risultati, i tempi e mantenere le attività focalizzate al risultato mediante eventuali azioni correttive. Il manager raggiunge il successo se riesce a costruire il sistema in tempo, con le risorse che gli sono state date (budget) e in conformità con i requisiti / aspettative delleOrganizzazioni che sviluppano e acquistano il software. Inoltre, mantengono un team di sviluppo "felice" e "ben funzionante". La gestione del progetto è necessaria perché lo sviluppo del software è sempre soggetto a vincoli di budget e pianificazione stabiliti dall'organizzazione che sviluppa il software.
Distinzioni di gestione del software rispetto ad altre tecnologie:
- Il prodotto è immateriale
- Il prodotto è straordinariamente flessibile
- L'ingegneria del software non è riconosciuta come disciplina ingegneristica con lo stesso status dell'ingegneria meccanica, elettrica, ecc. ma più come programmatore.