Scrumscrumscrumscrumscrumscrum scrumscrumscrumscrumscrumscrum scrumscrumscrumscrumscrumscrum agileagileagileagileagileagileagileagil eagileagileagileagileagileagileagileagi leagileagileagileagileagileagileagileag ileagileagileagileagileagileagileagilea gileagileagileagileagileagileagileagile agileagileagileagileagileagileagileagils crumscrumsrcuscrumscrumscrumscr umscrumscrumscrumscrumscrumscr umsscrumscrumscrumscrumscrumsc rumscrumscrumscrumscrumscrumsc rumscrumscerusucscrumscrumscru mscrumscrumscrumscrumscrumscru mscrumscrumscrumscrumscrumscru mscrumscrumscrumscrumscrumscru
INHOUDSOPGAVE 1. Voorwoord
3
2. Inleiding
3
3. Wat is een software ontwikkelmethode?
4
4. Bekende Agile ontwikkelmethode
5
5. Scrum
6
6. De Sprint
7
7. Scrum team
8
8. De uitvoering
9
9. De dagelijkse meeting
10
10. Waarom Scrum werkt
11
11. Bronvermelding
12
Scrum ontwikkelmethode
Pagina 2
1. Voorwoord Dit rapport is bedoeld voor alle betrokken partijen. Het is samengesteld door het Discodevelopment team ten behoeve van de opdracht van Dev this!, en behandeld onze ontwikkelmethoden Scrum. Het dient om meer inzicht te geven in de methode die wij toepassen voor onze product WhereU@.
2. Inleiding De manier waarop het mogelijk is software te ontwikkeling is globaal in te delen in twee verschillende methoden: De waterval methode en Agile Development. De waterval methode is een meer traditionele methode om projecten in te draaien, die in het onderwijs veel wordt toegepast, waarin het complete product aan het begin van het project wordt vastgesteld. Agile Development is een methode die flexibiliteit en de mogelijkheid om aanpassingen te maken centraal zet.
Scrum ontwikkelmethode
Pagina 3
3. Wat is een software ontwikkelmethode? Een softwareontwikkelmethode is een structuur die je op legt 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. Enkele software ontwikkelmethodes zijn: RUP (Rational Unified Proces) Een via een tool aangeboden raamwerk voor het creeren van een projcectspecifieke aanpak, gebaseerd op onder meer iteratief en architetuurgeorienteerd ontwikkelen. Wordt gekenmerkt door de compleetheid en de sterke relatie met UML (use cases). SDM (Software Development Methodology) Een concrete invulling van de watervalaanpak die met name bekend is in Nederland. In een watervalaanpak volgen ontwikkelingsfasen van definitiestudie tot de implementatie elkaar sequentieelop. De aanpak wordt veelal bekritiseerd vanwege het formele karakter en het gebrek aan flexibiliteit. Agile ‘Agile’ vertaalt zich naar ‘lenig’ of ‘behendig’. Agile methodes zijn een reactie op processen die er in theorie goed uitzien maar in de praktijk vaak hun beloftes niet waarmaken. De uitgangspunten van Agile ontwikkeling zijn in 2001 in het Agile Manifest vastgelegd.
Scrum ontwikkelmethode
Pagina 4
4. Bekende Agile ontwikkelmethode XP Extreme Programming Zonder meer de bekendste `agile` methode. Bekend door de korte iteraties, focus op eenvoud face-t-face communicatie, een volledig participerende klant en door zaken als refactoring en pair programming. MSF Een relatief nieuwe, door Microsoft geintroduceerde aanpak voor softwareprojecten. Is ook gebaseerd op agile principes. Het framework biedt twee smaken: MSF4Agile en MSF4CMMI. Het grootste verschil is dat MSF4CMMI formeler is en daardoor geschikter voor grotere en langere durende projecten. DSDM (Dynamic Systems Development Method) Een aanpak die is gebaseerd op sterke gebruikersparticipatie, iteratief ontwikkelen, zelforganiserende teams en een informele aanpak. Wordt vaak geassocieerd met technieken als prototyping, timeboxing en het prioriteren met behulp van MoSCow. Scrum Een op rugby gebaseerde iteratieve aanpak die grote vrijheid geeft aan de (kleine) teams wat betreft de te gebruiken technieken. Aangezien we als groep hier voor gekozen hebben zullen we hier dieper op in gaan.
Scrum ontwikkelmethode
Pagina 5
5. Scrum Scrum is ontwikkelt om in korte zogeheten Sprints van tussen de 15 en 30 dagen (te kiezen door het team) een gebruiksklaar stuk software af te leveren. Prioriteiten en doelen worden tijdens een sprint planning meeting bepaald, en komen uit een ‘Product Backlog’ (een lijst met dingen die gedaan moeten worden voor het project). Zie het als een soort moscow model om te bepalen wat echt nodig is en wat je graag zou willen zien als team. Het team bepaald aan de hand van de Product Backlog wat er in de komende Sprint te behalen valt. Dit is belangrijk, omdat het einddoel niet meer gewijzigd dient te worden tot aan het einde van de Sprint. Scrum kan op verschillende manieren uitgevoerd worden, met whiteboards en speciale software als populairste manieren.
Scrum ontwikkelmethode
Pagina 6
6. De Sprint Doordat iedere iteratie van een scrum (de periode van de Sprint, bijvoorbeeld 3 weken) een op zichzelf staand project is, geeft dat een enorme flexibiliteit. Aan het einde van iedere iteratie kan bekeken worden hoe het ging (reflectie) en kunnen einddoelen bijgesteld worden. Wispelturige opdrachtgevers kunnen op deze manier in een later stadium van je project ontbrekende features aanvragen, zonder in tijdnood te komen als team. Daarnaast kan een product wellicht al heel snel op de markt gebracht worden, omdat het doel van een Sprint is om bruikbare stukken code (potentially shippable) af te leveren voor het product. Voor iedere Sprint wordt een Sprint Backlog opgesteld. Dit is simpelweg een lijst met gedetailleerd omschreven taken die gedaan dienen te worden tijdens die Sprint. Deze taken komen uit het Product Backlog, die op haar beurt op een iets globale manier de functies beschrijft van het gehele product. Vergelijk het met het Functioneel Ontwerp (simpelweg opsommen wat het moet kunnen) en het Technisch Ontwerp (zo gedetailleerd mogelijk omschrijven wat de functies van iets zijn en hoe ze te maken). Aan het einde van een Sprint is het de bedoeling dat het team de software met de nieuwe functies van deze iteratie demonstreren aan de opdrachtgever. Anders dan bij vele andere software ontwikkeling principes, kent in een scrum omgeving niemand een taak toe aan iemand, ook niet de facilitator. Ieder lid van het team bepaald zelf welke taken hij gaat uitvoeren. Het team is daarmee zelforganiserend. Dit is heel belangrijk! Jij als facilitator kunt niet bepalen wanneer een programmeur klaar zou moeten zijn met een bepaalde taak, of dat de designer best wel wat meer werk zou kunnen verrichten (tenzij hij uit z’n neus zit te vreten natuurlijk). Kortom: je motiveert het team en bewaakt het proces.
Scrum ontwikkelmethode
Pagina 7
7. Scrum team Wie zitten er in een Scrum Team? En wat doen die mensen? De belangrijkste rollen binnen een scrum proces zijn: • Scrum master: verantwoordelijk voor het faciliteren van het team (geen leidinggeven, want ze zijn zelfsturend) en het bewaken van het scrum proces. • Product Owner: verantwoordelijk voor het bepalen van de prioriteit van de gewenste functionaliteit. Dit is altijd één persoon richting het scrum team. Hij/zij is de vertegenwoordiger van de business. • Team: Verantwoordelijk voor het opleveren van een werkend product. Om dit op een effectieve manier te kunnen doen is het team zelfsturend en multidisciplinair. Kleine teams werken het best (5-9 man). Het team werkt iteratief (iteraties in scrum heten sprints). Binnen een sprint werkt het team de volledige ontwikkelcyclus af en leveren zijn een productie gereed product op. Dat betekent werkende software inclusief alle documentatie.
Scrum ontwikkelmethode
Pagina 8
8. De uitvoering Bij scrum draait alles om Sprints. 1. Product Backlog Een lijst met functieomschrijvingen van een product. 2. Sprint Planning Een planning wordt gemaakt voor een nieuwe sprint, en bepaald de inhoud van de Sprint Backlog. 3. Sprint Backlog Hierin staat tot in detail beschreven wat de functies zijn die aan het einde van de Sprint af moeten zijn. 4. Sprint Een periode van werk die ligt tussen de 15 en 30 dagen. 5. Scrum meeting Dagelijkse bijeenkomsten van het hele team om voortgang in kaart te brengen en obstakels duidelijk te maken. 6. Shippable code Het doel van iedere Sprint: bruikbare, geteste functies afleveren voor het product. 7. Retrospect Een reflectiesessie met iedereen uit het team om te bekijken wat goed en wat niet goed ging in de afgelopen Sprint. Na de reflectie begint de cyclus weer van voren door in een Sprint planning na te gaan welke onderdelen uit de Product Backlog deze keer zullen worden gerealiseerd tot bruikbare functies.
Scrum ontwikkelmethode
Pagina 9
9. De dagelijkse meeting Iedere dag komt het hele team bij elkaar om te bespreken hoe het gaat en waar we staan in ontwikkeling. Deze meetings worden geleid door de facilitator, beginnen op een vast tijdstip aan het begin van de dag, en duren niet langer dan 20 minuten. Tijdens de meeting beantwoord ieder lid van de groep drie vragen, en richt de antwoorden naar de groep, en niet naar de facilitator! 1. Wat heb ik sinds de laatste scrum meeting gedaan? 2. Wat ga ik tot aan de volgende scrum meeting doen? 3. Zijn er nog problemen waar ik tegenaan loop? Door dagelijkse meetings te houden met iedereen is snel duidelijk hoe ver de ontwikkelingen zijn. Als alles goed gaat zal dat snel genoeg blijken uit de gesprekken. Aan de andere kant, als er problemen optreden zullen ze niet onopgemerkt blijven en kan er door de facilitator snel op ingesprongen worden. Het is aan te bevelen discussies tussen één of twee teamleden, of die langer dan een paar minuten duren, buiten de meeting te plannen. Houd de meetings staand, mensen houden meestal niet van meer dan 15 minuten te staan. Zo houd je meetings kort en bondig.
Scrum ontwikkelmethode
Pagina 10
10. Waarom scrum werkt Scrum is een principe dat, na enige bestudering, makkelijk te implementeren is. De middelen om het te organiseren zijn in elke omgeving te vinden. Hoewel gespecialiseerde software voor scrum geschreven is, volstaat een whiteboard heel prima met wat post-it notes erop. Sterker nog, het wordt aangeraden een fysieke vorm te kiezen, sinds dit het groepsproces ten goede komt. Scrum zorgt ervoor dat stress op een laag niveau blijft. In traditionele omgevingen zie je vaak dat de spanningen en onduidelijkheden zich opstapelen naarmate men verder komt. Bij scrum worden die stressfactoren tot een minimum beperkt door o.a. de dagelijkse ontmoetingen en de snelle cyclus van een Sprint. Hierdoor weet het team constant hoe de ontwikkelingen gaan en kunnen problemen snel opgelost worden. Een veel gedachte fout bij het scrum principe is dat men denkt dat het succes ligt in de korte iteraties van Sprints. Het gaat bij scrum in essentie om de samenwerking tussen partijen. Als designers niet samenwerken met programmeurs om een klus te klaren, zal nooit het doel behaald worden. Een snelle opvolging van Sprints, de dagelijkse meetings en de reflecties zorgen er alleen maar voor dat die samenwerking zo optimaal mogelijk is. Scrum zorgt met deze constante ‘awareness’ ook voor verantwoordelijkheid. Als iemand heeft aangegeven een model af te hebben in 12 uur, en dat vervolgens niet heeft, kan een programmeur in de problemen komen omdat die het model in het spel wilde verwerken. Door dit soort problemen in de dagelijkse meeting te bespreken, komen obstakels snel aan het licht en door de persoon er direct op aan te spreken zorgt de groep er zelf voor de planning te handhaven.
Scrum ontwikkelmethode
Pagina 11
11. Bronvermelding SCRUM ‐ Wikipedia (English) (http://en.wikipedia.org/wiki/Scrum_(development) SCRUM – Wikipedia (http://nl.wikipedia.org/wiki/Scrum_(softwareontwikkelmethode) Agile Software Development (http://www.agile‐software‐development.com/)
Scrum ontwikkelmethode
Pagina 12