Standard e strumenti per lo sviluppo del software Marco Carezzano Andrea Andrenacci (ZEROPIU, Business Partner di Telecom Italia) Milano, 2 febbraio 2005 Progetto di Identity Management per il Gruppo Banche Popolari Unite
2 Standard e strumenti per lo sviluppo del software Milano, febbraio Approccio e strumenti Questa presentazione descrive il modello adottato nel progetto, per la gestione del ciclo di vita del software, in termini di approccio, standard e strumenti operativi. Il modello adottato si basa sul Rational Unified Process (RUP), uno standard per lo sviluppo e la gestione del software. Il modello ha elevate caratteristiche di flessibilità e può essere facilmente applicato a progetti, di ogni tipo e dimensione.
3 Standard e strumenti per lo sviluppo del software Milano, febbraio Strumenti per la gestione del software CVS (Version control e software repository) Parasoft Insure++ (Controllo qualità software c++ integrazione con versioning e repository) Parasoft TotalCoverage (Controllo di tutti i test path e test coverage) CheckStyle (strumento per il controllo sintattico conforme allo standard sun code convention Scarab (Bug Tracking, scarab.tigris.org)
4 Standard e strumenti per lo sviluppo del software Milano, febbraio Convenzioni sintattiche e di documentazione Hungarian Notation per i linguaggi di tipo object oriented (Java) Sun Code Convention (Java) Ellemtel (c++) Effectie (c++) Mayers Klaus (c++) UML per l’analisi funzionale e come imput dei test case (use cases) UML per il design (sequence diagram state chart e collaboration diagram) UML per la modellazione e progettazione (class Diagram) UML per il deployment (deployment diagram)
5 Standard e strumenti per lo sviluppo del software Milano, febbraio RUP Life Cycle Un progetto sviluppato attraverso la metodologia RUP è articolato in quattro fasi: Inception Elaboration Contruction Transition
6 Standard e strumenti per lo sviluppo del software Milano, febbraio RUP Life Cycle - Inception Obiettivi L’obiettivo più importante di questa fase è condividere gli obiettivi del progetto fra TUTTI i partecipanti. Più in dettaglio, la fase di inception deve raggiungere almeno i seguenti obiettivi: Stabilire scope e perimetro del progetto, i criteri di accettazione e in generale che cosa ci sarà e cosa NON ci sarà nel prodotto. Individuare gli use case a maggior impatto sul disegno dell’architettura tecnica. Illustrare e se possibile dimostrare i principali use case attraverso l’architettura candidata (Prototipo). Stimare il costo totale dell’intero progetto. Stimare i potenziali rischi del progetto Preparare gli ambienti operativi a supporto del progetto.
7 Standard e strumenti per lo sviluppo del software Milano, febbraio RUP Life Cycle - Inception Attività principali Formulare lo scope del progetto. Descrivere il contesto del progetto, i requisiti e i vincoli più importanti, in modo da arrivare a definire i criteri di accettazione del prodotto finale. Produrre il business case del progetto. Valutare alternative di gestione del rischio, staffing, piano di progetto e considerare costi, pianificazione e profittabilità. Sintetizzare un’architettura di riferimento, considerando design, make/buy/reuse, in modo da stimare costi, scheduling e risorse. In questa fase l’intento è di dimostrare la fattibilità attraverso l’utilizzo di Proof of Concept. Questi possono essere in forma di modelli che simulano quanto richiesto oppure prototipi che esplorano ciò che viene considerato ad alto rischio. Preparare l’ambiente per il progetto: hardware, software di base, tool.
8 Standard e strumenti per lo sviluppo del software Milano, febbraio RUP Life Cycle - Elaboration Obiettivi: L’obiettivo di questa fase è consolidare l’architettura del sistema per fornire delle basi stabili per il suo disegno e soprattutto per l’impegno di implementazione che avverrà nella fase di construction. L’evoluzione dell’architettura avviene considerando i requisiti a più forte impatto architetturale e la valutazione dei rischi di progetto. La stabilità dell’architettura è valutata attraverso uno o più prototipi.
9 Standard e strumenti per lo sviluppo del software Milano, febbraio RUP Life Cycle - Elaboration Attività Definire, validare e consolidare l’architettura del sistema. Raffinare la “Vision” del progetto, sulla base delle nuove informazioni emerse durante l’attività di analisi. Creare e consolidare piani di progetto iterativi per la successiva fase di construction. Raffinare gli use case e costruire l’ambiente di sviluppo. Raffinare l’architettura e definire i componenti, scegliendo tra prodotti commerciali o custom o adottare il riutilizzo di componenti già disponibili.
10 Standard e strumenti per lo sviluppo del software Milano, febbraio RUP Life Cycle - Construction Obiettivi: L’obiettivo di questa fase è chiarire i rimanenti requisiti e completare lo sviluppo del sistema sulla base dell’architettura consolidata. In un certo senso, la fase di construction è un processo manifatturiero, dove l’enfasi è posta nella gestione e controllo delle risorse e delle attività per ottimizzare costi, scheduling e qualità.
11 Standard e strumenti per lo sviluppo del software Milano, febbraio RUP Life Cycle - Construction Attività Gestione delle risorse, controllo e ottimizzazione del processo di sviluppo. Sviluppo completo dei componenti e test del rispetto dei criteri di valutazione del prodotto.
12 Standard e strumenti per lo sviluppo del software Milano, febbraio RUP Life Cycle - Transition Obiettivi: L’obiettivo della fase di transition è assicurare che il software sia disponibile ai suoi utenti finali. Questa fase comprende i test, lo sviluppo di releases e piccoli aggiustamenti sulla base dei feedback dagli utenti finali. Alla fine di questa fase gli obiettivi del progetto devono essere raggiunti e il progetto può essere chiuso. A seconda del tipo di progetto, dopo questa fase può partire un altro ciclo di vita completo (è il caso dei prodotti commerciali) oppure tutti i deliverable del progetto vengono forniti ai gruppi di operation and management responsabili del prodotto in esercizio. L’impegno per questa fase può variare di molto in funzione del tipo di prodotto e della complessità del contesto in cui questo si troverà ad operare.
13 Standard e strumenti per lo sviluppo del software Milano, febbraio RUP Life Cycle - Transition Attività Eseguire i piani di deploy. Produrre la documentazione a supporto dell’utente. Eseguire i test. Costituire le relase del prodotto. Raccogliere i feedback dagli utenti. Raffinare il prodotto sulla base dei feedback utente. Rendere il prodotto disponibile agli utenti finali.