Janus Vittrup
Dr Desmond
Anders Thiim Larsen
Thomas Bülow
Anne Sophie Gertz
Anita Johansen
Iben Hvorslev
Asger Liebst
Lars H. Knudsen
Signe Bisbjerg
Henrik Flygare
Søren Stochholm
Rasmus Bøgh Hansen
Anders Buus Andersen
Morten Juul Velander
Kristoffer Føns
Susan Lund
Camilla Jacobsen
Sven Gerner Nielsen
Eva Springer
Mogens Thomsen
Jens Christian Gammelby Jensen
Marta Sørensen
Anja Dybmose Nielsen
Mikkel Lotzfeldt
Emil Blücher
Henrik Overballe
Henrik Overballe
Projektleder og online kommunikationsrådgiver
Cand.it
Karma: 50 (?)
Oprettet på K Forum: tirsdag 29. september 2009
fredag d. 18. december 2009
Du har mulighed for at skrive en kommentar til din anbefaling, dette er valgfrit.
Gem Annuller

Gem som link

Anbefalinger (1)

Kasper Bergholt

Er kravspecifikationen virkelig død?

Nej! Gu’ er den ej! Jeg er ved at være træt af at læse blogindlæg på blogindlæg om agile metoder, der konkluderer at kravspecifikationen er fortiden til. Intet kan være mere forkert!

Dette lyder nok som et rimeligt surt fredagsopstød ovenpå en nat, hvor min datter har holdt sine forældre løbende orienteret omkring nattens eskapader fra sin seng i det tilstødende børneværelse, når de helst gerne bare vil sove. En hård juleperiode er i vente, ikke blot på grund af det årlige panikgaveræs, snestorm og familietamtam hos tante tut, men også fordi at der både er store projekter skal afleveres og store projekter er ved at blive opstartet. Når jeg så læser, at kravspecifikationen er død og borte, til fordel for agile metoder, ja, så har jeg svært ved at holde igen.

Jeg vil gerne forklare mit synspunkt herunder. Det hører sjældenhederne til, at kunden ikke gerne vil kende en smule til økonomien i et projekt inden opstart. Ja, faktisk, har jeg ikke mødt en kunde endnu, der ikke har spurgt “hva’ koster’d?” Jeg tror ikke, at dette er unikt for vores branche, men må være et rimelig generisk og fair krav. Personligt ville jeg nok heller ikke bede en leverandør om bare at gå i gang, og tales ved efter to måneder, når fakturaen kommer dumpende. Kravspecifikationen er yderst vigtig i dette scenario, og her kommer f.eks. SCRUMS product backlog efter min overbevisning desværre til korte.

Jeg havde en snak med en kunde omkring funktionalitet til den kommende hjemmeside. Han havde ikke rigtigt noget fast budget og han havde nogle klare overordnede forventninger til hvad hjemmesiden skal kunne kunne. Et krav gik på at han gerne ville sende et nyhedsbrev til sine kunder pr. e-mail. Et meget basalt krav, som mange hjemmesider understøtter. Men skal nyhedsbrevet også kunne sendes pr. SMS? Skal han kunne vedhæftet en fil? Skal han kunne opdele modtagerne i segmenter, så han kan sende forkellige nyhedsbreve al efter hvilke karakteristika modtageren har? Skal nyhedsbrevet sendes som PLAIN TEXT eller skal det være HTML, så det kan have et visuelt udtryk? Svarene var nej, ja, ja og ja. Denne løsning giver én økonomi, men havde svarene været ja, nej, ja, nej, så havde økonomien været en anden. Desuden giver kravspecifikationen en forventning om hvad nyhedsbrevet kan, _inden_ udviklerne går i gang. Kundens røde lamper vil straks lyse, hvis han havde en klar forventning om, at han skulle kunne vedhæfte et PDF dokument til sit nyhedsbrev, og ikke kan det efter implementeringen. Derfor kan kunden forholde sig til den økonomi han har fået første gang, og skal ikke vente på ubehageligheder, når vi først efterfølgende finder ud af, at han også har et behov for at vedhæfte PDF dokumenter. Samtidigt er der en klar forventning, leverandør og kunde imellem, om hvad kunden får for den estimerede økonomi.

For at jeg kan estimere en økonomi, skal jeg kende alle projektets omstændigheder – ergo skal ubekendte og risici minimeres, for ellers kan jeg komme til at under- eller overestimere og projektet går ikke op. Underestimerer jeg bærer jeg en risiko, hvilket betyder at jeg må gå på kompromis med kvalitet for at holde mig indenfor økonomien. Overestimerer jeg betaler kunden for meget i forhold til hvad han får af værdi. Samtidigt kan jeg skitsere en forkert løsningsmodel, der ikke tilfredsstiler kundens reelle behov. Og det er er værre, end at projektet ikke går op. Dette afhjælpes ved at skrive en fyldestgørende kravspecifikation, hvor hvert eneste krav til hjemmesiden er specificeret entydigt og konkret. Jeg er tilhænger af planlægning og mener ikke at udviklingsmodeller, som QADAD (Quick-and-Dirty-Application-Development) eller CAF (Code-and-Fix) afføder stabile eller særligt kvalitetsorienterede løsninger – giver det ikke lidt sig selv? Desværre kan SCRUM hurtigt blive QADAD eller CAF, da analysefasen begrænser sig til en product backlog, der udetaljeret skitserer løsningens overordnende design. Misforstå mig ikke, dette har også sine helt klare fordele i visse situationer, som jeg nok skal komme ind på i et fremtidigt blogindlæg. Men man har tendens til at kaste sig over tastaturet og kode derudaf. Det kan også være fint nok i nogle situationer, men hvis ikke kunden føler sig særlig hjemme i SCRUM eller har erfaring med systemudvikling generelt, så er det traditionelle paradigme og kravspecifikation at foretrække.

Kravspecifikationen giver altså en mere detaljeret estimering af projektets samlede omkostninger (Total Cost of Acquisition). Den giver også en forventning om hvad projektet ender ud med. Og dette gør at kunden nemmere kan vurdere projektet i forhold til dets Business Case. Giver projektet derfor overhovedet mening at gennemføre? Ved de agile metoder ved man først dette, når man står på den anden side, da man først kender projektets leverancer, når det er gennemført. Det er ikke særligt forretningsorienteret, vel? Agilitet er godt i projekter, hvor vi ikke har klare forventninger til funktionalitet og ikke kender vores behov. Det er lige nøjagtigt her, at de agile metoder kommer til sin rette.

Når ressourcerne bruges til at skrive en kravspecifikation, så sikrer dette også en mere lean proces. Flaskehalse elimineres, da afklaringer holdes på et minimum. Jeg lærte i skolen, at kravspecifikationen bør sikre at alle afklaringer omkring funktionalitet er gjort på forhånd, således at udviklerne har en madopskrift de kan følge – punkt for punkt. Dette holder nok i teorien, men i praksis er det ikke muligt. Kravspecifikationen vil altid have mangler – jeg tror ikke på, at du kan få alt med. Onde tunger vil her sige, at SCRUM netop sikrer, at kunden har mulighed for at tage stilling til krav løbende. Ja, ja, men det kan man jo også ved at udvikle traditionelt! Ved kravspecifikationen er der blot markant færre ting der skal afklares med kunden løbende, hvilket gør selve konstruktionsfasen væsentligt kortere og mere strømlinet.

Desuden sikrer kravspecifikationen et testgrundlag, da man binært kan angive “1” ved krav der er opfyldt, og “0” ved krav, der ikke er opfyldt. Ergo kan kvaliteten i højere grad sikres. Langt størstedelen af de webprojekter der igangsættes i Danmark er af så kort varighed (hvilket er under 6 måneder), at kundens situation eller krav næppe når at ændre sig betydeligt. Ofte opdeles projekterne alligevel i iterationer med selvstændige kravspecifikationer.

Så hvad kan vi lære af dette? Kravspecifikationen er ikke død! Kravspecifikationen lever i bedste velgående og aflives næppe af de agile metoder. Kravspecifikationen er et vigtigt element i ethvert forretningsorienteret webprojekt. Den synliggør økonomi, projektleverancer og skaber fælles forventninger mellem kunde og leverandør. Kravspecifikationen er til nytte både for kunden, projektlederen og udvikleren.

Originalt indlæg:

http://henrikoverballe.blogspot.com/2009/12/er-kravspecifikationen-virkelig-dd.html

Folk, der anbefaler 'Er kravspecifikationen virkelig død?'

Du har mulighed for at skrive en kommentar til din anbefaling, dette er valgfrit.
Gem Annuller

Kommentarer (10)

God tone i debatten

Hjælp os med at sikre en sober debat. Hold dig til saglige argumenter og understøt formålet med Kforum, som er at dele viden og erfaringer om kommunikation.

Læs Kforums takt og tone for god debatkultur her

Af: Jeppe / lørdag 19. december 2009

Det lyder som om at du mener, at både kunde og udviklerteamet, tager hovedet under armen og bare koder derud af med SCRUM? Med SCRUM har man også en specifikation som med et klassisk IT-projekt, man er bare mere åben overfor forandringer.

SCRUM minimerer risikoen for, at stå med et projekt der overholder specifikationen, men ikke er anvendeligt for kunden (vi har jo alle lov til at blive klogere undervejs!). At kunden har mulighed at godkende undervejs - og man kan forventningsafstemme, er typisk til alles fordel vil jeg mene...
Henrik Overballe

Af: Henrik Overballe / søndag 20. december 2009

I nogle tilfælde ja, så koder man bare derud af. Det gør man også i et traditionelt forløb, hvilket heller ikke er hensigtsmæssigt. Man bør selvfølgelig til enhver tid kunne forholde sig til ændringer i kundens situation, der gør at man skal revurdere krav - hvad enten det er SCRUM eller Pure Waterfall. Kravspecifikationen i SCRUM (Product Backlog) er dog en kravspecifikation på et højt abstraktionsniveau, hvilket besværliggør estimering af hele projektet og gør det svært at afstemme forventninger til krav indledningsvis. Netop her er Pure Waterfall meget stærk. Min anke for SCRUM er netop at estimering og forventningsafstemning er meget svært, da kunden ikke på forhånd ved hvad han ender ud med. Derfor kræver SCRUM enten at kunden er villig til ikke at kende projektets eksakte samlede økonomi eller at han ikke kender de eksakte krav til systemet på forhånd. Min erfaring siger mig dog, at dette kan være meget svært at få kunden til at forstå.

Jeg er enig i at SCRUM minimere risikoen for at projektet ikke lever op til kundens reelle behov ved løbende at forholde sig til projektet. Ved traditionel systemudvikling forholder man sig til ændringer ved at opdele projekterne i iterationer - ellers er der jo heller ingen ting der forhindrer projektlederen i samråd med styregruppen/kunden at ændre krav. Det giver blot en fordyrelse, da funktionalitet skal skrives om. Men det kommer man vel heller ikke udenom i SCRUM?

Af: Jeppe / mandag 21. december 2009

Med SCRUM arbejder man i Sprints, så her ligger løbende evaluering som en naturlig del af forløbet. Min anke er lidt, at du ser specifikation og kontrakt som direkte sammenhængene, hvilket ligger et meget økonomisk perspektiv på SCRUM, som jeg i højere grad opfatter som en metode til at kontrollere et team af udviklere effektivt – og undgå fejlleveringer. Vi laver ofte projekter der er solgt til fast pris (fra specifikation), men som er styret via SCRUM. Princippet er her: Tilføjer man noget, fjerner man noget andet, så længe man bliver indenfor budgettet (og kunden godkender det).

Jeg mener ikke at dit Nyhedsbrev eksempel stiller SCRUM i et retfærdigt lys, da den slags mere eller mindre out-of-a-box funktionalitet ikke giver en god forståelse af, hvad det vil sige at have mange udviklere der skal samarbejde om kompleks funktionalitet. I sidstnævnte situation er det langt mere risiko betonet at benytte en vandfaldsmodel vil jeg mene.

Jeg mener at SCRUM i højere grad sikrer at udviklerne forstår hvilken kontekst de arbejder i, ved hvad hinanden laver - og giver dem mulighed for at forholde sig kritisk undervejs. Den klassiske vandfaldsmodel har i min optik lidt karakter af, at det er projektlederen der datail specificerer på et ofte løst grundlag (som man jo kun har i starten af et projekt) baseret på hvad kunden tror der er behovet på de indledende møder. Men som sagt, med dit nyhedsbrev eksempel holder din argumentation fint nok, jeg mener bare ikke det er en korrekt fremstilling af anvendeligheden af SCRUM...
Henrik Overballe

Af: Henrik Overballe / onsdag 30. december 2009

Ja, jeg ser i høj grad kravspecifikationen og kontrakten, som værende direkte sammenhængende. Det er dette du får, for denne økonomi. Det er en gensidig forpligtelse om at levere et stykke software, hvor kravspecifikationen angiver projektleverancernes scope. Jeg er af den opfattelse, at det traditionelle paradigme fint holder i langt størstedelen af de webudviklingsprojekter, som bureauerne og it-husene gennemfører for danske private og offentlige kunder. Kompleksiteten er simpelthen ikke høj nok. Jeg arbejder selv med SCRUM, men har erfaret, at metoden langt fra holder i alle tilfælde. Derimod har jeg lært, at veksling er vigtigt og at valg af systemudviklingsmetode må tilpasses det enkelte projekt.

Men ved først at kravspecificere og dernæst lave om, som du siger at du gør i SCRUM, så er man jo alligevel tvunget til at starte traditionelt? Jeg kan i hvert fald ikke detaljeestimere ved en product backlog, der blot dikterer krav på et højt abstraktionsniveau. Når jeg arbejder med SCRUM, så aftaler jeg et rammebudget med kunden, hvor vi i samråd med styregruppen/kunden løbende allokerer økonomi til de enkelte krav, der er distribueret til de enkelte Sprint Backlogs. Men jeg har stadigvæk et problem indledningsvis, når jeg skal estimere økonomi.

Eksemplet med nyhedsbrevet holder egentligt meget fint mener jeg. Det er netop udbudet af out-of-the-box produkter, der gør det svært at vide om de dækker behovene. Hvordan vil du anbefale kunden det ene produkt frem for det andet, hvis ikke du kender kravene? Vil du anbefale det produkt, som du plejer og så forklare kunden, at det er dette produkt, der danner ramme om kravene? Jeg synes at det er hovedløst og fordrer på ingen måde den løsning, der dækker kundens behov. Out-of-the-box produkter indeholder typisk også funktionalitet, som i bund og grund er overflødig for kunden. Men denne diskussion må høre til en en anden blog.

Jeg vil meget gerne have at udviklerne i mit team forholder sit kritisk til kravene, og det ser jeg heller ikke noget problem ved, når man udvikler traditionelt. Udarbejdelse af kravspecifikationen er netop en dialog mellem kunde, projektleder og rådgivere (hvor udviklerne indgår i sidstnævnte gruppe, og primært rådgiver omkring tekniske issues). Udviklerne får jo netop større indflydelse ved at man tager dem med, når krav skal identificeres og løsningen specificeres. Det er fint, at de løbende kan forholde sig kritisk, men ærligt talt, så tror jeg næppe, at udviklerne kender kundens situation (hvad enten man udvikler traditionelt eller i SCRUM) godt nok til at kunne stille sig kritisk overfor krav, hvorfor de er der, hvad deres baggrund er, og hvilke forretningmæssige opgaver de løser, medmindre at det er af teknisk karakter eller at projektleder og udvikler er samme person. Med hensyn til løsningsdesign (hvordan krav opfyldes), så er det netop ikke kravspecifikationens opgave, at agere løsningsdesign. Dette udarbejdes som et selvstændigt dokument af udviklerne, hvor de kan designe den tekniske løsningsmodel, der løfter kundens krav. Derfor får udviklerne masser af indflydelse - men sorter bananer og pære for sig.
Henrik Overballe

Af: Henrik Overballe / onsdag 20. januar 2010

Iøvrigt en interessant tråd om umiddelbare svagheder ved SCRUM: http://www.version2.dk/artikel/13562-hvad-er-der-galt-med-scrum

Af: Jeppe / onsdag 3. februar 2010

Jeg vil helst ikke beskyldes for, at jeg argumenterer for udvikling uden specifikation eller prototype. Det kan man naturligvis ikke. Dine behov i forhold til at kunne forhandle funktionalitet (økonomisk) med en kunde, giver bare ikke den rigtige forståelse af hvordan SCRUM skal bruges bedst. SCRUM er ikke udviklet til at understøtte webbureauer's økonomiske forhandling med kunden om funktionalitet, men til at sikre en højere kvalitet af det udviklede. Særligt så udviklerne kan træffe tekniske valg og vide hvad hinanden laver - ikke at forstå kundens forretning, som jo varetages af Product Owner, hvis vi holder fast i SCRUM terminologien... Det er altså ikke et spørgsmål om at udskifte roller, men at se med åbne øjne på, hvor projektet bevæger sig hen under hele forløbet...
Henrik Overballe

Af: Henrik Overballe / onsdag 3. februar 2010

Men i så fald er du jo stadigvæk tvunget til at starte traditionelt, at lave en dyb kravspecifikation for at kunne nedbryde projektet og skrive økonomi på baggrund af det. Når kunden så har accepteret din økonomi, så udvikler du efter SCRUM, som er agilt, og dermed skifter paradigme. Kunden, som vil være Product Owner (i hvert fald i et kunde/leverandørforhold), foretager change requests, som vil bryde økonomi og den oprindelige kravspecifikation qua SCRUM.

Udviklerne ved jo stadigvæk hvad hinanden laver og kan træffe tekniske valg i et traditionelt forløb. SCRUM sikrer at Product Owneren nemmere kan foretage valg og prioriteringer i løbet af processen - teknikerne rådgiver og udfører, de træffer jo ikke valg.

Jeg er godt klar over, at SCRUM ikke er udviklet til estimering af webudviklingsprojekter, og det er lige nøjagtigt derfor at jeg proklamerer at kravspecifikationen ikke er død. SCRUM halter kraftigt i forhold til estimering af økonomi og mangler derfor helhed i forhold til et traditionelt forløb, som kommer hele vejen rundt. Det gør SCRUM ikke i min optik. Det forholder sig primært til konstruktionsfasen, og derfor strider SCRUM også mod sædvanlige arbejdsgange indenfor udvikling af webløsninger og portaler generelt, som skitseret ser nogenlunde sådan ud: Analyse/Informationsarkitektur -> Wireframing -> Digital design -> Konstruktion -> Test -> Idriftsættelse. Det er noget sekventielt og de change requests du laver i Konstruktionsfasen vil betyde at du skal rulle tilbage til Digital Design og i værste fald Wireframing. Det er mere fordyrrende end almindelig it-udviklingsprojekter, hvor der er mindre fokus på farvelade.

Af: Jeppe / onsdag 3. februar 2010

Ja, men det er jo ikke fordi at SCRUM ikke indeholder nogen foranalyse, så på den måde mener jeg ikke det er paradigme skift (men måske snarere et spørgsmål om terminologi). Ligelededes betragter jeg heller ikke de andre involverede parter i et klassisk Web projekt, som IAér eller ADér, som en egentlig del af SCRUM processen. Jeg skrev faktisk om netop dette sidste år, hvis du vil læse det: http://www.compent.dk/hvor-mange-uger-varer-en-scrum-sprint.aspx

Af: test / torsdag 18. marts 2010

Men hvordan styres økonomien i et SCRUM projekt. Kunden vil jo have en pris og skal typisk have et budget godkendt i baglandet inden vi starter?

Af: anonym / mandag 26. april 2010

Faldt over denne forleden: http://kravspecifikation.com - den virker fornuftig til mindre projekter :-)
Hvis du vil deltage i debatten skal du have en profil. Du kan oprette en profil på kforum her. Det tager få minutter.