20 års fejl i softwareudvikling: Hvorfor er krav stadig så problematiske?

Klumme: Krav og kravstyring har alle dage været en af de store udfordringer ved softwareudvikling, og selv om der er skrevet kilometervis af bøger om emnet, gør mange stadig de samme fejl som for 20 år siden. Det skyldes måske først og fremmest menneskene.

Artikel top billede

Et krav er et krav er et krav

I de 20 år, jeg efterhånden har udviklet software, har der været et utal af strategier for at håndtere krav: Nummererede lister af målbare udsagn, use cases, user stories ...

Men til trods for, at navnene på metoder og værktøjer har ændret sig, er det alligevel mange af de samme fejl, der begås, og ofte bliver de brugt på en måde, hvorpå det lige så godt kunne have været en anden metode, der anvendtes.

Om folk skriver en one-liner og kalder det et nummeret krav eller en user story, gør altså ikke den helt store forskel.

Men der er nogle ret klare forskelle i de forskellige tilgange, som det er vigtig at være opmærksom på.

Funktionelle krav

Et af de store problemer ved mange af de klassiske lister af krav, der blev sendt ud til budkrige i de "gode gamle dage", var, at de for det meste kun indeholdt de funktionaliteter, systemerne skulle indeholde, og oftest også kun information om, hvad der skulle ske i de situationer, hvor alting gik, som det burde.

Det betød for eksempel, at der sjældent var informationer om, hvor mange samtidige brugere der skulle være på systemet, om systemet skulle kunne anvendes uden mus, eller om det var i orden at vise en blå skærm, når der skete et eller andet, som ikke lige var en del af den normale arbejdsgang.

Faktisk kan en ting, som at oppetiden hæves fra 95 procent til 99,99 procent, betyde meget mere for prisen end selv store funktioner.

Som leverandør var det selvfølgelig dejligt at kunne skrue på disse parametre, så man kunne finde den rigtige pris, som kunne vinde kontrakten, men det var oftest ikke befordrende for samarbejdet med kunden, når de så efterfølgende fandt ud af, hvordan leverandøren tolkede kravene.

Fokus på ikke-funktionelle krav

For at få bedre kravsspecifikationer begyndte man så i OOA/OOD at have fokus på både de funktionelle og de ikke-funktionelle krav; oftest organiseret efter huskereglerne som FURPS+ og lignende (Functionality, Usability, Reliability, Performance, Supportability...).

Når det gælder de funktionelle krav begyndte man også i højere grad at strukturere kravene til systemet ved at bruge use cases, som ikke kun havde fokus på hovedsuccesscenariet (hvor alt bare gik, som det ideelt set burde), men også beskrev, hvordan fejlsituationerne skulle håndteres.

Hermed fik man så skabt en mere detaljeret specifikation, hvor man også blev tvunget til at forholde sig til rigtig mange ting, som så gjorde, at kodningen efterfølgende blev nemmere (jeg har selv været med til at skrive kravspecifikationen til en stor del af en elektronisk patientjournal, og det blev godt nok til en del sider).

Krav i det agile mindset

Med det agile mindset er der selvfølgelig også kommet en ny tilgang til krav, hvor det hele er blevet til user stories.

Umiddelbart kan det se ud som et tilbageskridt, da man nu oftest er tilbage i en liste af one-liners uden støttehjulene med FURPS+ og use cases til at sikre, at alt kommer med.

Men fejlen er nok at se listen af user stories som en traditionel kravspecifikation.

Et af fundamenterne for user stories er nemlig antagelsen om, at delte dokumenter ikke er det samme som en delt eller fælles forståelse.

User stories er derfor mere overskrifter eller referencer, som den efterfølgende skabelse af en fælles forståelse kan hænges op på.

Hvordan man så efterfølgende mest effektivt skaber og fastholder den fælles forståelse, er meget afhængig af den konkrete situation, og det ligger egentlig uden for user story'en.

Her kan der være situationer, hvor use cases, workflows, mock-ups, personas og mange andre metodikker kan være anvendelige.

Det andet område, hvor jeg synes, at den agile tilgang tilføjer en ekstra dimension til kravstyringen, er i forhold til "definition of done".

Her er det ikke kun eksterne parter som product owners eller kunder, der definere kravene til, hvornår en feature er færdig, men mindst lige så meget udviklingsteamet selv, der får lov til at indgå en intern kontrakt om, hvad teamet mener er godt håndværk og nødvendigt for, at kunden får det rigtige produkt.

Selvom "definition of done" er et meget vigtigt koncept i for eksempel Scrum, er der overraskende mange team, som ikke har indgået sådan en kontrakt, hvilket kan gå ud over kvaliteten og - mindst lige så vigtigt - teamgejsten.

Vær opmærksom på styrker og svagheder

Som jeg har forsøgt at eksemplificere, er der nogle ret store forskelle i tilgangene til krav i de forskellige perioder.

Det gælder lige fra antagelsen om, at kravene skal være så komplette og detaljerede som muligt, til user stories som i praksis bare er overskrifter, som man efterfølgende skal samarbejde om at skabe en fælles forståelse af (husk nu det agile manifest med "samarbejde med kunden frem for kontraktforhandling").

Alligevel ser man mange gange User stories brugt i situationer, hvor målet er en detaljeret og komplet kravspecifikation, som vi kan styre leverandør eller kunde ud fra - hvilket det aldrig var skabt til.

Omvendt synes jeg, det er forkert at se værktøjerne fra de forskellige perioder, som om de udelukker hinanden, men formålet med at bruge dem har måske ændret sig.

For eksempel kan FURPS+ stadig være en god remse at huske på, når man skriver sine user stories, eller mens man skaber den fælles forståelse, så man også får tænkt de ikke-funktionelle aspekter ind.

Og use cases er i nogle situationer den mest effektive måde at få alle variationerne tænkt igennem og fastholdt.

Som sædvanlig handler det altså om at kende styrker og svagheder ved så mange værktøjer som muligt og så bruge det, der giver mening. Det vil sige det, som er med til at skabe den fælles forståelse - også for de sværere elementer, hvor man er som udgangspunkt er uenig.

Læses lige nu

    Annonce

    Netcompany A/S

    Microsoft Operations Engineer

    Nordjylland

    Capgemini Danmark A/S

    AI Data Architect

    Københavnsområdet

    Annonceindlæg fra QNAP

    Selvbygget filserver kontra QNAP NAS – Hvorfor en dedikeret NAS giver meget mere mening

    En enkel filserver i en ”gratis” PC kan ende med at koste dig tusindvis af kroner mere om året.

    Navnenyt fra it-Danmark

    Stine Willemoes Kondrup, Senior Project Manager hos Ascom, har pr. 22. juni 2026 fuldført uddannelsen Master i it, linjen i organisation på Aalborg Universitet via It-vest-samarbejdet. Færdiggjort uddannelse
    Softwarevirksomheden Idura, som udvikler løsninger til digital identifikation og autentifikation, har pr. 1. september 2026 ansat Maria Juliane Friedrichsen, 47 år,  som Office Manager. Hun skal især beskæftige sig med at holde overblik og sikre, at alt på kontoret kører, som det skal. Hun kommer fra en stilling som Office Manager hos Kontorhotellet H2M. Hun er uddannet professionsbachelor i ernæring og sundhed og har en korrekturlæseruddannelse. Hun har tidligere beskæftiget sig med korrekturlæsning og den daglige drift af kontorer. Nyt job

    Maria Juliane Friedrichsen

    Softwarevirksomheden Idura, som udvikler løsninger til digital identifikation og autentifikation,

    Arctic Wolfs Network har pr. 1. september 2026 ansat Victor Dohlmann som Sales Director for Nordics. Nyt job

    Victor Dohlmann

    Arctic Wolfs Network

    EG Danmark A/S har pr. 17. august 2026 ansat Michael Banegas Madsen, 32 år,  som Senior Account Executive. Han skal især beskæftige sig med Ansvar for nysalg og vækst af eksisterende kunder, samt opbygning af kunderelationer på tværs af Jylland og Fyn. Han kommer fra en stilling som Senior Talent Attraction Specialist hos Danske Commodities A/S. Han er uddannet Kandidat i Corporate Communication fra Aarhus BSS. Han har tidligere beskæftiget sig med 6 års erfaring med rekruttering af tech-profiler i bl.a. Danske Commodities. Nyt job

    Michael Banegas Madsen

    EG Danmark A/S