Användarcentrerad systemdesign. Föreläsning 12 Agile-metoder, XP och ACSD Stefan Blomkvist MDI / IT, stefan.blomkvist@it.uu.se & Profdoc AB www.profdoc.se www.it.uu.se/edu/course /homepage/acsd/s04 XP Dagens föreläsning Agile, XP & ACSD Agile översikt Vad är agile software development Problem som agile försöker lösa extrem Programming XP en agile-process i detalj ACSD och Agile. Är Agile och XP användarcentrerade? Informationsteknologi 2004-12-09 #2 CHAOS-rapporten. Lyckade/misslyckade ITprojekt 1994 1996 1998 2000 16 27 26 28 31 28 23 40 0% 20% 40% 60% 80% 100% Lyckade Nedlagda Delvis misslyckade 53 46 49 33 Vad går fel i systemutvecklingsprojekt? Dålig användbarhet Annat: Levereras aldrig eller för sent Dyrare än beräknat Låg kvalitet Saknar funktioner eller har onödiga funktioner Vad beror det på? Informationsteknologi 2004-12-09 #3 Informationsteknologi 2004-12-09 #4 2004 Stefan Blomkvist, Inst. för Informationsteknologi / MDI 1
Förändring. Allting förändras Verksamhet Önskemål / Krav Teknik Kostnaden för ändringar Andra problem i systemutveckling Mjukvara är komplex och ogripbar (intangible) Trög process och brist på återkoppling För mycket fokus på processen För stora system/projekt försöker göra allt på en gång. Funktionsrika system för många / fel funktioner utan prioritet. Informationsteknologi 2004-12-09 #5 Informationsteknologi 2004-12-09 #6 Hur möter man problemen Olika angreppssätt genom tiderna Mode i metoder och processsor Trots detta misslyckas de flesta IT-projekt 1994 16 31 53 Koda & fixa Ingenjörsmässiga & formella metoder Vattenfall, strukturerad programmering OO, RUP Informationsteknologi 2004-12-09 #7 1996 1998 2000 27 26 28 28 23 40 0% 20% 40% 60% 80% 100% 46 49 33 Lyckade Nedlagda Delvis misslyckade Informationsteknologi 2004-12-09 #8 2004 Stefan Blomkvist, Inst. för Informationsteknologi / MDI 2
Hur möter man problemen Olika angreppssätt genom tiderna Mode i metoder och processsor Koda & fixa Ingenjörsmässiga & formella metoder Vattenfall, strukturerad programmering OO, RUP Agila metoder! Vad är Agila processer? Ramverk med värden och principer för SU som delas av olika metoder FDD AgileModeling (Ambler) Adaptive Software Development (Highsmith) Crystal (Cockburn) Scrum extreme Programming DSDM (Stapledon) (Beck) Informationsteknologi 2004-12-09 #9 Informationsteknologi 2004-12-09 #10 Agile nyckelprinciper Fungerande system före fullständig dokumentation Kundsamarbete före kontraktsförhandlingar Reagera på förändringar före att följa planer Individer och kommunikation före processer och verktyg The Agile Manifesto, 2000, www.agilemanifesto.org Kommunikation är effektivast interaktivt, ansikte-till-ansikte Communication Effectiveness Paper 2 people on email Videotape Richness of communication channel 2 people at whiteboard 2 people on phone Informationsteknologi 2004-12-09 #11 Informationsteknologi 2004-12-09 #12 2004 Stefan Blomkvist, Inst. för Informationsteknologi / MDI 3
Andra definitioner av Agile (Lindvall 2002) Iterative delivers a full system at the very beginning and then changes the functionality of each subsystem with each new release. XP Incremental the system as specified in the requirements is partitioned into small subsystems by functionality. New functionality is added with each new release. Self-organizing the team has the autonomy to organize itself to best complete the work items. Emergent technology and requirements are allowed to emerge through the product development cycle. Informationsteknologi 2004-12-09 #13 Informationsteknologi 2004-12-09 #14 Vad ingår i en process? Vad är extremeprogrammering? Rå hacking utan metod. Mer eller mindre kaotiskt. Strukturerad hacking med fokus på programmering och att leverera buggfria program. En avsiktlig och disciplinerad process för att utveckla fungerande system efter kundens önskemål. Informationsteknologi 2004-12-09 #15 Informationsteknologi 2004-12-09 #16 2004 Stefan Blomkvist, Inst. för Informationsteknologi / MDI 4
XP bakgrund Bygger på praxis och väletablerade metoder. Kent Beck (2000) Senaste trenden i software engineering Användbarhet och ACSD är ett frågetecken Mål med XP-processen Utveckla system som kunden vill ha, fungerar tekniskt och levereras när det behövs. Kan ändras efter nya och ändrade kundkrav även sent i projektet Dvs vi reducerar riskerna med en process som är Enkel & lätt, Snabbrörlig & anpassningsbar och rolig för projektgruppen Informationsteknologi 2004-12-09 #17 Informationsteknologi 2004-12-09 #18 Vad är extremt? Välkända arbetssätt praktiseras till det extrema Test är bra testa hela tiden, testa före kodning. Låt användarna testa (enhetstest, testa-först, funktionell test) Kodgranskning är bra granska kod hela tiden (parprogrammering) Iterativ utveckling är bra arbeta i korta iterationer Enkelhet är bra enklast möjliga lösningar, enkla artefakter, enkla metoder Prata med användare är bra låt användare och utvecklare dela rum. Grundläggande aktiviteter i processen Kodning Kod är den enda nödvändiga artefakten. Testning Det som inte kan bevisas fungera i tester fungerar inte heller. Lyssna programmerare vet inget om verksamheten. Design (teknisk) arkitektur och kod växer fram, och genom Refaktorering intern omstrukturering av kod utan att yttre beteende förändras Informationsteknologi 2004-12-09 #19 Informationsteknologi 2004-12-09 #20 2004 Stefan Blomkvist, Inst. för Informationsteknologi / MDI 5
XP-processen i praktiken Ett system utvecklas iterativt inkrementellt, dvs fungerande system levereras stegvis med mer och mer funktionalitet. Varje sådan fas i utvecklingen kallas en leveranscykel (release cycle) och pågår 3-4 månader. Utgår från användarberättelser (user stories) Användarberättelser (user stories) Kommunikationssätt utvecklare användare Något som kunden vill att systemet ska göra. Berättelser ska vara testbara (Beck 2000). Informationsteknologi 2004-12-09 #21 Informationsteknologi 2004-12-09 #22 User stories. Exempel godisautomat #1 Acceptera all sorts betalning Prioritera och splitta user stories #1.1 Acceptera mynt Färskt godis #2 #1.2 Ska bara sälja färskt godis Acceptera sedlar Kommunikation #3 Kommunicera med kunden för att undvika fel Acceptera kort #1.3 Lagerhantering Ska automatiskt begära ny leverans innan varan tar slut #4 Acceptera betalning med mobiltelefon #1.4 Informationsteknologi 2004-12-09 #23 Informationsteknologi 2004-12-09 #24 2004 Stefan Blomkvist, Inst. för Informationsteknologi / MDI 6
Planeringsspelet (the planning game) Beräkna arbetsinsats & prioritera användarberättelser Story card Informationsteknologi 2004-12-09 #25 Informationsteknologi 2004-12-09 #26 Kontinuerlig integration och nästa iteration Informationsteknologi 2004-12-09 #27 Informationsteknologi 2004-12-09 #28 2004 Stefan Blomkvist, Inst. för Informationsteknologi / MDI 7
Är Agile / XP en användarcentrerad process? Var är användaren? For me, UCD is an iterative process whose goal is the development of usable systems, achieved through involvement of potential users of a system in system design. Karat, J. (1996) Informationsteknologi 2004-12-09 #29 Informationsteknologi 2004-12-09 #30 Är Agile användarcentrerat? Nej? Nackdelar: Är Agile användarcentrerat? Ja, kanske? Fördelar: Fokus på kodning, teknik och att leverera program, men saknar tydligt fokus på användbarhet och ACSD. Involverar kunder, inte nödvändigtvis representativa användare Svårt för användarna att formulera krav Användarna i en gisslansituation Små inkrement - ingen helhetssyn på design av interaktionen Krav i användarberättelser, skrivs och testas av användare Direkt kommunikation med användare Prototyper & enkla designrepresentationer Iterativt & inkrementell utveckling Kontinuerlig test & utvärdering av riktiga system av utvecklare och riktiga användare Förändring är möjligt & naturligt Anpassningsbar process Fokus på människor, inte processer Informationsteknologi 2004-12-09 #31 Informationsteknologi 2004-12-09 #32 2004 Stefan Blomkvist, Inst. för Informationsteknologi / MDI 8
Integrera Agile och ACSD Fokus på användbara och tekniskt fungerande systems som levereras i tid (system som inte är i drift, är inte användbara system) Fokus på människor inte processen Involvera de verkliga användarna Involvera kunniga användbarhetsdesigners Arbete i par förbättrar kommunikationen Prioritera funktionaliteten. Integrera Agile och ACSD Iterativ + Inkrementell utveckling i kombination med tidig och koordinerad användbarhetsdesign Använda enkla modeller t.ex. scenarier och pappersprototyper. Utvärdera användbarheten i olika steg: från prototyper till levererade inkrement. Informationsteknologi 2004-12-09 #33 Informationsteknologi 2004-12-09 #34 Lästips Agile och XP Lästips ACSD Agile Manifesto for Agile Software Development. www.agilealliance.org Cockburn, A. (2002) Agile Software Development. Beck, K. (2000). Extreme Programming Explained: Embrace Change. Ambler, S. (2002) Agile Modeling. Effective Practices for Extreme Programming and the Unified Process. William Hudson: Adopting UCD within an agile process www.syntagm.co.uk/design/articles/ ucd-xp03.pdf Larry Constantine: Process Agility and Software Usability www.foruse.com/articles/agiledesign.pdf Armitage: Are Agile Methods Good for Design? se kursens länksida. Informationsteknologi 2004-12-09 #35 Informationsteknologi 2004-12-09 #36 2004 Stefan Blomkvist, Inst. för Informationsteknologi / MDI 9