Användarcentrerad systemdesign Föreläsning 9: Agile-metoder, XP och ACSD Stefan Blomkvist MDI / IT, Uppsala Universitet, stefan.blomkvist@it.uu.se XP www.it.uu.se/edu/course /homepage/acsd/s04 Dagens föreläsning Agile, XP & ACSD Agile översikt Problem som agile försöker lösa. Vad innebär det? XP en agile-process i detalj ACSD och Agile. Är Agile och XP användarcentrerade? Info om projektuppgiften 1
Vad går fel i systemutvecklingsprojekt? Dålig användbarhet CHAOS 83% av projekten misslyckas Levereras aldrig eller försent Dyrare än beräknat Låg kvalitet Saknar funktioner eller har onödiga funktioner Vad beror det på? Förändring. Allting förändras Verksamhet Önskemål / Krav Teknik Kostnaden för ändringar 2
Andra problem i systemutveckling Mjukvara är komplex och ogripbar (intangible) Trög process och brist på återkoppling För mycket fokus på processen 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 3
Vad är Agila processer? Ramverk med värden och principer för SU FDD som delas av olika metoder Crystal (Cockburn) Adaptive Software Development (Highsmith) Scrum extreme Programming DSDM (Stapledon) (Beck) 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, agilemanifesto.org 4
Communication Effectiveness Kommunikation är effektivast interaktivt, ansikte-till-ansikte Paper 2 people on email Videotape 2 people at whiteboard 2 people on phone Richness of communication channel 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. 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. 5
XP Vad ingår i en process? 6
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. 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 7
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 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. 8
Fyra Värden Gemensam värdegrund med andra Agile-metoder. 1. Kommunikation 2. Enkelhet 3. Återkoppling 4. Mod 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 9
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. Användarberättelser (user stories) Något som kunden vill att systemet ska göra. Berättelser ska vara testbara (Beck 2000). 10
Användarberättelser - exempel Brygg kaffe När man startar bryggning, koka vattnet tills klart Håll kaffet varmt #1 #2 När kannan innehåller kaffe, sätt på värme. När kannan är tom, stäng av värmen. När kannan tas bort, stäng av värmen Avbryt bryggning om kannan #3 tas bort, stoppa vattnet, stäng av värmen. Om kannan sätts tillbaka, fortsätt bryggning Planeringsspelet (the planning game) Story card 11
Beräkna arbetsinsast & prioritera användarberättelser Övning: användarberättelser Tvättmaskin Användare: Skriv några user stories för de viktigaste funktionerna Programmerare: Uppskatta tid (ideal programmeringstid) Användare: Prioritera Båda: Åtagande, vilket system får man efter varje 2-veckors iteration Fundera över Hur kan berättelserna användas? Kan de användas? Vad säger de om användarns behov Skillnader jämfört med use cases & krav 12
Iteration Kontinuerlig integration och nästa iteration 13
Är Agile / XP en användarcentrerad process? 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) Var är användaren? 14
Är Agile användarcentrerat? Nej? Nackdelar: 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 Är Agile användarcentrerat? Ja, kanske? Fördelar: 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 15
Läs mer om ACSD Agile William Hudson: Adopting UCD within an agile process www.syntagm.co.uk/design/articles/ucdxp03.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. 16