Definizioni - Ciclo di vita - Copre l’evoluzione di un prodotto dal concepimento al ritiro - Fornisce la base concettuale sulla quale pianificare, organizzare, eseguire e controllare lo svolgimento delle attività necessarie - Processi di ciclo di vita - Stabilisce ciò che occorre fare al prodotto nelle sue varie fasi di vita - ISO 9001: i processi consumano risorse e generano prodotti - Modello di ciclo di vita - Descrive come i vari processi si correlano nel tempo ed il flusso informativo e di controllo tra essi Modelli di ciclo di vita - Il termine “modelli” è usato al plurale - Esistono diverse varianti di cicli di vita - Esistono diverse modalità di attraversamento di un medesimo ciclo di vita - Modelli significativi - Sequenziale, a cascata (waterfall) - Incrementale - Per evoluzioni successive - Spirale (spiral) Modello sequenziale - Il ciclo di vita procede attraverso una sequenza ordinata di passi (fasi) - Ogni fase è caratterizzata da un insieme di pre-condizioni (per l’ingresso) e post-condizioni (per l’uscita) - Fasi distinte si assumono non sovrapposte - Particolarmente adatto allo sviluppo di sistemi complessi Modello incrementale - Ammette attraversamenti multipli di una stessa fase - Procede per approssimazioni successive - Ma le versioni del prodotto rilasciate come esterne possono richiedere manutenzione - maggior onere - Può comportare sovrapposizione tra fasi distinte Modello per evoluzioni successive - Contempera all’esigenza di dover rispondere a bisogni non preventivati né inizialmente preventivabili - Può richiedere il rilascio e la gestione di più versioni esterne in parallelo - Comporta il riattraversamento di fasi precedenti (in tempi successivi) - p.es. Analisi dei requisiti per evoluzione successiva Modello a spirale - Proposto da Barry W Boehm (IEEE Computer, maggio 1988) - Ha come obiettivo primario il controllo dei rischi di progetto - Cicli interni ripetuti e rapidi, dedicati ad analisi e sviluppi prototipali - Cicli esterni attuano invece un modello standard di ciclo di vita Prototipazione - Prevista, consentita o richiesta in ciascuno dei modelli noti - Diverse modalità di definizione, rilascio e gestione del prototipo - Versione interna “usa-e-getta” - Versione interna formale (baseline) - Versione esterna con manutenzione Riuso - Una certa dose di riuso è inerente a qualsiasi modello - Riuso occasionale (opportunistico) - impatto superficiale - Riuso sistematico (per progetto, per prodotto, per azienda) - impatto sostanziale - A “grana grossa” o a “grana fine” - Fortemente agevolato dalla presenza di controllo di configurazione Il concetto di processo Processi, aziende, progetti - Processo standard - Riferimento di base generico usato come stile comune per lo svolgimento delle funzioni aziendali - Processo definito - Specializzazione di processo standard, necessaria per adattarlo ad esigenze specifiche di progetto o di azienda - Progetto aziendale - Istanziazione di processi definiti che utilizzano risorse aziendali per raggiungere obiettivi prefissati Organizzazione per processi - L’organizzazione di un’azienda si basa sul riconoscimento e supporto dei suoi propri processi Standard di processo - Gli standard di processo si dividono in - Generali - ISO/IEC 12207:1995 : modello di riferimento - … - Settoriali: generici ma solo all’interno di uno specifico dominio applicativo - IEC 880 : settore nucleare - RTCA DO-178B : settore aeronautico - ECSS : settore spaziale - … Genesi ed evoluzione degli standard - Iniziativa del committente - Per facilitare le attività di controllo, collaudo e accettazione - Prime applicazioni in USA, durante la II Guerra Mondiale - DoD Mil 105A (1950) - Razionalizzazione delle esperienze belliche - Processo di collaudo e accettazione - “Acceptable Quality Level” misurabile tramite prove Genesi di ISO/IEC 12207:1995 Gli standard ESA - Applicati dall’ESA ai e dai suoi fornitori - PSS-05 Software Engineering Standards, 1991 - Standard per prodotti e procedure - Vicino a IEEE 1074 - ECSS-Q-80A, assicurazione qualità del software, 1996 - ECSS-E-40A, produzione di software, 1999-2004 (ancora in evoluzione) Tendenze - Lo standard come modello da applicare - Definizione di procedure (PSS ESA) - Definizione di processi ed attività da specializzare (ISO/IEC 12207) - Lo standard come modello di valutazione - Modelli più generali, per coprire contesti diversi - Identificazione di “best practices” - CMM, SPICE, ISO/IEC TR 15504 Funzione dei processi - L’attività di una entità produttiva (azienda, gruppo di progetto) è regolata dall’insieme dei suoi processi - I suoi processi determinano le sue prestazione - ISO/IEC 12207:1995 riconosce e codifica - Processi primari - Processi di supporto - Processi organizzativi - Processi di adattamento ISO/IEC 12207:1995 – 1 - Il modello più noto e riferito - Ne esistono altri - Modello ad alto livello - Identifica i processi dello sviluppo software - Descrive i processi in termini di attività (task) e compiti elementari (procedure) - Struttura modulare che richiede specializzazione - Identifica le entità responsabili dei processi - Identifica i prodotti dei processi ISO/IEC 12207:1995 – 2 - Processi, attività, compiti - I processi sono relazionati tra loro in modo chiaro e distinto - modularità - I rispettivi compiti sono ben definiti e delineati - coesione ISO/IEC 12207:1995 – 3 Processi primari - Acquisizione - Gestione dei propri sotto-fornitori - Fornitura - Gestione dei rapporti con il cliente - Sviluppo di sistemi software - Gestione operativa - Installazione ed erogazione dei prodotti e/o servizi - Manutenzione Processi di supporto - Documentazione del prodotto - Gestione delle versioni e delle configurazioni - Assicurazione della qualità - Verifica - Validazione - Revisioni congiunte con il cliente - Verifiche ispettive interne - Risoluzione dei problemi Processi organizzativi - Gestione dei progetti - Gestione delle infrastrutture - Miglioramento del processo - Formazione del personale Attività - 5.3 Sviluppo software 5.3.1 Istanziazione del processo 5.3.2 Analisi dei requisiti del sistema 5.3.3 Progettazione architetturale del sistema 5.3.4 Analisi dei requisiti del software 5.3.5 Progettazione architetturale del software 5.3.6 Progettazione di dettaglio del software 5.3.7 Codifica e prova dei componenti software 5.3.8 Integrazione dei componenti software 5.3.9 Collaudo del software 5.3.10 Integrazione di sistema 5.3.11 Collaudo del sistema Compiti – 1 - Codifica e prova dei componenti (5.3.7.) - Definire procedure e dati di prova (5.3.7.1.) - Eseguire e documentare le prove (5.3.7.2.) - Aggiornare documentazione e pianificare prove d’integrazione (5.3.7.4.) - Valutazione delle prove (5.3.7.5.) - Integrazione dei componenti (5.3.8.) - Definire il piano di integrazione (5.3.8.1.) - Eseguire e documentare le prove (5.3.8.2.) - Aggiornare documentazione e pianificare prove di collaudo (5.3.8.4.) - Valutazione delle prove (5.3.8.5.) Compiti – 2 - Collaudo del software (5.3.9.) - Eseguire e documentare il collaudo (5.3.9.1.) - Valutazione del collaudo (5.3.9.3.) - Integrazione del sistema (5.3.10.) - Eseguire e documentare le prove (5.3.10.1.) - Aggiornare documentazione e pianificare prove di collaudo (5.3.10.2.) - Valutazione delle prove (5.3.10.3.) - Collaudo del sistema (5.3.11.) - Eseguire e documentare il collaudo (5.3.11.1.) - Valutazione del collaudo (5.3.11.2.) Organizzazione di processo - L’organizzazione interna di ogni processo si basa sul principio del PDCA - Pianifica (Plan) : definire attività, scadenze, responsabilità - Esegui (Do) : eseguire le attività secondo i piani - Valuta (Check) : verificare internamente l’esito del processo e delle sue attività (eventualmente con il supporto di processi di revisione) - Agisci (Act) : applicare soluzioni correttive ai problemi identificati Processi definiti – 1 - Specializzazione per azienda - Ben definito - Indipendente dal ciclo di vita adottato - A cascata, incrementale, evolutivo - Indipendente dalle tecnologie - Indipendente dal settore applicativo - Indipendente dalla documentazione richiesta Processi definiti – 2 - Specializzazione per progetto - Ben pianificata - Metodologia di specializzazione - Definire lo scenario di applicazione - Definire attività e compiti aggiuntivi o specifici - Organizzare le relazioni tra i processi specializzati - Condurre il progetto - La prima volta il progetto è “pilota” - Formalizzarne ed istituzionalizzarne l’esito Processi definiti – 3 - Fattori di specializzazione - Dimensione del progetto - Complessità del progetto - Rischi identificati - Dominio applicativo - Tecnologie in uso - Competenza ed esperienza delle risorse umane - Fattori dipendenti dal contratto in essere Processi e modelli - Una definizione di processi non implica necessariamente un modello di ciclo di vita - Il livello di coinvolgimento del cliente determina natura, funzione e sequenza dei processi di revisione necessari - Quando il prodotto software è parte di un sistema complesso, il ciclo di vita a livello di sistema è prevalentemente sequenziale Fattori critici – 1 - Fattori che influenzano la determinazione del ciclo di vita software - Politica di acquisizione e di sviluppo adottata a livello sistema - Versione unica / multipla - Dipendenze richieste / attese da altre componenti - Natura, funzione e sequenza dei processi di revisione richiesti - Revisioni interne / esterne | bloccanti / non bloccanti Fattori critici – 2 - La necessità di fornire evidenza di fattibilità - Sviluppi prototipali - Usa e getta / da mantenere / da evolvere - Studi ed analisi preliminari - Precedenti l’autorizzazione allo sviluppo - L’evoluzione del sistema e dei suoi requisiti - Iterazioni multiple del processo di sviluppo - Esigenze di configurazione di sistema