En af de største udfordringer i udvikling af software er den næsten umulige opgave at indsamle klare krav og derefter at få disse krav til at forblive uændrede i koden udvikling. I vandfaldsmetoden til soft .areudvikling—på trods af bestræbelser på at definere, dokumentere og godkende enhver mulig beredskab, før udviklingen begynder-er det leverede produkt sjældent, hvad kunden ønsker.
det smidige alternativ? Bruger historie skabelse.,
en af de største fordele ved at bruge en smidig tilgang til soft .areudvikling er, at kravene ikke er sat i sten, men i stedet forventes at ændre sig med konstant feedback fra interessenter og virksomheden. Agile metoder som Scrum og extreme programming (XP) erstatte traditionelle, lange krav dokumenter med en prioriteret product backlog består af præcise user stories, som komme tættere på, når historien er klar til at blive gennemført.,
selvom oprettelse af brugerhistorier er mere kunst end videnskab, giver denne tutorial dig de oplysninger, eksempler og trin, du har brug for for at oprette brugerhistorier af høj kvalitet.
historien om brugerhistorier
XP introducerede først begrebet brugerhistorier i 1998 og sammenlignede dem med at bruge sager. I objektorienteret Soft .are Engineering: A Use Case Driven Approach introducerede Ivar Jacobson use cases som en måde at dokumentere krav ved at definere interaktioner mellem en rolle (en person, der bruger systemet) og selve systemet for at nå et mål ved hjælp af Unified Modeling Language (UML).,
Denne tilgang var populær i objekt-orienteret udvikling og stadig bruges som en central proces i software-udvikling rammer, såsom Unified Process (UP), IBM Rational Unified Process (RUP), og Oracle Samlet Metode (OUM). Brug af brugssager, snarere end brugerhistorier, giver mulighed for iterativ og inkrementel udvikling og betragtes som en smidig tilgang til kravdefinition.,
Med introduktionen af de meget kortere brugerhistorier og populariteten af Scrp og Scrum blev en produkt backlog bestående af brugerhistorier den mere almindeligt kendte tilgang til agile kravdefinition. Mange udøvere mener stadig, at brugerhistorier er den eneste acceptable smidige tilgang. Alistair Cockburn, en af Agile manifestos underskrivere, foretrækker dog brugssager frem for brugerhistorier.
selvom der er masser af stærke meninger om betydningen af “agile”, er både brugssager og brugerhistorier kompatible med denne tilgang., Nogle siger, at brugerhistorier til sidst ligner brugssager, når teamet er enig i detaljerne i implementeringen. I de tidlige stadier er brugerhistorien simpelthen en kort sætning, men den er ikke færdig, før detaljerne og acceptkriterierne er defineret.
oprettelse af brugerhistorier
Der er forskellige meninger om definitionen af en brugerhistorie, og hvordan man bedst kan gå i gang med at oprette en., Nogle retningslinjer for en god brugerhistorie inkluderer følgende:
- det skal skrives af en person, der repræsenterer forretningsbrugere (normalt produktejeren)
- det skal oprindeligt indeholde korte beskrivelser af “hvem, hvad og hvorfor”, men ikke “hvordan”
- det skal producere en lodret skive arbejdskode
- det skal være lille nok til, at det kan kodes og testes i en iteration (normalt en ul>
forskellige skabeloner, teknikker og akronymer bruges til at hjælpe produktejere med at skrive brugerhistorier., Tre af de mest almindelige teknikker er rollefunktionen-grundskabelonen, de tre C ‘ er (kort, samtale, bekræftelse) og INVEST (uafhængig, omsætningspapirer, værdifuld, estimerbar, lille, testbar).
eksempler
siger, at du udvikler et program, der giver undervisere mulighed for at uploade kursusmateriale og tiltrække studerende, der er interesseret i at tage en klasse. Sådan anvender du brugerhistorieteknikker.,
Role-Feature-Reason
som Mike Cohn fra Mountain Goat-Soft .are forklarer, ser rollefunktionen-reason-skabelonen eller RGB (rolle, mål, fordel) sådan ud:
“som jeg vil have det .”
selvom der er variationer, holder denne korte sætningsstruktur fokus på hvem, hvad og hvorfor. Dette forhindrer produktejeren i at give udviklingsteamet for meget information om, hvordan de skal implementere en løsning. Ved at fokusere på hvem, hvad, og hvorfor, udviklingsteamet er bemyndiget til at finde den bedste tekniske løsning.,eksempel 1: Giv en træner mulighed for at tilføje et kursus
som træner vil jeg gerne kunne tilføje et nyt kursus, så jeg får potentialet til at tiltrække nye studerende.eksempel 2: Giv en studerende mulighed for at søge efter et kursus
som studerende vil jeg gerne kunne søge i kursustilbudene, så jeg kan finde et tilbud, der interesserer mig mest.
rollen (whoho)
rollen beskriver, hvem der vil drage fordel af denne funktion. Bemærk, at rollen ikke blot er ” brugeren.,”Der er forskellige typer brugere, og derfor ønsker vi, at rollen skal være mere specifik end “bruger”, men beskriver den type bruger, der vil drage fordel af historien. Produkt ejere er ofte til opgave at komme i sindet af deres brugere for at forstå, hvad der ville være mest værdifulde for dem.eksempel 1 rolle = træner
eksempel 2 rolle = studerende
funktionen (hvad)
dette trin beskriver meget kort, hvad brugeren ønsker. Dette repræsenterer mest det krav, du beskriver i traditionel soft .areudvikling., Du vil dog være forsigtig med ikke at være for specifik eller beskrive, hvordan du skriver koden. Det vil blive bestemt til sidst, men ikke når du først opretter brugerhistorien. Brugerhistorien skal skrives ud fra brugerens perspektiv, der vil drage fordel af funktionen, ikke ud fra udviklerens perspektiv, der vil kode den.eksempel 1 Feature = Tilføj et nyt kursus
eksempel 2 Feature = Søg i kursustilbud
grunden (hvorfor)
endelig vil vi angive, hvorfor brugeren ønsker denne funktion. Hvilken værdi får brugeren fra det?, Dette hjælper produktejeren med at evaluere, hvordan man prioriterer brugerhistorien på Backloggen. Hvis værdien eller fordelen ikke kan artikuleres, kan det være noget, der ikke er nødvendigt. Forståelse af værdien hjælper ofte udviklingsteamet med at finde innovative måder at implementere koden på for at løse målet—måder, der kan være forskellige fra, hvad produktejeren har i tankerne.,
Eksempel 1 Grund = tiltrække nye studerende
Eksempel 2 Reason = finde et tilbud, der mest interesserer mig
De Tre C ‘er: – Kortet, Samtale, Bekræftelse
De Tre C’ s formel, som er udviklet af Ron Jeffries, er med til at nå en aftale mellem virksomheden og det tekniske hold på betydningen af bruger historien. De tre C ‘ er guider dem gennem den progressive udarbejdelse af en historie, fra en kort erklæring til en fuldt udviklet brugerhistorie.,
kort
brugerhistorien starter med vilje kort, med en simpel erklæring, der kunne passe på et 3 .5 indekskort, typisk efter det rollefunktion-fordel-format, som jeg lige har dækket. For eksempel:
som træner vil jeg gerne kunne tilføje et nyt kursus, så jeg får potentialet til at tiltrække nye studerende.
samtale
selvom brugerhistorien starter som en simpel erklæring, skal detaljer dukke op, før teamet begynder at arbejde på historien., I stedet for at beskrive, hvad der er nødvendigt i dokumentationen, vil teamet omfatte 1) repræsentation fra virksomheden (normalt produktejeren) og 2) selve udviklingsholdet, herunder udviklere, testere, forretningsanalytikere eller nogen anden på teamet.
denne samtale giver udviklingsteamet mulighed for at stille spørgsmål for at sikre, at de har en klar forståelse af, hvad der bliver bedt om, og den værdi, der leveres. For eksempel:
Udvikler: vil træneren nødt til at uploade kursusmateriale på en hjemmeside?,
Product o .ner: Nej, træneren vil bare tilføje oplysninger om det kursus, der vil blive tilbudt, og funktionen skal indeholde en måde for den studerende at komme på en interesseliste. Denne historie giver træneren mulighed for at annoncere et kursus.
Udvikler: hvilke felter skal inkluderes?
Product o .ner: kursus titel, abstrakt, datoer og tidspunkter, placering.Udvikler: vil dette kun være til reklame ansigt til ansigt klasser?
produkt ejer: Ja., Vi tilføjer muligvis en virtuel klasseindstilling senere, men denne historie dækker kun tilføjelse af Kursusoplysninger til ansigt til ansigt klassetilbud.Udvikler: hvilke oplysninger skal indsamles, når en potentiel studerende beder om at komme på en interesseliste?product o ownerner: Navn, telefonnummer og e-mailadresse.
holdet vil opdatere brugerhistorien med de oplysninger, de har indsamlet fra samtalen, og de vil diskutere implementeringen—eller “hvordan”—som ofte skaber specifikke opgaver, der skal udføres for at fuldføre historien., Selvom brugerhistorien er skrevet ud fra brugerens perspektiv, skriver udviklingsholdet opgaverne for udviklerne og inkluderer de tekniske implementeringsdetaljer.
bekræftelse
udviklingsholdet skal have en klar forståelse af, hvordan funktionen vil fungere i forskellige situationer, herunder fejlbetingelser. De har brug for at få bekræftelse vedrørende acceptkriterierne fra produktejeren. Dette er de kriterier, der skal opfyldes for at historien kan betragtes som færdig og accepteret., Her er et eksempel på acceptkriterier:
- en træner kan tilføje et nyt kursus ved at indtaste kursustitel, abstrakt, datoer og tidspunkter og placering til en formular og trykke på en “tilføj kursus” – knap.
- hvis der mangler felter, eller datoer eller tidspunkter er ugyldige, vises fejlmeddelelser.
- når kurset er tilføjet korrekt, vises det offentligt på kursets websiteebsted, og der vil være en knap, som en studerende kan udtrykke interesse for.,
- interesseknappen giver en bruger mulighed for at indtaste navn, e-mail-adresse og telefonnummer, og disse data gemmes og tilknyttes det nye kursus.
INVEST: attributterne til en solid brugerhistorie
INVEST er et akronym, der hjælper med at evaluere, om du har en brugerhistorie af høj kvalitet. Sådan gælder attributterne i forkortelsen for den historie, vi har arbejdet med.
i = Independent—kan denne historie udfyldes af holdet? Vi ønsker, at holdet skal være i stand til at fuldføre hele historien i stedet for at være afhængig af et andet hold til at gøre GUI, for eksempel.,
N = omsættelige—historien er ikke så detaljeret, at beskrive præcis, hvor længe felterne skal være eller give detaljer om datoformater og lignende. Mest sandsynligt vil der være fælles rutiner eller biblioteker, der gør det muligt for udviklingsteamet at implementere på den måde, der giver mest mening for dem.
V = værdifuld—produktejeren beskriver, at den værdi, der søges, er trænerens evne til at annoncere kommende klasser. Dette er tydeligt i “hvorfor” af den oprindelige erklæring og understreget igen i samtalen.,
E = Estimable—holdet vil stille nok spørgsmål og samle detaljerne for at føle sig trygge i deres evne til at estimere historien.
s = Small—holdet skal føle sig sikker på, at de vil være i stand til at fuldføre historien inden for en sprint. Hvis de ikke gør det, kan de dele historien. For eksempel, i vores prøvehistorie, de kan beslutte at gøre muligheden for at indsamle elevinformationen til en anden historie og blot vise information om klassen til denne historie.
T = testbar—med klare acceptkriterier kan både den glade sti og fejlforholdene testes.,
tilpasning til en vision
Jeg har dækket det grundlæggende ved at oprette en brugerhistorie, men du skal stadig forstå det store billede, før du opretter dine egne brugerhistorier. Der er meget arbejde, du skal gøre foran, på et højere niveau, at bestemme, hvad de højeste værdi funktioner er, der skal leveres til kunderne. Disse nedbrydes i sidste ende til brugerhistorier.
det er vigtigt for teamet først at forstå visionen på højt niveau og for at sikre, at funktionerne og i sidste ende brugerhistorierne er i overensstemmelse med den vision på højt niveau.,
typisk bryder du produktet ned i grupperinger, der går under navne som “temaer” eller “funktioner.”Selvom mærkningen af disse backlog-elementer kan variere afhængigt af den smidige metode og værktøjer, du bruger til at beskrive dem, er ideen at sikre, at de justeres, så arbejdet kan spores op til din vision, hvilket vil sikre, at du opfylder målene og værdierne for produktvisionen.
igen skal du ikke starte et projekt ved at oprette brugerhistorier; start med at oprette en vision., For vores eksempel viser jeg blot en prøvesyn, som fører til nogle prøvefunktioner, som kan nedbrydes yderligere til brugerhistorier.
Vision
leverer et websiteebsted af høj kvalitet, der giver undervisere mulighed for at annoncere kurser og give studerende mulighed for at tage disse kurser.
funktioner
- Giv en kursusudbudsside, der giver studerende mulighed for at tilmelde sig kurser.
- Angiv en hjemmeside, der fortæller brugerne, hvad vores siteebsted handler om.
- Angiv en registreringsproces, der giver brugerne mulighed for at logge ind, oprette en profil og holde styr på deres klasser.,
- Giv en blog, der hjælper med at annoncere vores tilbud og få reklame for vores hjemmeside.
brugerhistorier
- Giv træner mulighed for at tilføje et kursus på kursusudbudssiden.
- give de studerende mulighed for at søge efter et kursus.
i eksemplet ovenfor kan du se, hvordan brugerhistorierne stammer fra. Brugerhistorierne var en del af en funktion til at “give en kursusudbudsside”, der tilpasser sig visionen på højt niveau.,
Impact mapping
selvom tilpasning til en vision vil hjælpe dig med at udfylde din oprindelige efterslæb, er det ikke den eneste måde at gøre det på. Der er mange værktøjer og teknikker, som produktledere kan bruge til at skabe de historier, der går i en ny backlog, og som stemmer overens med visionen.en strategisk planlægningsteknik, der blev brugt til at hjælpe med at forstå det store billede, impact mapping, blev populariseret af Gojko ad .ic, forfatter af Fifty Quickuick Ideas til at forbedre dine brugerhistorier og Impact Mapping: gør en stor indflydelse med soft .areprodukter og projekter., Impact mapping er et mindmap, der starter med målet, som skal behandle spørgsmålet om værdi og hvorfor du bygger produktet.
det næste niveau viser “skuespillerne” eller folk, der vil hjælpe med at nå målet. Dernæst viser kortet de adfærd eller “virkninger”, som skuespillerne vil udføre for at hjælpe med at nå dette mål. Det endelige niveau på kortet præsenterer de” leverancer”, som holdet kan implementere. Disse sætter aktørerne i stand til og støtter dem i at skabe de ønskede effekter. Det er fra disse leverancer, at du henter soft .arefunktionerne og historierne.,
- mål: lav bredt tilgængelige kurser, som studerende vil tage
- skuespillere: undervisere, studerende
- konsekvenser: undervisere leverer klasser af høj kvalitet, der er af interesse for studerende; studerende vil give henvisninger og anbefalinger
- leverancer: klasser af høj kvalitet, der er tilgængelige for studerende
- potentielle historier:
- “som træner vil jeg annoncere klasser, så jeg kan få studerende.
- “som træner ønsker jeg at få feedback fra eleverne, så jeg løbende kan forbedre mig.,”
- “som træner vil jeg finde ud af, hvad eleverne vil have, så jeg kan tilføje til min læseplan.”
- “som studerende vil jeg finde klasser, der interesserer mig mest.”
- “som studerende vil jeg finde klasser, som jeg kan tage online, så jeg ikke behøver at rejse.”
- “som studerende vil jeg læse anmeldelser fra andre, så jeg kan bestemme hvilke klasser der passer bedst til mig.”
kortlægning af brugerhistorier på denne måde tillader sporbarhed i tankeprocessen af, hvordan historierne i sidste ende skaber værdi, og hvordan du bruger dem til at nå slutmålet., Ideen er ikke at gennemføre alt, men at finde den korteste vej gennem kortet for at nå dit mål.
opdeling af historier
et af de mest almindelige problemer, som agile teams støder på, er, når historier er for store og ikke kan afsluttes i en iteration. Når holdet opretter de opgaver, der er forbundet med historien, indser de, at der er for mange ukendte, eller at de involverede opgaver vil tage mere tid, end holdet har til rådighed i en enkelt iteration. Hold adresserer undertiden dette ved at opdele en større historie i mindre historier.,
Husk dog, at du vil have en brugerhistorie til at levere arbejdssoft .are, der tilføjer værdi for brugeren. I stedet for at oprette en brugerhistorie, der kun delvis fuldfører en funktion, skal du dele historier i “lodrette skiver”, der leverer ende-til-ende-funktionalitet.
gå til samfundet for dybere læring
Detaljerede løsninger på, hvordan man løser de hårdeste problemer i forbindelse med krav og brugerhistorier, er unikke for hver situation. Men et fælles træk ved succesfulde agile praktikere er, at de er ivrige efter at hjælpe andre og dele, hvad de ved.,Cohn ‘ s userStories-websiteebsted giver dem, der arbejder med produktefterslæb og brugerhistorier, mulighed for at dele produkter, ressourcer og viden. Produktsiden indeholder en imponerende liste over værktøjer, mange tilgængelige gratis, med muligheder for brugeranmeldelser og input. Cohn bemærker på siteebstedet, at han håber at udvide siteebstedet, så produktefterslæbet kan deles.
der kommer aldrig til at være et one-si .e-fits-all svar på, hvordan man skriver perfekte brugerhistorier., Men over tid, med en sund blanding af erfaring, råd fra eksperterne og eksperimentering med foreslåede værktøjer og teknikker, kan du løbende forbedre.