Microsoft Solutions Framework Ing. Lorenzo Barbieri MCT, MCSD.NET, MCDBA 2 Me.About() Sono un Senior Trainer/Consultant in ObjectWay SpA, specializzato in architetture Microsoft .NET, Windows, SQL Server. Ho scritto articoli per ioProgrammo, Dev, Network News. Ho scritto le guide su www.cramsession.com per i seguenti esami di certificazione Microsoft: Visual Basic .NET, Visual C#, Visual C++, BizTalk Server, Commerce Server, e altri Sono specializzato sul Microsoft Solutions Framework, su cui ho scritto alcuni articoli e mantengo una lista di tutte le risorse disponibili. Per contattarmi o per maggiori informazioni potete visitare il mio BLOG: www.geniodelmale.info 3 Agenda della giornata Introduzione Composizione di un team Microsoft Solutions Framework Processo di sviluppo 4 Fasi, Iterazioni, e Milestone Zero difetti Daily Build (uso e strumenti) Gestione dei rilasci Deployment Gestione del progetto Gestione dei rischi Gestione delle competenze Integrare MSF con altre metodologie Conclusioni su MSF 3.0 MSF 4.0 e Visual Studio Team System Introduzione a MSF 3.0 Stato di salute dei progetti IT 2000 1998 Failed Challenged Succeeded 23% 49% 28% 28% 1995 1994 46% 40% 31% 26% 33% 53% 27% 16% This chart depicts the outcome of the 30,000 application projects in large, medium, and small cross-industry U.S. companies tested by The Standish Group since 1994. Source: The Standish Group International, Extreme Chaos, The Standish Group International, Inc., 2000 6 Obiettivi per il successo di un progetto Sintomi di un progetto problematico 7 Obiettivi per avere successo Chi se ne occupa “Il progetto è in ritardo e fuori budget” Consegnare entro i limiti del progetto ? “Quello che è stato realizzato non è quello che volevamo...” Implementare quello che c’è nelle specifiche ? “Funziona male - Continuiamo a scoprire nuovi problemi...” Identificare e risolvere i problemi aperti ? “Non si integra nel nostro ambiente” Il Deploy deve avvenire senza problemi ? “E' troppo difficile da usare” Più usabilità e efficacia ? “Non soddisfa le nostre aspettative” Soddisfare i customer ? “Non abbiamo ricevuto le informazioni richieste...” Stabilire buone comunicazioni all’interno del team ? Quali sono gli ostacoli principali? Separazioni di obiettivi e ruoli Separazione del business dalla tecnologia Mancanza di un linguaggio comune e di un processo Obiettivi poco chiari Gestione dei cambiamenti caotica 8 Incapacità di comunicare e di agire come un team Si sta adottando un processo poco flessibile Le origini di MSF Nel 1994 usciva MSF, una raccolta di best practice, principi e modelli. MSF si è evoluto nel tempo e la versione attuale, la “3.0” è del 2003. MSF fornisce una guida su come organizzare le persone e i progetti nel pianificare, realizzare e distribuire soluzioni IT di SUCCESSO!!! Microsoft Worldwide Products Groups Microsoft Consulting Services Proven Practices Microsoft Microsoft Information Partners Technology Group La versione 4.0 uscirà assieme a Visual Studio Team System nel 2005, in due versioni: “Formal” e “Agile” 9 MSF: Modelli e discipline Modelli Process Team Model Model Discipline Project Management Discipline 10 Risk Management Discipline Readiness Management Discipline Concetti fondamentali Foundational Principles Sono i principi fondamentali su cui si basa il framework Key Concepts Idee che supportano i principi e le discipline di MSF Proven Practices Tecniche, metodi e processi che hanno funzionato in progetti VERI! 11 MSF Foundational Principles 12 Clear accountability, shared responsibility Empower team members Focus on business value Shared project vision Stay agile, expect change Foster open communications Learn from all experiences Invest in quality Qual'è il ruolo di MSF nel ciclo di vita del software? Microsoft Solutions Framework Microsoft Operations Framework 13 Composizione di un team MSF MSF Team Model Realizzare la soluzione rispettando i vincoli Program Management Soddisfare il cliente Product Management Implementare la soluzione Development Comunicazione! User Experience Aumentare la soddisfazione degli utenti finali Test Release Management Effettuare il deployment e mantenere gli ambienti di sviluppo e test. 15 Approvare la release solo se i problemi sono stati identificati e risolti. Altri partecipanti al progetto – Ruoli esterni 16 Project sponsors – Chi richiede il progetto e ne approva i risultati Customers (business sponsors) – Chi ottiene “business value” dalla soluzione End users – Chi interagisce direttamente con la soluzione Operations – Chi è responsabile del mantenimento in funzione della soluzione dopo la consegna Team di progetto “esteso” Business Focus Users Help Desk Product Management User Experience Customer Test Project Team Operations and Support Groups Development Release Management Technology Focus 17 Program Management Project Sponsor Technology Architects and Steering Committees Gestire team grandi o piccoli Per gestire team grandi si possono utilizzare due soluzioni: Feature Teams Function Teams In caso di team piccoli si possono assegnare più ruoli ad una stessa persona, evitando “conflitti d’interesse”. Per maggiori approfondimenti si veda: http://www.geniodelmale.info/articles/MSF_TeamGrandiEPiccoli.aspx 18 Gestione del progetto Project Management “Il Project Management rappresenta l’applicazione di conoscenze, capacità, strumenti e techinche alle attività di progetto, per realizzarne i requisiti” (PMI – Project Management Institute) Non significa “SONO IL CAPO E COMANDO IO!” E’ una componente critica specialmente in progetti di medie e grandi dimensioni. Project Management in MSF: MSF non è una metodologia per il project management, ma è un framework che comprende anche elementi di project management, allineati al PMIBOK Il PMIBOK è il Project Management Institute Body of Knowledge 20 Se si sono adottate altre discipline per la gestione del progetto, queste possono essere tranquillamente essere usate assieme ad MSF Chi gestisce effettivamente il progetto 21 In progetti piccoli (1 persona per ruolo o meno) il Program Manager si occupa della gestione del progetto Se alcuni o tutti i team sono “Function Team”, i Team Leader partecipano alla gestione del progetto assieme al Program Manager Il ruolo del Program Manager è in ogni caso critico per la gestione del progetto. Se il progetto lo richiede, il ruolo di Program Management può essere scisso nelle due componenti, Project Manager e Solution Architect, attraverso l’uso di un”Function Team” Nei progetti più piccoli, queste due attività possono tranquillamente coincidere. Processo di sviluppo Fasi, Iterazioni, e Milestone Zero difetti Daily Build (uso e strumenti) Gestione dei rilasci Deployment MSF Process Model – Fasi e Milestone Deployment Complete Release Readiness Approved Vision/Scope Approved MSF Scope Complete 23 Project Plans Approved Distribuzione dei compiti Tutti i ruoli sono rappresentati in tutte le fasi Ogni ruolo deve “produrre qualcosa” in ogni fase Non tutti i ruoli sono ugualmente attivi in ogni fase Ogni fase è guidata particolarmente da “un ruolo” 24 Envisioning -> Product Management Planning -> Program Management Developing -> Development, User Experience Stabilizing -> Testing, Release Management Deploying -> Release Management Milestone Ogni fase è divisa in più Milestone, specifiche per la singola fase. Le Milestone servono per vedere e far vedere all’esterno l’andamento del progetto Le Milestone devono sempre produrre dei “deliverables” che vanno “approvati” I benefici dati dalle Milestone sono: Maggiore sincronizzazione tra le varie parti del Team Visibilità esterna dello stato del progetto e della qualità del prodotto Permettono di adottare dei “cambiamenti in corsa” Permettono di revisionare obiettivi e risultati Ci sono due tipi di Milestone in MSF: Major Milestone – marcano la fine di una fase Interim Milestone – permettono di dividere il lavoro di una fase in parti più gestibili 25 Envisioning Milestone Core Team Organized Vision/Scope Baselined Vision/Scope Approved Deliverabiles Vision/scope document Project structure document Initial risk assessment document La fase di Envisioning serve anche per dare un’identità al progetto Per approfondire il la gestione dei trade-off: http://www.geniodelmale.info/articles/MSF_TradeOff.aspx ? ! 26 Envisioning Features Planning Milestone Technology validation complete Functional specification baselined Master project plan baselined Master project schedule baselined Developments/test environment setup Project Plans Approved Deliverables Functional specifications Master project plan Master project schedule 27 Developing Milestone Proof of concept complete Internal Release 1..n Scope complete Deliverables 28 Solution code Buil images Training materials Documentation Updated master plan, schedule and risk document Zero Difetti! E’ una mentalità! Bisogna ottenere il livello di qualità più elevato, in funzione dei limiti imposti dal progetto I membri del team devono capire il livello di qualità richiesto al proprio lavoro Il lavoro non è finito se non raggiunge il livello di qualità richiesto Per ottenerla ci sono vari aiuti: Daily Build Focalizzarsi sui rilasci Gestire i Bug 29 Daily Build Ogni giorno il progetto deve poter essere “compilabile” e “installabile” Una Daily Build “pubblica” è: Un indicatore che il team funziona (produce qualcosa)… Un modo per rendere visibili gli avanzamenti del progetto Il “battito cardiaco” del processo di sviluppo Se il progetto non compila o non è installabile a causa di una modifica, è meglio scoprirlo il giorno dopo, invece che un mese dopo… Se la Daily Build fallisce, il responsabile dell’anomalia deve interrompere quello che sta facendo e correggere il problema E’ inutile avere una feature nuova se il progetto non funziona… 30 Internal Release Avere un processo di Daily Build facilita la realizzazione delle Internal Release (o Alpha Release) In questo modo ci sono dei momenti in cui il lavoro del Team è focalizzato a rendere “facilmente” installabile e utilizzabile il prodotto Non ci si riduce a fare il setup alla fine del progetto!!! Internal Release Feature n Development Daily Builds 31 Testing and Stabilizing Internal Buffer Release n+1 Time Ma si può veramente farlo ogni giorno? 32 In un tipico progetto di 4/6 mesi, non si può fare la Daily build per i primi 3/5 giorni… al massimo. Poi SI PUO’! Suggerimenti per semplificare la Daily Build Usate sistemi per la gestione del codice (SourceSafe, ClearCase, CVS, etc…) Ogni sviluppatore lavora in locale Ogni giorno il codice viene preso, compilato e reso disponibile, e possibilmente testato per vedere che funziona (se possibile) Ogni giorno gli sviluppatori dovrebbero lavorare sull’ultima base di codice che compilava. Bisogna automatizzare il tutto: Batch files Sistemi di build automatici (Ant, NAnt, Build It!, MS Build) Sistemi di integrazione continua (il progetto viene ricompilato ad ogni check-in da parte degli sviluppatori 33 Stabilizing Milestone Deliverables 34 Bug convergence Zero bug bounce Release candidates Pilot compete Release Readiness Approved Pilot review Release ready version of everything Testing and bug reports Project documents Gestione dei rilasci Beta Bug Convergence Zero-Bug Release Release Candidate Active Bugs 0 35 Golden Release Time Release Readiness Approved Ricapitolando... Release Golden Release/RTM Release Candidates Release Readiness Zero-Bug Bounce Test Specification Complete/Alpha Scope Complete Internal Release n (Alpha, Pilot) Product Stability Betas Internal Release ... Internal Release 2 Project Plan Approved Internal Release 1 Test Plan 36 Gestione dei Bug 37 Bisogna valutare i Bug e dargli una priorità, per poterli gestire in maniera appropriata Generalmente si adotta un gruppo di review per dare la priorità ed eventualmente assegnare i Bug a chi li deve risolvere Bisogna sempre bilanciare la stabilità del prodotto rispetto alle richieste del cliente La funzionalità incriminata potrebbe essere eliminata in questa versione se non si riesce a stabilizzarla. Deploying Milestone Core technology deployed Site deployments compete Deployment stabilized Deployment complete Deliverables Operations and support information system Repository of every document, code, configuration, etc... Project closeout report 38 Deployment Un prodotto non è finito fino a quando non è stato consegnato e gli utenti messi in grado di lavorare. MSF è focalizzato alla CONSEGNA del prodotto, quindi la fase di Deployment non è marginale, ma è una delle fasi principali. La fase di Deployment viene conclusa quando: Il customer inizia a ricevere “valore” dal progetto Bisogna fare in modo che il customer “firmi” la fine del progetto e la presa in carico del prodotto Lo scopo è stato raggiunto! BISOGNA FESTEGGIARE!!! 39 MSF Process Model - Iterazioni Versione 3 Versione 2 Versione 1 40 Adattare il Process Model Il Process Model non va preso così com’è, ma va adattato al progetto, al team e agli elementi esterni Ogni team deve decidere quali Interim Milestone sono necessarie usando alcune linee guida: 41 Decidere in base al tipo di progetto Considerare anche gli eventi e i rischi esterni Evitare lunghi periodi senza Milestone Le Milestone devono “sempre” produrre dei Deliverables Gestione dei rischi Gestione dei rischi Rischio Possibilità di perdita o danno Non è qualcosa che c’è già (“problema conosciuto”) ma qualcosa che potrebbe avvenire in futuro e “danneggiare” il progetto Gestione dei rischi Processo di identificazione, analisi e gestione dei rischi che possono impattare più o meno gravemente sul progetto 43 MSF Risk Management Discipline Identify Risk Statement Analyze and Prioritize Control Risk Knowledge Base, Concepts, and Processes 44 Learn Risk Assessment Document Top n Risks Track and Report Plan and Schedule MSF Risk Management Discipline 1. Identificare i rischi, scrivendone la descrizione e il possibile impatto sul progetto 2. Analizzare l’impatto dei rischi, calcolandone la probabilità, e il possibile danno (in termini numerici). A quel punto si può calcolare l’esposizione al rischio, data dalla probabilità moltiplicata per il danno. In base al rischio e all’esposizione calcolata si può assegnare la priorità. 45 3. Pianificare gli interventi da eseguire per mitigare i rischi, e schedularli in base alla priorità 4. Tracciare l’andamento dei rischi, e mantenerne sempre aggiornata la documentazione, compreso il top risk document 5. Applicare gli interventi e controllarne i risultati, aggiornando i documenti 6. Documentare i rischi, i piani di intervento e i risultati ad uso di future iterazioni o futuri progetti MSF Risk Management Discipline La gestione dei rischi deve essere: Completa – deve includere tutti gli aspetti del progetto (persone, processi, tecnologie) Sistematica – il processo a sei passi comprende tutte le fasi di gestione Continua – bisogna applicarla durante tutta la durata del progetto Proattiva – bisogna agire in anticipo per minimizzare gli impatti Flessibile – bisogna individuare e gestire opportunamente vari tipi di rischi Orientata al futuro – lo scopo è anche quello di imparare dai progetti passati per migliorarsi nei progetti futuri 46 Gestione delle competenze MSF Readiness Management Discipline Utilizzate un approccio proattivo, non reattivo Trattate la mancanza di competenze come rischi La prontezza e competenza del team deve essere valutata per tutta la vita del progetto Identificate e gestite le conoscenze del team come conoscenze dell’organizzazione Define Assess Evaluate Change Knowledge Skills Abilities 48 Conclusioni su MSF 3.0 Ma MSF funziona davvero? SI! A patto di adattare MSF alle proprie esigenze e non adottarlo ciecamente. Progetti di alto livello che hanno adottato MSF: 50 www.nasdaq.com www.marriot.com Visual Studio Windows XP, 2003, …Longhorn Implementare MSF in sette passi Scegliete un gruppo e un progetto pilota (6-10 persone, 4-6 mesi, il progetto deve essere nuovo) Formate il team su MSF (ad es. Corso MOC1846) Opzionalmente – prendete un consulente che periodicamente fornisce lo “stato di salute” del progetto (meglio se MSF Practitioner) Portate a termine il progetto con successo! :-) Rivedete e customizzate MSF secondo le vostre esigenze 51 Selezionate i responsabili senior e presentate MSF attraverso un”executive summary” (ad esempio, parti di questa presentazione e Q&A) Opzionalmente – pianificate e ristrutturate l’organizzazione se il successo del progetto vale lo “sforzo” di usare ancora MSF E se i team sono misti (interni e del cliente)? Insegnate MSF al team del cliente PRIMA di far partire il progetto, in un corso a porte chiuse Si fideranno di più Le probabilità di successo aumentano se il team del cliente “capisce” come lavorate Fate in modo di mantenere il controllo del progetto in ogni ruolo, non dividete le responsabilità in modo completo, ad esempio Program Manager interno e Product Manager del cliente Conflitto di interessi!!! 52 MSF 4.0 e Visual Studio Team System MSF si evolve: “Formal” e “Agile” Al TechEd 2004 a San Diego è stata annunciata la nuova release di MSF, la 4.0, che vedrà la luce in due versioni distinte: MSF “Formal” – è l’evoluzione di MSF 3.0, per le realtà che necessitano un processo più formale e strutturato MSF “Agile” – è una nuova incarnazione di MSF, che cerca di avvicinarsi alle metodologie Agili Di MSF “Formal” si sa poco, mentre MSF “Agile” è disponibile in beta sul workspace GotDotNET: http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=b6973c97-2af8-4681a585-9ec387ee0688 54 MSF “Agile” 55 Sono state rilasciate due release, la prima (dalla quale è stata presa l’immagine del ciclo di vita) e la seconda, che è stata ritirata dal sito per essere revisionata dopo aver ricevuto una marea di critiche da parte dei sostenitori delle metodologie agili, che sostengono che MSF “Agile” non è poi così agile come Microsoft vuole far credere. Conviene quindi aspettare la prossima release “revisionata”, prima di avventurarsi nello studio di MSF “Agile”... Visual Studio Team System 56 Lo vedrete nella presentazione di Francesco Albano alle 17.00 Per quanto riguarda MSF, Visual Studio Team System lo supporterà direttamente in entrambe le versioni, attraverso template, strumenti e workflow customizzati. Visual Studio Team System però non sarà esclusivamente legato a MSF, in quanto il processo sottostante al tool è completamente customizzabile. Visual Studio Team System è stato realizzato anche con la collaborazione di BrightWork, che già ha realizzato l’unico tool che supporta MSF 3.0: http://www.brightwork.com/solutions/ Domande? Preparatele che ormai ho finito ;-) Risorse Ho raccolto una lista di risorse su MSF: MSF 3.0 Resources list: • http://www.lorenzobarbieri.info/articles/MSF_Resources.aspx MSF 4.0 Resources list: • http://www.lorenzobarbieri.info/articles/MSF4_Resources.aspx In particolare volevo segnalare un post di un blog che ha scatenato un putiferio dopo essere stato linkato da SlashDot ma che contiene un sacco di informazioni utili: 21 Rules of Thumb – Come Microsoft sviluppa i suoi software: • http://blogs.msdn.com/David_Gristwood/archive/2004/06/24/164849.aspx 58