Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten 2-35 ALGEMENE GEGEVENS Jaar Hoofdfase Code Vaardigheden niveau 2 Beginvereisten Vaardigheden niveau 1 Versie 3.0 Februari 2011 Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten VOORWOORD Projectmanagement is een "vak" apart. Het managen van projecten houdt in dat men flexibel te werk gaat, pro-actief reageert op wat er gebeurt en steeds het te bereiken resultaat voor ogen houdt. Net zoals een timmerman of elektricien heeft ook een projectmanager, naast zijn persoonlijke vakkennis en kwaliteiten, een “gereedschapskist” nodig voor het uitvoeren van zijn taak. In het geval van een projectmanager bestaat de gereedschapskist ondermeer uit een of meer projectmanagementmethoden, technieken (voor plannen en begroten), standaards en richtlijnen (documentatie en rapportage) en tools (planningsoftware, documentatietemplates). Het is belangrijk dat deze gereedschapskist goed gevuld is (wat kan een timmerman immers zonder de juiste hamer en spijkers?), maar een goede gereedschapskist maakt nog geen goede projectmanager (niet iedereen met een hamer en spijkers is immers ook een goede timmerman!). De laatste jaren is er steeds meer aandacht gekomen voor het gebruik van specifieke projectmanagementmethoden. Een methode kan hier opgevat worden als het geheel van afspraken, werkwijzen, procedures en hulpmiddelen op grond waarvan projecten worden 3-35 opgestart, uitgevoerd en afgerond. Voor de start van de ICA hoofdfase projecten willen we alle studenten inzicht bieden in een aantal gangbare methoden en technieken voor projectmanagement. Dit dictaat geeft van een aantal geschikte methoden voor projectmanagement een beknopte inleiding. Het bestaat hoofdzakelijk uit een bundeling van Nederlandse Wiki-teksten (Wikipedia), aangevuld met ‘ICA’ inzichten. Het dictaat is samengesteld door Sander Leer, Carel Sicherer en Peter Schuszler. Versie 2.0 is afgesloten op @@ augustus 2009. Versie 3.0: februari 2011 PS: dit dictaat is géén officiële bron, en daarom kan naar deze bron niet worden verwezen. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten INHOUDSOPGAVE 4-35 1 INLEIDING 5 2 PROJECTMATIG WERKEN 7 ProjectmatiG creëren 8 3 9 PRINCE2 Kenmerken Processen 9 10 4 13 PROCESMODELLEN Processen en meta-processen Procesactiviteiten Procesmodellen 13 13 15 5 17 DE WATERVALMETHODE Fasen Voordelen Nadelen Vernieuwde watervalmethoden 18 18 19 20 6 21 RATIONAL UNIFIED PROCESS Totstandkoming RUP Filosofie achter RUP Fasering 21 21 22 7 24 EXTREME PROGRAMMING Ontwikkelprincipes Best practices Nadelen 24 25 25 8 27 SCRUM Geschiedenis Doelstellingen Werkwijze Voordelen 9 DYNAMIC SYSTEMS DEVELOP-MENT METHOD (DSDM) 27 27 2727 28 29 Inleiding Wat is DSDM Toepassing van DSDM Kenmerken van DSDM Wanneer kan men DSDM gebruiken? MoSCoW 29 29 30 30 30 31 10 32 EVO Karakteristieken 32 Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten Werkwijze Procedures 32 32 11 33 BEST PRACTICES, TOOLS EN TECHNIEKEN Wanneer welke methode? 33 BRONNEN 35 5-35 1 INLEIDING Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten De meeste ICA projecten leveren uiteindelijk een werkend stuk software op. Maar het hele traject van softwareontwikkeling wordt lang niet in elk ICAkeuzesemester doorlopen. Vaak is dat traject gelet op de tijd niet haalbaar, en sommige semesters en projectopdrachten lenen zich er simpelweg niet voor. Toch zullen bij heel veel projecten analyseren, ontwerpen, realiseren en testen wèl aan bod komen. Vóór de start van het eerste project in de hoofdfase willen we jullie daarom inzicht bieden in een aantal gangbare projectmethoden en technieken. De gangbare eis bij ICA-projecten is dat er binnen één à twee weken een goedgekeurd Plan van Aanpak (Project Initiation Document (PID), Product Backlog, EVO plan) ligt, waarna een groep verder gaat met analyseren en ontwerpen. Afhankelijk van de gekozen methode leidt dat dan bijvoorbeeld tot geplande mijlpaalproducten in een bepaalde week (watervalmethode) of tot een reeks prototypes of incrementen (iteratieve methoden). In overleg met de ICA-begeleider en/of de opdrachtgever wordt voor een bepaalde aanpak 6-35 gekozen. Belangrijk is dat je al vroegtijdig bent doordrongen van het verschil tussen Projectmatig werken (planning, risico’s; oa Hummel) en Procesmodellen (waterval, enz.). In het eerste deel (hoofdstukken 2-3) gaat het over Projectmatig werken en bespreken we de meest gebruikte methode: PRINCE2. In het tweede deel komen de procesmodellen aan bod. Na een inleidend hoofdstuk (4) volgen specifieke hoofdstukken over Waterval-methoden (5), RUP (6), XP (7), Scrum (8), DSDM (9) en EVO (10). We sluiten dit dictaat af met een hoofdstuk over best practices, tools en technieken en een tabel waarin de hamvraag aan bod komt: wanneer is welke methode het meest geschikt? Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten 2 PROJECTMATIG WERKEN Projectmanagement is - algemeen geformuleerd - het beheersen van projecten. Het is de manier waarop projecten georganiseerd, voorbereid, uitgevoerd, en afgerond worden [2] [4] [10] . Een mogelijke definitie van projectmanagement is de volgende: Het, door middel van projecten, integreren van mensen, afdelingen, organisaties, middelen en technische mogelijkheden tot het op een gestructureerde wijze oplossen van een gemeenschappelijk onderkende probleemstelling, daarbij rekening houdend met de belangen van de betrokkenen. Projectmanagement omvat de aansturing van projectleiders en de beheersing van meerdere deelprojecten, terwijl projectleiding de aansturing van teamleiders binnen een project omvat. 7-35 Bij projectmanagement worden, in het algemeen, de volgende stappen doorlopen: Opstart van het project Bepaling van de omvang/scope van het project Planning van het project Opdeling van het project in verschillende fasen, te beschrijven in een Plan van Aanpak (PvA), ook wel Project Initiation Document (PID) genoemd. Uitvoering van de verschillende fasen Opvolging van de projectvoortgang Besluitvorming en creatie van het eindproduct Het gebruik van een projectmanagementmethode moet de kans op projectsucces vergroten en veel voorkomende faalfactoren zien te voorkomen zoals [10] : Onduidelijkheid over de opdrachtgever. Geen (goed) projectplan wat betreft opzet en inhoud. Geen goede definiëring van het doel en het beoogde projectresultaat. Slechte en (veel) te optimistische planning van resources, activiteiten en middelen. Oorspronkelijke uitgangspunten en eisen die (voortdurend) tijdens het project veranderen. Gebrek aan controle over voortgang (in tijd, geld en resultaat) waardoor tijdige bijsturing niet lukt. Onvoldoende meet- en beslispunten waardoor het overzicht ontbreekt. Gebrek aan kwaliteitscontrole waardoor opgeleverde producten niet voldoen aan de verwachtingen van gebruikers en het eindresultaat niet gebruikt wordt. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten Er bestaan verschillende projectmanagementmethoden (die al dan niet een certificeringsprogramma kennen), waaronder: Projectmatig creëren, IPMA, PRINCE2, PMW, PMBoK, OPEN. Prince2 komt hierna nog in een apart hoofdstuk aan bod. PROJECTMATIG CREËREN De meeste projectmanagementmethoden leggen vooral de nadruk op de strakke beheersing van projecten en dan met name de aspecten tijd (time controle), geld (cost control) en kwaliteit (quality control). Nieuwe methoden die de afgelopen jaren ontwikkeld werden, zoals beschreven in het boek “Projectmatig Creëren”, leggen vooral de nadruk op het managen van chaos, energie, creativiteit en het scheppend vermogen van het projectteam (“als je het wilt, dan lukt het ook”). Dit vanuit de filosofie dat een eenzijdige focus op “harde” projectmanagementaspecten ook geen garantie is voor succes. Vanuit deze visie passen de mensen zich niet aan een bestaande projectstructuur, maar creëren de betrokkenen voor zichzelf een maatwerk projectstructuur. Projectmedewerkers worden daarbij volledig op hun creativiteit en commitment aangesproken waardoor de projectverantwoordelijkheid maximaal gedelegeerd kan worden. Anders dan de bedenkers willen doen geloven, is deze methode vooral een aanvulling op bestaande methodieken, die zich veelal alleen maar concentreren op de harde aspecten van projectmanagement. 8-35 Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten 3 PRINCE2 De bekendste en belangrijkste projectmanagementmethode is Prince (Projects In Controlled Environments). Deze methode is in 1989 opgesteld door het Britse Central Computer and Telecommunications Agency (CCTA). In 1996 is een verbeterde versie uitgebracht met de naam “Prince2”. Prince2 is geschikt voor alle typen projecten, van klein tot groot. De methode is gebaseerd op praktijkervaringen met verschillende projectmanagement-methoden en praktijkvoorbeelden. Prince2 is een proces georiënteerde methode in tegenstelling tot bijvoorbeeld lineaire methoden als de watervalmethode. Prince2 is ook een productgerichte aanpak. Door duidelijke productbeschrijvingen worden risico’s met het gewenste eindresultaat of de op te leveren producten verminderd. Prince2 is in Nederland op dit moment de meest gebruikte en meest onderwezen projectmanagementmethode. KENMERKEN 9-35 PRINCE2 is toepasbaar op alle projecten, en kent een grote flexibiliteit. Aspecten van de methode die niet van toepassing zijn op (of niet nuttig voor) een bepaald project, kunnen overgeslagen worden. PRINCE2 ziet als grondbeginselen van goed projectmanagement: Een project is een eindig proces met een duidelijk begin en eind. Projecten moeten altijd worden beheerst om succesvol te zijn. De belangrijkste kenmerken van PRINCE2 zijn: Business Case: de zakelijke rechtvaardiging van het project (welke voordelen heeft het project voor de organisatie?; in hoeverre draagt het project bij aan de bedrijfsdoelstelling?; wegen de opbrengsten van het project op tegen de kosten ervan?). Product Based Planning (zie 5.1.): een planning die de oplevering van de producten (tussentijds en aan het eind) centraal stelt. Organisation: gedefinieerde organisatiestructuur voor het project (projectmanager, opdrachtgever, stuurgroep, enz.). Stages: beheersbare en controleerbare managementfasen. Management by Exception: de stuurgroep (Project Board) komt alleen bij elkaar als dat echt nodig is. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten PROCESSEN Fasering bij PRINCE 2: Starting Up a project (SU) Starting Up a Project is de fase waarin het project voorbereid wordt. Hierin wordt onderzocht of het zinvol is om een project te beginnen. In de praktijk is dit een korte, krachtige fase, waar de projectmanager intensief samenwerkt met de opdrachtgever. SU start door het geven van een projectmandaat van de opdrachtgever aan de beoogde projectmanager, die in deze fase onder andere de samenstelling van de projectorganisatie vaststelt. Initiating a project (IP) De eerste fase binnen een project wordt de Initiation Stage genoemd. Deze fase is verplicht in elk PRINCE2 project en is erop gericht om een goede fundering onder het project te leggen (eerst denken, dan doen). In de initiatiefase worden de beoogde resultaten, plannen, taken en verantwoordelijkheden vastgelegd, waarmee een draagvlak wordt gecreëerd voor het project. Het belangrijkste product van deze fase is het Project Initiation Document (PID). 10-35 Initiating a project (IP) bestaat uit zes onderdelen (IP1 t/m IP6): Planning Quality (IP1) Opstellen van een Quality Plan. Afstemming met kwaliteitsprocessen in de organisatie. Benoemen: o Technieken en methoden. o Betrokkenen. Maken van kwaliteitsprotocol (Quality Log) Planning a Project (IP2) Het opstellen van een projectplan conform Planning (PL). Refining the Business Case and Risks (IP3) Het bijwerken van de Business Case (BC), het 'waarom' van het project. Projectmanager legt deze vast. Totstandkoming is in nauw overleg met Project Board. Vertrek vanuit projectbrief en project approach. Verdere uitwerking risico’s Evaluatie eerder geïnventariseerde risico’s. Besluitvorming noodzaak tot noodplannen. Inschatting haalbaarheid a.d.h.v. risico’s Setting up Project Controls (IP4) Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten Het organiseren van beheersmechanismen (controls) om stuurgroep/projectmanager zelf in staat te stellen het project te sturen. Het definiëren van toleranties op verschillende niveau’s in projectorganisatie (top down vertaling van grenzen). Het opstellen van een Communication Plan. Setting up Project Files (IP5) Het opzetten van het projectdossier (deliverables registry): o Directorystructuur. o Toegangsrechten. Assembling a Project Initiation Document (IP6) Het samenstellen van het Project Initiation Document (PID) Management of Risk Een belangrijk beheersaspect voor het projectteam is management of Risk (risicomanagement). Risicomanagement heeft als doel het opsporen van risico's die het project bedreigen en deze vervolgens te beheersen. Het is niet per sé nodig om het 11-35 elimineren van een risico (of alle risico's) na te streven, dat zal waarschijnlijk onevenredig veel inspanning kosten. Risico kan worden omschreven als het product van de Kans dat een dreiging zich voordoet en de Schade die dat tot gevolg heeft: R = K * S Een kleine kans met een grote schade levert een laag risico op. Een grote kans gecombineerd met een hoge schade zal een groot risico vormen voor het project. Een leverancier die in het verleden grote moeite heeft gehad op tijd te leveren kan dus bijvoorbeeld een groot risico opleveren, zeker als de schade die optreedt als er niet op tijd geleverd wordt groot is. De projectmanager moet zich vanaf het begin van het project (initiatiefase) bewust zijn van de risico's en dient zich niet te beperken tot 1 fase, maar heeft zijn blik steeds vooruit gericht tot het einde van het project. Doordat er beslissingen worden genomen, nemen de risico's in de loop van het project af. Echter kan er in elke fase zich een nieuw risico voordoen, die ook moet worden beheerst. Risicomanagement houdt dus in dat de risico's die het project bedreigen beheerst worden en het inspelen op deze risico's indien nodig. De schade die het eindproduct kan oplopen heeft vaak betrekking op één van de drie beheersaspecten tijd, geld en kwaliteit. Omdat deze aspecten elkaar beïnvloeden worden ze ook wel de duivelsdriehoek genoemd. Er zijn vijf soorten acties die ondernomen kunnen worden m.b.t. de risico's: acceptatie, preventie, reductie, overdracht en calamiteit. Enkele veel voorkomende projectrisico's zijn: geen duidelijke opdrachtgever een onduidelijk doel geen goed projectplan Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten Certificering PRINCE2 kent een officiële certificering op twee niveaus: Foundation en Practitioner. Het Foundation niveau is bedoeld voor projectmedewerkers, die niet noodzakelijkerwijs projectleiding doen. Het Practitioner niveau is specifiek voor projectleiders. Verschillende opleidingsinstituten bieden cursussen aan die voorbereiden op één van beide niveaus. 12-35 Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten 4 PROCESMODELLEN Een ontwikkelmethode voor software is een structuur die je oplegt aan het ontwikkelen van softwareproducten. Synoniemen hiervoor zijn ook wel softwarelevenscyclus en softwareproces. Er zijn vele verschillende modellen voor dit soort processen, waarbij elke een bepaalde aanpak beschrijft tot een bepaald aantal taken of activiteiten die plaats vinden tijdens het proces [4] . Onderstaande aandachtspunten spelen bij het kiezen van een “software development lifecycle model” een belangrijke rol: weet de klant precies wat hij wil? is er veel kans dat requirements door het project heen (ingrijpend) zullen veranderen? is er veel kans dat de architectuur door het project heen vaak zal worden aangepast? 13-35 moeten er tussentijdse opleveringen gebeuren? wat is de verwachte doorlooptijd van het project? wat is de grootte van het projectteam? PROCESSEN EN META-PROCESSEN Een groeiend aantal bedrijven implementeert softwareontwikkelmethodes. Veel van deze bedrijven bevinden zich in de defensiesector, met name in de Verenigde Staten, waar deze bedrijven een 'waardering' dienen te hebben om contracten te verkrijgen. ISO 12207 is een standaard voor het omschrijven van een methode om een levenscyclus voor een project te selecteren, implementeren en te controleren. ISO 9000 omschrijft standaarden om processen formeel te organiseren en documenteren. PROCESACTIVITEITEN Software-engineeringprocessen zijn opgemaakt uit vele verschillende activiteiten, voornamelijk de volgende. Requirements Analyse Het achterhalen van de vereisten van een benodigd softwareproduct is de eerste stap van het maken ervan. Hoewel klanten waarschijnlijk denken te weten wat de software moet doen, is er misschien vaardigheid en ervaring in software-engineering nodig om incomplete, dubbelzinnige en tegenstellende requirements te herkennen. Specificatie Specificatie is de taak van het in detail beschrijven van de te schrijven software, op een mathematisch rigoureuze wijze. In de praktijk, zullen de meest succesvolle specificaties geschreven worden voor het begrijpen en optimaliseren van applicaties die reeds redelijk Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten doorontwikkeld waren, hoewel veiligheidskritieke software systemen meestal zeer doordacht worden gespecificeerd alvorens het ontwikkelen van de applicatie. Software Architectuur Met de architectuur van een software systeem wordt een abstracte representatie van dat systeem bedoeld. Architectuur houd zich bezig met het vaststellen van of een systeem de requirements haalt van het op te leveren product, alsook zorgen voor het mogelijk maken dat toekomstige requirements voldaan kunnen worden. De architectuur spreekt ook interfaces aan tussen het systeem en andere software systemen, alsook de onderliggende hardware en besturingssysteem. Implementatie (of Programmeren) Het reduceren van een ontwerp tot code mag misschien de meest voor de hand liggende onderdeel zijn van een baan als software engineer, maar het hoeft niet noodzakelijk het grootste onderdeel te zijn. Testen Het testen van (onderdelen van) software, met name wanneer twee of meer verschillende ontwikkelaars samen werken, is een taak van de software engineer. Documentatie Een heel belangrijke (en vaak onderschatte en over het hoofd geziene) taak is het documenteren van het interne ontwerp van software met als doel bij te staan bij toekomstig 14-35 onderhoud en verbeteringen. Documentatie is het meest belangrijke bij externe interfaces. Software Training en Support Een groot percentage van de software projecten gaan verkeerd omdat de ontwikkelaars niet inzien dat het niet uit maakt hoeveel tijd en planning een team stopt in het maken van software, als niemand in de organisatie het uiteindelijk ook daadwerkelijk gaat gebruiken. Mensen zijn af en toe resistent tegen verandering en gaan het zich begeven op onbekend terrein uit de weg. Dus als onderdeel van de Implementatie fase is het zeer belangrijk om trainingen te geven aan de meest enthousiaste gebruikers (om opwinding en vertrouwen op te bouwen), en deze training te verschuiven naar de neutrale gebruikers, gemengd met gretige aanhangers, en als laatste de rest van de organisatie mee te krijgen om de nieuwe software te accepteren. Gebruikers zullen vele vragen hebben en software problemen tegenkomen wat leid tot de volgende fase van software. Onderhoud Onderhouden en verbeteren van software om om te kunnen gaan met nieuwe problemen of nieuwe requirements kan veel meer tijd nemen dan de initiële realisatie van de software. Het is niet alleen dat je misschien code moet toevoegen dat niet helemaal past in het originele design, maar alleen al het bepalen hoe de software werkt en zich gedraagt nadat het opgeleverd is en eventueel al veranderingen heeft ondergaan kan al veel moeite kosten voor een ontwikkelaar. Ongeveer ⅔ van alle software ontwikkeling werk is onderhoud, maar deze statistiek kan misleidend zijn. Een klein deel hiervan is maar het repareren van bugs. Het meeste onderhoudswerk is het uitbreiden van systemen met nieuwe dingen, welke vaak gezien kunnen worden als nieuw werk. Ter vergelijking, ongeveer ⅔ van alle civiele techniek, architectuur en constructies werk is ook onderhoud op een vergelijkbare manier. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten PROCESMODELLEN Al tientallen jaren probeert men voorspelbare processen te vinden voor het verbeteren van productiviteit en kwaliteit. Sommige modellen proberen de onhandelbare taak van het software proces te systematiseren en formaliseren. Anderen passen project management technieken toe op het schrijven van software . Zonder project management kunnen software projecten makkelijk te laat of buiten budget opgeleverd worden. Het feit dat veel software projecten niet voldoen aan de eisen op het gebied van functionaliteit, budget en/of planning bewijst dat project management erg lastig is. Watervalmodellen Het bekendste en oudste model is de Watervalmethode (uitgebreider in het volgende hoofdstuk), waarbij ontwikkelaars (ongeveer) de volgende stappen achter elkaar uitvoeren: 15-35 Requirements opstellen en analyseren Opstellen van een aanpak Opstellen van een raamwerk voor de oplossing Code schrijven Testen Uitrollen en onderhouden Na elke stap wordt doorgegaan met de volgende stap. Net als bij het bouwen van een huis wordt na het bouwen van de muren niets meer gedaan aan de fundering. Als er geen iteratie in de planning is opgenomen kan er in principe niet meer teruggegaan worden naar een eerdere stap om fouten te verbeteren. Op deze manier worden fouten pas opgelost in de eindfasen van een project, waar het oplossen veel meer tijd, moeite en geld kosten. Iteratieve methoden Iteratieve ontwikkeling omschrijft een methodiek om de stappen van een project op te delen in kleine stukken, om zo te voorkomen dat een project uitloopt in een ramp door problemen of foute aannames. Iteratieve processen hebben de voorkeur bij (commerciële) ontwikkelaars, omdat het de mogelijkheid biedt om de juiste beslissingen te maken voor een klant die goed kan omschrijven wat hij wil. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten Agile software ontwikkelings processen zijn gebaseerd op de grondbeginselen van iteratief ontwikkelen. Bovenop deze basis hebben ze een meer op mensen gerichte blik dan traditionele aanpakken. Agile processen gebruiken feedback in plaats van planning als basis. De feedback word geleverd door regelmatige tests en het evolueren van de software. Agile processen lijken efficiënter te zijn dan oudere 'traditionele' aanpakken, ze hebben minder programmeertijd nodig om een product van hogere kwaliteit af te leveren, maar ze hebben als nadeel dat het niet goed mogelijk is een lange-termijn planning te maken met zulke procesmodellen. Het komt erop neer dat ze het meeste waar voor je geld bieden, maar dat je nooit weet wanneer je je waar krijgt… Extreme Programming (XP) is de bekendste Agile methode. Bij XP worden de fases in extreem kleine stappen uitgevoerd in tegenstelling tot andere non-Agile modellen. De eerste keer dat de stappen doorlopen worden kan een dag of een week duren, in tegenstelling tot bijvoorbeeld het waterval model, waar een stap maanden of jaren kan duren. Als eerste worden er automatische tests geschreven, om zo concrete doelen te hebben om naar te ontwikkelen. Daarna wordt er, door programmeurs in paren, ontwikkeld totdat alle tests doorlopen zijn en de ontwikkelaars geen nieuwe tests meer kunnen bedenken. Design en architectuur komen voort uit refactoring en komen na het coderen. Het designen wordt gedaan door dezelde mensen die ook ontwikkelen. Het werkende, maar incomplete 16-35 systeem wordt uitgerold en gedemonstreerd aan de gebruiker(s). Pas als het deel is goedgekeurd door de gebruiker, wordt er doorgegaan met ontwikkelen aan het volgende stuk van de software. TDD is een softwareontwikkeltechniek die inhoudt dat er in een herhaling steeds een test case wordt opgesteld en dan de code geschreven wordt die getest moet gaan worden. TDD ontstond als een aspect van XP, maar is uitgegroeid tot een aparte ontwerpmethode. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten 5 DE WATERVALMETHODE 17-35 De watervalmethode is een methode voor softwareontwikkeling (een proces voor de verwezenlijking van software), waarin de ontwikkeling regelmatig vloeiend naar beneden loopt (als een waterval). De ontwikkeling loopt door een aantal fasen namelijk, Definitiestudie/analyse, basisontwerp, Technisch ontwerp/detailontwerp, Bouw, Testen, implementatie en beheer en onderhoud. Over de oorsprong van de term "waterval" wordt vaak gezegd dat W. W. Royce deze in 1970 introduceerde, maar Royce zag zelf meer in de herhaalde benadering voor software ontwikkeling en gebruikte zelfs niet de term "waterval". Royce beschreef het watervalmodel als een methode die hij gewaagd en zelfs een uitnodiging voor mislukking vond [5] . Voorheen was het ontwikkelen van vooral grote softwareprojecten een groot onoverzichtelijk breiwerk. Met de komst van deze nieuwe methode hoopten de informaticabedrijven meer duidelijkheid te krijgen in hun projecten. Het watervalmodel is afgeleid van de traditionele manier van werken in grote projecten in de constructiebouw. De bedoeling van deze manier van werken is dat je het project in verschillende fasen opdeelt. Je begint met fase 1 en begint niet eerder met fase 2 dan wanneer je fase 1 hebt afgesloten. En wanneer je in een van de fasen een fout ontdekt moet je helemaal terug om die fase te corrigeren en de daaropvolgende stappen opnieuw uitvoeren. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten FASEN Het watervalmodel bestaat uit de volgende fasen: Definitiestudie/analyse. Er wordt onderzoek gedaan naar en gebrainstormd over de software om duidelijk te krijgen wat het doel is van de software. Basisontwerp. Er wordt duidelijker uitgewerkt wat er tijdens de eerste fase naar boven is gekomen. In deze fase worden de wensen van de klant op papier gezet en wordt er al gedacht aan de vorm van het programma. In deze fase wordt vastgelegd wat het op te leveren systeem moet doen. Technisch ontwerp/detailontwerp. Aan de hand van het basisontwerp kan er een werkelijk programma uitgedacht worden. In deze fase wordt vastgelegd hoe de in het basisontwerp vastgelegde functionaliteit gerealiseerd gaat worden. Nu vindt ook een onderverdeling plaats in technische eenheden zoals programma's, modules en functies. Bouw/implementatie. Hier wordt de broncode van de programma's geschreven. Testen. Er wordt gecontroleerd of de software goed volgens de ontwerpen is gebouwd. Ook kunnen er in deze fase fouten boven water komen die al in eerdere stadia gemaakt zijn. 18-35 Integratie. Het systeem is klaar en getest. Toch zal het nog in het bedrijf in gebruik genomen moeten worden. Dat wordt gedaan in deze fase. Beheer en onderhoud. Om er voor te zorgen dat het systeem het blijft doen zal er onderhoud verricht moeten worden. Schematisch overzicht van de watervalmethode Het waterval model bestaat uit verschillende fasen. Iedere fase heeft een eigen niveau dat tevens de volgorde bepaald. Het hoogste niveau wordt als eerste uitgevoerd en vervolgens de lagere fasen. Dit is gelijk aan de natuurlijke werking van een waterval en vandaar ook de naam. Hierboven is goed te zien dat de verschillende fasen van boven naar beneden lopen. VOORDELEN Wanneer in het begin van het project fouten worden ontdekt, kost het minder inspanning (en dus tijd en geld) om deze fout te herstellen. Bij het watervalmodel Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten wil men alle fasen eerst goed afsluiten voordat men verder gaat met de volgende fase. Men gaat er vanuit dat de fasen altijd goed zijn voordat men verder gaat met een volgende fase. Bij het watervalmodel legt men de nadruk op documentatie. In de nieuwere software ontwikkelingsmethoden maakt men minder documentatie. Dit heeft tot gevolg dat als er nieuwe mensen in het project opgenomen worden en er mensen weggaan het lastig is om de kennis over te dragen. Dit nadeel heeft de klassieke watervalmethode niet. Het is een rechttoe-rechtaan methode. De manier van werken zorgt ervoor dat er zich concrete fasen vormen. Hierdoor weet men in welke fase zij zit. Men kan in deze methode gebruikmaken van mijlpalen. Mijlpalen kunnen worden gebruikt om de voortgang van het project in te schatten. De watervalmethode is erg bekend. Veel mensen hebben er ervaring mee, dus kunnen er gemakkelijk mee gaan werken. NADELEN Er zijn een aantal nadelen van deze manier om software te ontwikkelen. Veel softwareprojecten zijn afhankelijk van externe factoren. De opdrachtgever is een hele belangrijke externe factor. Vaak zullen de requirements gedurende de 19-35 loop van het project wijzigen, omdat de opdrachtgever iets anders wil. Het is dus een nadeel dat de watervalmethode er van uit gaat dat de requirements niet veranderen tijdens het project. Wanneer in de bouwfase een requirement verandert, moeten een heel aantal fases opnieuw gemaakt worden. Het is erg moeilijk om de benodigde tijd en de kosten te schatten. De fasen zijn erg groot, het is daarom erg lastig om in te schatten hoeveel elke fase kost. Bij veel softwareprojecten werken verschillende mensen aan de verschillende fasen van het project. Bijvoorbeeld: de ontwerpers en de bouwers. Ze hebben allemaal een andere kijk op het project: zo kijken ontwerpers anders tegen het project aan dan de bouwers. Omgekeerd zullen de bouwers ook vaak anders tegen het ontwerp van de ontwerpers aankijken dan de ontwerpers zelf. Vaak is het zo dat het ontwerp weer aangepast zal moeten worden. Hier is de watervalmethode niet voor gemaakt. Binnen het project zijn de verschillende teamleden vaak gespecialiseerd. Het ene teamlid zal zich alleen in de eerste fase bezig houden met het ontwerpen, terwijl de bouwers alleen in bouwfase helpen aan het bouwen van het project. Dit kan leiden tot verspilling van verschillende bronnen. De belangrijkste bron is wel de tijd. Een voorbeeld: de ontwerpers zijn bezig met het perfectioneren van het ontwerp. De bouwers kunnen in principe al beginnen met bouwen, maar omdat ze werken met het watervalmodel moeten ze wachten totdat de eerste fase is afgesloten. Dit een typisch voorbeeld van tijdsverspilling. Wanneer frequent gedeelten van het software product worden opgeleverd geeft dit de klant vertrouwen, maar ook het software ontwikkelingsteam. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten Het testen gebeurt pas in één van de laatste fasen van het project. Bij veel andere softwareontwikkelingsmethoden wordt er getest zodra er één bepaald deelproduct klaar is en ook wordt er op het laatst een integratietest gedaan. Doordat er zoveel nadruk wordt gelegd op documentatie, is de watervalmethode niet efficiënt voor kleinere projecten. Er zit dan te veel werk om het project zelf heen qua documentatie. VERNIEUWDE WATERVALMETHODEN Om zoveel mogelijk gebruik te maken van de voordelen en zo weinig mogelijk last te hebben van de nadelen zijn er een aantal vernieuwde watervalmethoden ontwikkeld. Hieronder worden er een aantal genoemd. Het "sashimi" model 20-35 Schematisch overzicht van de sashimi watervalmethode met overlappende fasen. Het sashimi model is opgezet door Peter Degrace. De fasen zijn hetzelfde als in het traditionele watervalmodel, alleen nu overlappen de fasen elkaar ook. Door gebruik te maken van deze methode worden er veel minder bronnen verspild. (Zie een nadeel.) De afbeelding hierboven geeft weer hoe de fasen elkaar overlappen. Dit is echter een illustratie en dit geeft dus niet de werkelijke overlapping weer qua verhouding! Het verschil met het schematische overzicht van de standaard waterval methode is dat de fasen deze keer tegen de doorlooptijd afgedrukt zijn. Dit betekent dat men bijvoorbeeld al begint met het ontwerp terwijl de analyse nog bezig is. Dit betekent ook dat men terug kan vallen op de analyse in de ontwerpfase. Het AORTA lifecycle model Het Aorta lifecycle-model is een software ontwikkelmethode volgens de watervalmethode, maar na elke cyclus vindt een terugkoppeling naar de klant plaats. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten 6 RATIONAL UNIFIED PROCESS RUP is een uitgebreide verfijning van het generieke Unified Process (UP) en is ontwikkeld door Rational Software Corporation welke nu een divisie is van IBM. De wortels van het Rational Unified Process (RUP) liggen in het originele spiraalmodel van Barry Boehm. Ken Hartman, één van de belangrijkse RUPbedenkers, ging samenwerken met Boehm op grond van praktijk- en literatuuronderzoek. De eerste versie van Rational Unified Process V5 werd uitgegeven in 1998. [4] TOTSTANDKOMING RUP De bedenkers en ontwikkelaars van RUP hebben zich gefocust op het analyseren van de karakteristieken waardoor projecten mislukken. Hierdoor konden ze de hoofdproblemen herkennen waardoor projecten vaak mislukken. Op deze lijst staan bijvoorbeeld: 21-35 Ad hoc requirements Vage, dubbelzinnige en onduidelijke requirements Overmatige complexiteit Onvoldoende testen De uitkomst van hun onderzoek was een verzameling van best practices die ze hadden afgeleid van de projecten die wel slaagden. Deze best practices samengevoegd is wat het nu genoemd wordt: Rational Unified Process. FILOSOFIE ACHTER RUP RUP is gebaseerd op een aantal principes en best practices, zoals: Ontwikkel software incrementeel/iteratief Gezien de tijd die het kost om grote softwaresystemen te bouwen, is het niet mogelijk om een heel systeem in één keer te maken. Requirements kunnen veranderen in de loop van het traject door technische beperkingen, veranderende eisen/wensen of een beter begrip van het daadwerkelijke probleem. Iteratief ontwikkelen stelt je in staat om het project op te delen in een aantal deelproducten en deze afzonderlijk van elkaar op te leveren. Dit verkleint het risico dat het eindproduct niet is wat de klant wil en de klant kan nu per deelproduct zijn feedback geven wat je weer kunt meenemen tijdens de ontwikkeling van het volgende deelproduct. Management van software requirements Requirements management heeft te maken met het achterhalen, vastleggen en beheren van de behoeften van de klant. Daaronder vallen de volgende activiteiten: o Analyseer het probleem o Definieer wat de klant wil o Definieer het op te leveren systeem Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten o Beheer de randvoorwaarden van het systeem o Verfijn de systeemeisen/systeemomschrijvingen o Beheer de wijzigende requirements Maak gebruik van op component gebaseerde architectuur Systemen met een op componenten gebaseerde architectuur zijn eenvoudig uit te breiden, inzichtelijk, begrijpbaar en bevorderen het hergebruik van bepaalde delen code. Aangezien de systemen steeds groter worden neemt de belangrijkheid van een goede architectuur toe. RUP is erop gericht de basisarchitectuur in een vroeg stadium te bepalen, en naarmate het systeem groter wordt zal de architectuur zich verder uitbreiden. Bij iteratief ontwikkelen is het mogelijk de componenten geleidelijk aan in kaart te brengen om ze vervolgens te ontwikkelen, te kopen of te hergebruiken. Maak prototypes Door de gebruiker een grafische voorstelling te geven van het product (prototyping), verkleint de faalkans van het project. Een globale, grafische oplossing voor het probleem is door de gebruiker beter te begrijpen dan pagina's vol broncode. Het is een versimpeling van de complexiteit. Naast prototypes komen in deze fase ook use cases, klassediagrammen en andere objecten naar voren. 22-35 Test het systeem Het bepalen van de kwaliteit van een systeem gebeurt op basis van testen. Dit is een van de punten waarop software projecten vaak falen omdat het testen vaak aan het einde van het project wordt gedaan, soms helemaal niet en soms door andere teams. RUP vangt dit probleem af door het testen in het gehele proces terug te laten komen en daarbij alle stakeholders te betrekken (zowel programmeurs als klanten). RUP gaat er vanuit dat elke stakeholder verantwoordelijk is voor de kwaliteit gedurende het gehele project. Maak gebruik van versiebeheer tijdens de software ontwikkeling. Zoals bij alle andere softwareprojecten zijn veranderingen in de software onvermijdelijk. RUP beschrijft een aantal methoden om deze veranderingen te beheersen en nauwkeurig te volgen. RUP beschrijft ook beveiligde werkruimtes, hierin staat bijvoorbeeld dat het systeem van een programmeur niet aangetast mag worden door veranderingen in een ander systeem. FASERING Het RUP voorziet een verdeling van elk project in 4 hoofdfases : 1. Inceptiefase (Aanvang) De haalbaarheid van het project, de inhoud (scope) en de begrenzingen worden bepaald. Gedurende de inceptiefase wordt het oorspronkelijke idee omgezet in een produktvisie (vision). De business drivers worden gereviewed om ze helder te krijgen. De globale kostprijs en de verwachte baten van het project worden geschat. De belangrijkste risico's worden geïdentificeerd en Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten ingeschat. Het uiteindelijke doel van deze fase is een haalbaarheidsstudie (business case) voor het project. 2. Elaboratiefase (Detaillering) Het merendeel van de functionele requirements (use cases) wordt gespecificeerd en de systeemarchitectuur wordt ontworpen. De focus ligt op de technische haalbaarheid van het project. Uiteindelijke doel van deze fase is een projectplan, waarin o.m. de gedetailleerde inhoud (scope), timing (schedule) en kostenraming (estimations) voor het project zijn opgenomen. 3. Constructiefase (Bouw) Het product wordt ontwikkeld vanaf de architectuur tot een systeem dat compleet genoeg is om te testen. 4. Transitiefase (Overgang) Via testen wordt het product gevalideerd door de stakeholders. Andere activiteiten in deze fase zijn: voorbereiding en inproductiestelling (deploy), nazorg, en overdracht van de verantwoordelijkheden. Deze fase wordt afgesloten met een inventarisatie van de opgedane ervaringen (lessons learned) voor volgende projecten. 23-35 RUP is een iteratief proces wat inhoud dat testen in verschillende fasen van het project kunnen plaatsvinden. Dit maakt het mogelijk om fouten in een vroeg stadium van het project op te sporen en zorgt ervoor dat de kosten voor herstelling zo laag mogelijk blijven. Hoe later een fout wordt ontdekt, hoe hoger de kosten voor herstelling. De meeste testen zullen in principe plaatsvinden in de constructiefase. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten 24-35 7 EXTREME PROGRAMMING eXtreme Programming (ook wel XP genoemd) is een softwareontwikkelingsmethodiek en een vorm van agile software-ontwikkeling. De belangrijkste grondleggers van eXtreme Programming zijn Kent Beck, Ken Auer, Ward Cunningham, Martin Fowler en Ron Jeffries. Zij omschrijven XP als "a humanistic discipline of software development, based on principles of simplicity, communication, feedback, and courage". ONTWIKKELPRINCIPES XP is een methodiek die vooral geschikt is voor projecten waarbij de exacte applicatie-eisen niet bij voorbaat vastliggen. EXtreme Programming dankt zijn naam aan het feit dat een aantal beproefde ontwikkelprincipes tot in het extreme worden door gevoerd. Voorbeelden zijn: Als het goed is dat ontwikkelaars code bij elkaar reviewen, doe het dan voortdurend: ontwikkel alle software in koppels. Met andere woorden, twee mensen achter één computer. Als testen goed is, schrijf dan unit tests en voer ze iedere keer uit als er ook maar een regel code is veranderd. Als ontwerpen goed is, maak het dan onderdeel van ieders dagelijks werk: verbeter het ontwerp stapsgewijs, zodra de noodzaak zich voordoet. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten Als eenvoud goed is, houd dan het ontwerp zo simpel mogelijk. XP werkt veel met het KISS (Keep It Simple Stupid!) principe. Als architectuur zo belangrijk is, laat dan iedereen werken aan het ontwikkelen van de architectuur. Als integratietesten belangrijk is, integreer de code dan zo vaak mogelijk, liefst meerdere keren per dag. Als korte iteratieslagen goed zijn, maak ze dan werkelijk heel erg kort: seconden, minuten, uren, in plaats van weken, maanden, jaren. Geen van deze `best practices' zijn uniek voor XP. Stuk voor stuk zijn ze decennia geleden al vele malen toegepast. BEST PRACTICES De optimale kracht van XP komt voort uit het in samenhang toepassen van twaalf best practices, doordat deze elkaar versterken. Elke andere softwareontwikkelmethode zal ook voordeel hebben bij het toepassen van één of meerdere genoemde best practices. XP is gebaseerd op de volgende twaalf best practices: 25-35 1. gebruik een zo simpel mogelijk ontwerp dat werkt; 2. schrijf eerst de testcode ('unit test') voordat je functionaliteit codeert; 3. continue herstructurering ('refactoring') van de programmacode; 4. continue integratie van alle programmacode; 5. iedere ontwikkelaar heeft gelijke rechten over alle programmacode; 6. iedere ontwikkelaar gebruikt dezelfde codeerstandaard; 7. programmeurs werken in paren ('pair programming'); 8. de klant is onderdeel van het ontwikkelteam en moet dus continu voor vragen beschikbaar zijn; 9. de software wordt in een vaste regelmaat in releases van beperkte omvang aan de klant opgeleverd voor beoordeling; 10. ontwikkelaars plannen aan de hand van kleine brokjes functionaliteit ('user stories'); 11. alle teamleden (ontwikkelaars en de klant) delen een gemeenschappelijk beeld van het systeem ('metafoor'); 12. overwerken is een uitzondering. NADELEN Er worden vanuit de praktijk ook nadelen van XP onderkend: 1. De belangrijkste is misschien wel dat het niet eenvoudig is XP in te voeren. Omdat de verschillende elementen van XP zo op elkaar ingrijpen, wordt er alleen een goed resultaat bereikt als ze allemaal worden toepast. 2. Er is nog relatief weinig ervaring met XP. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten 3. Code ontwikkelen met enkel oog voor de wensen van de gebruikers kan problemen geven wanneer een einddoel in het oog moet worden gehouden. Het einddoel kan ondersneeuwen met de tijdelijke doelen van de te realiseren iteraties. Dit leidt gemakkelijk tot uitloop van de oplevering van het uiteindelijke systeem. Veel aandacht van de projectleider is vereist om dit nadeel van XP te managen. 4. Bovenstaande heeft ook zijn weerslag op de verwachtingen van de opdrachtgever. Deze dienen eveneens aandacht te krijgen zolang XP nog geen bekende ontwikkelmethodiek is. 5. Niet elke ontwikkelaar is een teamspeler. Om volgens de principes van XP te werken zal zorgvuldig een team moeten worden samengesteld. Twee junior ontwikkelaars bij elkaar of twee eigenwijze ontwikkelaars zullen niet de beoogde programmatuur opleveren. 6. Er dienen strakke afspraken gemaakt te worden omtrent de gebruikersparticipatie om enige vorm van vrijblijvendheid in de kiem te smoren. Het schrijven van unit test moet de uitgangsituatie zijn en blijven voor het ontwikkelen van programmatuur. Wanneer gebruikers niet in staat zijn geweest unit tests te schrijven en ontwikkelaars toch doorgaan met ontwikkelen, onstaat een systeem waar niet door de gebruikers over is nagedacht. 26-35 7. Verwachte problemen bij het ontwikkelen van standaardpakketten en in combinatie met legacy-code. Er is een aantal zeer succesvolle projecten bekend, maar er wordt betwijfeld of deze projecten succesvol waren vanwege de kwaliteiten van de mensen die er aan mee deden of vanwege de kwaliteit van XP. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten 8 SCRUM Scrum is een framework voor het agile managen van softwareontwikkeling. Je werkt in multidisciplinaire teams die in korte sprints (iteraties) werkende software opleveren. Samenwerking, communicatie en teamspirit zijn hierbij sleutelwoorden. Scrum is een term die afkomstig is uit de rugbysport, hierbij staan de spelers in een grote groep en proberen ze al duwend de bal naar de overkant van het veld te brengen. Er wordt dus niet afgewacht of de vorige fase afgelopen is maar er wordt tegelijkertijd gewerkt. GESCHIEDENIS Scrum werd geïntroduceerd in een onderzoek door Ikujiro Nonaka en Hirotaka Takeuchi dat begin 1986 in de Harvard Business Review gepubliceerd is. In dit onderzoek wordt beschreven dat projecten met kleine (cross-functional) teams historisch gezien het beste resultaat leveren. Naar aanleiding van dit onderzoek ontwikkelde Jeff Sutherland in 1993 het scrum-proces, terwijl Ken Schwaber een eigen benadering bij zijn bedrijf toepaste. Samen 27-35 werkten ze dit verder uit en in 1995 formaliseerde Ken Schwaber scrum als software ontwikkelmethode. DOELSTELLINGEN Verhogen van de effectiviteit van het team Het bewaken van de vooruitgang van het team Het oplossen van blokkades Het bewaken van de projectvoortgang In kaart brengen en minimaliseren van de risico's WERKWIJZE Bij de watervalmethode heeft iedere fase experts. Die voeren hun taak uit en dragen het resultaat over naar de experts voor de volgende fase. Bij scrum zet je de experts uit de verschillende fasen bij elkaar in één team. Een Scrum team bestaat uit maximaal zeven spelers. Het team wordt geleid door de Scrum-master en houdt dagelijks bij aanvang van de werkdag een zogenaamde scrum-meeting (ook wel standup-meeting genoemd). In deze meeting, die maximaal 15 minuten duurt, beantwoordt elk teamlid de volgende drie vragen: Wat heb je gedaan? Wat ga je doen? Wat zijn je problemen? Daarna gaat men weer aan het werk om de opdracht te volbrengen. De personen werken veel samen en pakken het project aan met zijn allen en zullen er voor zorgen dat het project ook slaagt. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten Een project volgens de Scrum principes begint met een ‘fase 0’ (ook wel Pre-game Planning & Staging), waarin de product backlog wordt samengesteld. Daarna wordt in overleg met de opdrachtgever / product owner de eerste iteratie afgesproken, in de vorm van een (eerste) Sprint Backlog. Een ‘Sprint’ duurt twee tot vier weken. Iedere Sprint levert een ‘potentially 28-35 shippable product’ op. VOORDELEN Doordat er iedere dag een scrum-meeting is en er veel communicatie is zal de teamspirit hoog zijn en zal iedere persoon voor elkaar willen werken. Doordat er veel tegelijk gebeurt zal de tijd waarin het project zal worden afgerond korter zijn dan bij andere methodes. Omdat iedereen weet wat er speelt en wat eventueel een probleem is, kan iedereen elkaar ook direct helpen, zonder eerst te wachten op een andere fase. In het boek van Craig Larman, Agile & Iterative development. A Manager’s Guide, komt in hoofdstuk 7 Scrum uitgebreid aan bod. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten 9 DYNAMIC SYSTEMS DEVELOPMENT METHOD (DSDM) Dynamic Systems Development Method, of kortweg DSDM, is een Rapid application development methode, die voornamelijk wordt gebruikt bij projecten voor ontwikkeling van gecomputeriseerde informatiesystemen. De methode ontstond rond 1994 in het Verenigd Koninkrijk, als een vendor-onafhankelijke methode, wat inhoudt dat er geen specifiek CASE tool of consultatiebureau achter zit. In plaats daarvan zit er een consortium van geïnteresseerde bedrijven en individuen achter. INLEIDING De eerste versie van DSDM kwam in februari 1995 uit, de tweede in december 1995, de derde in oktober 1997 en de huidige versie (4.2) dateert van mei 2003. DSDM erkent dat projecten door tijd en resources beperkt worden en dat requirements 29-35 aangepast kunnen worden. Verder wordt de 80/20 implementatie regel gehanteerd en wordt ervan uitgegaan dat niets de eerste keer perfect is. Dit betekent niet dat er een onvolledig product wordt afgeleverd, maar volgens het Pareto principe is 80% gedaan door de implementatie van de belangrijkste 20% van de requirements. In sommige gevallen is het mogelijk om practices van andere softwareontwikkelmethoden te gebruiken zoals RUP, XP of PRINCE2. Een agile methode die overeenkomsten heeft met de processen en het concept van DSDM is Scrum. De slogan van DSDM is dan ook: Not all projects will be full DSDM...but You can use SOME of DSDM ALL of the time You can use ALL of DSDM SOME of the time WAT IS DSDM In de traditionele benadering van systeemontwikkeling staan de specificaties vast en moeten deze gerealiseerd worden. Tijd en resources variëren tijdens de ontwikkeling. DSDM is een methode die de ontwikkeling van IT-systemen vastlegt in een raamwerk van een tijdsplanning (timeboxes). De duur van het project en de te gebruiken resources worden vastgelegd. Dit betekent dus dat juist de specificaties die gerealiseerd zullen gaan worden, in het verloop van het project kunnen variëren. In het begin van het project worden op globaal niveau zowel de functionele- als de niet-functionele specificaties ingedeeld op prioriteiten (MoSCoW). Tijdens de ontwikkeling komen steeds meer gedetailleerde specificaties boven water. Deze gedetailleerde specificaties worden vervolgens ook weer op basis van prioriteiten ingedeeld. Binnen deze tijdsplanning (timeboxes) worden in nauwe Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten samenwerking met de klant eerst de zaken opgeleverd, die het meest belangrijk zijn voor de bedrijfsbehoeften van de klant. Op deze manier kan sturend op tijd snel een bruikbaar resultaat worden bereikt en het IT-project beter worden beheerst. DSDM maakt een ICT-project dus meer flexibel. Door het nieuwe systeem op te delen in zelfstandige eenheden, wordt het aanbrengen van tussentijdse veranderingen eenvoudiger voor de ontwikkelaar. TOEPASSING VAN DSDM Het DSDM Consortium Benelux zegt over de toepasbaarheid van DSDM: "DSDM is goed toe te passen voor de ontwikkeling van alle mogelijke systemen. De meerwaarde van DSDM wordt echter ten volle benut bij de ontwikkeling van systemen met bepaalde kenmerken. Te noemen zijn goed visualiseerbare functionaliteit, via bijvoorbeeld schermen en rapporten. Prototypes kunnen middels deze zichtbare resultaten eenvoudig en goed geëvalueerd worden.” KENMERKEN VAN DSDM Een kenmerk van DSDM is dat het volledig onafhankelijk is van leveranciers, 30-35 ontwerpmethodes en van ontwikkelomgevingen. Verder is het kenmerkend dat het in deze ontwikkelmethode heel belangrijk is dat de eindgebruiker zeer actief deelneemt aan het ontwikkelingsproces. DSDM heeft een iteratieve, incrementele opleverstrategie. Dit houdt in dat er telkens deelproducten worden opgeleverd, ook wel mijlpalen genoemd. Dit geeft de klant een beter gevoel, de klant ziet immers dat er telkens wat opgeleverd wordt. Het is dan vaak zo dat essentiële onderdelen van het nieuwe systeem gelijk al afgemaakt kunnen worden. Het is dus zo dat de DSDM ontwikkelmethode al vrij vroeg in het ontwikkelstadium een toegevoegde waarde kan bieden aan de klant. WANNEER KAN MEN DSDM GEBRUIKEN? DSDM is een geschikte methode als de volgende aspecten aanwezig zijn: Als het een interactief systeem is; Als er een gedefinieerde gebruikersgroep aanwezig is; Als het systeem rekenkundig complex is kan dat deel worden opgesplitst of worden geïsoleerd; Als het systeem groot is kan het worden opgesplitst in kleinere functionele delen de ontwikkeling is sterk tijdsgebonden; Als de eisen aan het systeem kunnen worden geprioriteerd; Als de eisen aan het systeem onduidelijk of aan verandering onderhevig zijn; Veel systeemontwikkelingsprojecten blijken niet aan de verwachtingen van eindgebruikers te voldoen. Dit is te voorkomen door met name op de volgende zaken te letten: Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten Het systeem voldoet niet aan de functionele behoefte vanuit het bedrijf, waarvoor het systeem was ontwikkeld. Het systeem wordt niet gebruikt of er vinden dure aanpassingen op plaats. Het systeem voldoet niet aan de performance-eisen, waardoor het niet bruikbaar is voor de gebruikers. Het systeem bevat fouten, wat kan resulteren in onverwachte problemen. Gebruikers wijzen de invoer van het systeem af om politieke redenen, Dit kan komen door gebrek aan betrokkenheid bij de ontwikkeling of vanwege gebrek aan draagvlak. Systemen worden wel geaccepteerd, maar na verloop van tijd neemt het onderhoud enorm toe, waardoor het systeem niet meer gebruikt wordt. DSDM richt zich op elk van de bovengenoemde situaties, en probeert deze te voorkomen. MOSCOW De afkorting MoSCoW staat voor de relatieve gewenstheid van de diverse onderdelen van het gewenste systeem: 31-35 Must have - moeten worden gerealiseerd; Should have - zouden eigenlijk moeten worden gerealiseerd; Could have - kan eventueel worden gerealiseerd (bijvoorbeeld als must en should onderdelen eerder zijn gerealiseerd dan verwacht); Won't have this time but would like in the future - worden waarschijnlijk niet gerealiseerd binnen het betreffende project.. De bovenstaande gradaties kunnen door voortschrijdend inzicht door bijvoorbeeld gebruikers of ontwikkelaars tijdens het proces worden gewijzigd. Must's (en Should's in mindere mate) staan echter in principe vast en mogen dus niet zomaar worden veranderd door de ontwikkelaars zelf, zonder overleg hierover te hebben met eindgebruikers en opdrachtgevers. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten 10 EVO Evolutionary Project management (EVO) is misschien wel de oudste sofwareontwikkelmethode gebaseerd op Agile principes en adaptieve kwaliteiten. Al in de jaren ’60 kwam de methode voor, en vanaf 1976 werd voor het eerst over Evo gepubliceerd. KARAKTERISTIEKEN EVO kent de volgende karakteristieken: 32-35 Zeer korte iteraties (één, maximaal twee, weken). Evolutionaire requirements en ontwerp Adaptieve, klantgestuurde, planning Kwantificeerbare meetresultaten (‘performance requirements’) Kwalitatieve requirements met numerieke metingen WERKWIJZE EVO onderscheidt een aantal niveaus waarop wordt gewerkt. Al deze niveaus hebben hun eigen cyclus. Het eerste niveau is op het Strategisch management. Op dit niveau worden doelen geformuleerd, naar oplossingen gezocht en een volgende iteratie afgesproken. Het tweede niveau is de Productiecyclus. Hierbij wordt onderscheid gemaakt in de frontroom en de backroom. In de frontroom worden producten klaargemaakt voor directe oplevering aan het einde van de iteratie. In de backroom vinden grotere taken, integratie en ontwikkelingen plaats, die niet direct, maar pas in een latere fase worden opgeleverd. Het derde niveau is de opleveringscyclus: iedere week bevindt zich iets in de Frontroom, dat na afloop van een iteratie ook daadwerkelijk wordt opgeleverd. Het vierde en laatste niveau is de ontwikkelingscyclus. Dit zijn de zogenaamde backroomactiviteiten. PROCEDURES In tegenstelling tot bijvoorbeeld Scrum, kent EVO weinig voorgeschreven procedures, en weinig documentatie. Het belangrijkste document is het adaptieve Evo Plan, waarin een top 10 van Function requirements specs en Performance requirements specs wordt opgenomen en bijgehouden. One page summaries Wel documentatie, maar nooit meer dan één A4, is de filosofie. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten 11 BEST PRACTICES, TOOLS EN TECHNIEKEN Wanneer je een projectmanagementmethode gekozen hebt en een procesmodel blijven er soms nog keuzes over voor bepaalde best practices, tools en technieken. Dit hoofdstuk geeft een kleine bloemlezing van bruikbare hulpmiddelen die vaak niet afhankelijk zijn van een bepaald model of methode [4] . WANNEER WELKE METHODE? Na alles gelezen en bekeken te hebben moet je op een gegeven moment zelf de keuze maken voor een model. In het onderstaande overzicht hebben we voordelen, nadelen en toepasbaarheid van een aantal modellen nog eens op een rijtje gezet [11] . 33-35 Methode Voordelen Nadelen Waterval Maakt het plannen een stuk makkelijker en de personele bezettingen zijn makkelijk te Klantwensen moeten bijna volledig bekend zijn en niet meer wijzigen. De functionele en organiseren. ontwerpbeslissingen worden Beperkt het aantal genomen op een moment dat er veranderingsmogelijkheden aan nog het minst bekend is over het het ontwerp van het project. product. Specificaties van testcases zijn bekend voordat het daadwerkelijke testen begint. Testen van product kan pas laat in ontwikkelproces. Er is geen weg terug, als er een keuze gemaakt is kan deze in de testfase moeilijk terug worden gedraaid daardoor is het mogelijk dat opgeleverde systemen niet bruikbaar zijn voor de klant. Wanneer de ontwikkeling uitloopt wordt vaak testtijd opgeofferd, dit komt vaak niet ten goede aan het systeem. Naarmate het project vordert neemt het risico toe. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten Methode Voordelen Nadelen Incrementeel Klant kan al gebruik maken van Globale klanteisen moeten van te een deel van de functionaliteit voren duidelijk zijn. Detailwensen tijdens duur van het gehele project. van increment één moeten wel Flexibeler dan watervalmodel. Maakt het plannen relatief duidelijk zijn. Aan het eind van een increment makkelijk en de personele moet klant wel weten wat de detail bezettingen zijn makkelijk te eisen zijn voor het volgende organiseren. increment. Project moet wel op te delen zijn in incrementen/brokken functionaliteit Goede planning noodzakelijk, incrementen hebben onderlinge afhankelijkheid dus moeten op elkaar afgestemd worden. Wannneer dit niet gebeurd is extra inspanning nodig om zaken op elkaar te laten aansluiten. 34-35 Eindgebruiker heeft vaak geen behoefte aan veranderingen of aanpassingen. Evolutionary Prototyping Klant kan al gebruik maken van een deel van de functionaliteit hoeveelheid inspanning om een tijdens duur van het project. bepaald resultaat te bereiken Feedback van klant kan tijdens de onzeker is. ontwikkeling verwerkt worden in Vaak geen goede architectuur. het systeem en sluit daardoor beter Weinig tot geen documentatie “op papier”. aan bij wat de klant wil. Moeilijk om te plannen omdat de Energie dat in een prototype Kan uitmonden in een “Build and gestoken wordt is niet voor niks. Fix” applicatie met slechte Sneller dan het waterval model. structuur in de code Klant is al erg betrokken in een vroeg stadium van het project. Management ziet eerder het nut in. klantwensen. Talen die zich goed lenen voor Problemen kunnen al vroeg prototyping zijn niet altijd geschikt gesignaleerd worden en dit is dus voor de uiteindelijke applicatie. risico verlagend. “Einde” project moeilijk te bepalen door eventueel steeds wijzigende Testen speelt een grote rol in het ontwikkelingsproces Onderhoud kost vaak meer inspanning en dus ook geld. Projectmatig werken en Procesmodellen 2.0 Dictaat op basis van Wikipedia teksten BRONNEN [1] CAP GEMINI ACADEMY http://academy.capgemini.nl/Clusters.aspx?menuid=16&clusterid=31 [2] HANS HUMMEL E . A., “PROJECTWIJZER ”, ISBN 9789001577964 [3] GRAIG L ARMAN , “APPLYING UML AND P ATTERNS ”, ISBN 9780131489066 [4] WIKIPEDIA http://nl.wikipedia.org [5] EDWIN DE GROOT, “SOFTWAREKWALITEIT VAN MDA TOOLS ”, AFSTUDEERSCRIPTIE UV A, 2005 http://homepages.cwi.nl/~paulk/thesesMasterSoftwareEngineering/EdwinDeGro ot.pdf [6] DARTS, ftp://ftp.sei.cmu.edu/pub/education/cm22.ps [7] GOOMA, H. “A S OFTWARE DESIGN M ETHOD FOR REAL TIME S YSTEMS .” COMM . ACM 27, 9 (SEPT. 1984), 938-949. [8] GOOMA, H. “SOFTWARE DEVELOPMENT OF REAL TIME S YSTEMS .” COMM . ACM 29, 7 (J ULY 1986), 657-668 35-35 [9] GOOMA, H. “USING THE DARTS SOFTWARE DESIGN M ETHOD FOR REAL TIME SYSTEMS .” PROC. 12 TH S TRUCTURED M ETHODS CONF. C HICAGO : STRUCTURED TECHNIQUES ASSOCIATION , AUG. 1987, 76-90 [10] INDORA AUTOMATISERING , PROJECTMANAGEMENTMETHODEN OP EEN RIJ , http://www.indora.nl/mambo/images/stories/Downloads/WPP3%20Projectmanag ementmethoden%20op%20een%20rij.PDF [11] LUC TIEMESSEN & TOM VAN G ESSEL, 2003, SOFTWARE E NGINEERING, AFSTUDEERSCRIPTIE [12] TOM GILB, 1976, SOFTWARE METRICS