Iterativ udvikling af systemer
Sæt dit projekt op
Når du starter med at udvikle en app er det en god idé, at få dine udviklingspipeline på plads først.
Din udviklingspipeline er alle de trin der skal til for at dit system bliver gjort tilgængeligt for dine brugere, dvs. alt fra kodning, over bygge og teste systemet, til det ligger og kører på en webserver (hvis det er et web projekt).
Der findes mange forskellige måder at få dette til at ske på. Til at start med, kan det være en manuelt proces, hvor du kører nogle kommandoer i en CLI der bygger, tester, pakker til offentliggørelse, kopiering til - og opdatering af webserver. Manuelle processer er desværre ofte fejlbehæftede, så det er ikke optimalt i længden.
En bedre løsning er at automatisere processen, så det "eneste" du skal tænke på er, at udvikle dine features og gemme dine rettelser, hvorefter en automatisk proces gør resten af arbejdet for dig. Dette kaldes også for en "build pipeline". Build pipelines kan sættes op på mange måder og det er udenfor scope af denne artikel, at beskrive dette i dybden, men det er godt at vide, at konceptet eksisterer.
Med en build pipeline på plads er du sikker på at du hele tiden har noget der kan vises frem.
Udvikl dit projekt
Med build pipelinen på plads, kan du begynde at udvikle projektet.
Så det du bør gøre er:
- få oprettet dit projekt
- få oprettet en hovedside
- få sat en simpel tekst på den
Når du har det oppe at køre på din udvikler maskine, skal du lægge det på din webserver og sikre dig, at det kører der. Dette sørger din build pipeline for, hvis den er automatisk.
Dernæst finder du på det næste du gerne vil have din app til at gøre og lægger det ind i din app. Når du så har implementeret den feature gentager du processen (find på feature -> implementér -> offentliggør -> gentag). Når du ikke har flere idéer - er din app færdig.
Bare rolig! Dine brugere (og du) skal nok finde på en hel masse andre ting din app har brug for, men det er bare fedt! Når andre interesserer sig nok for din app til at de gider komme med idéer, er du et godt sted.
Strukturér dine features
Inden du begynder at udvikle noget, kan det være en god ide at lave en oversigt over features, du selv gerne vil have, at din app kan. Når du sidder og laver det er det en god idé, at beskrive de features app'en skal indeholde via nogle korte og fokuserede beskrivelser, som tager udgangspunkt i den bruger du gerne vil implementere en feature til. Det kunne for eksempel være:
Som administrativ bruger skal jeg kunne se en oversigt over alle brugere i systemet.
Det er vigtigt, at du ikke bliver for teknisk med dine krav, men at du bare beskriver det behov, som brugere med den rolle, featuren er henvendt til, skal have. Det er også vigtigt at du ikke gør dine beskrivelser for omfattende. Det er bedre at fokusere på en enkelt feature og så lave flere forskellige beskrivelser. Ovenstående omhandler kun det at hente en liste af brugere i systemet og præsentere dem for en administrator. Derefter kan du udvide med en ny feature, der giver administratoren mulighed for at få vist detaljer om en bruger i oversigten.
Som administrativ bruger skal jeg kunne se detaljer om en bruger i systemet.
Bemærk, at du ikke beskriver hvordan eller hvor du får adgang til at kunne se detaljer om brugeren, men blot, at det skal være muligt, når du er administrativ bruger. Bemærk ligeledes, at du kun beskriver et behov ad gangen. Du har ikke skrevet noget om, at redigere brugerens oplysninger, eller slette brugeren, eller blokere brugeren, eller... Det beskriver du i særskilte feature beskrivelser. Du får lige 3 eksempler mere herunder:
Som administrativ bruger skal jeg kunne slette en bruger fra systemet.
Som administrativ bruger skal jeg kunne blokere en bruger fra systemet.
Som administrativ bruger skal jeg kunne ændre en brugers e-mailadresse.
Denne måde at beskrive features på, kaldes User Stories.
Start småt og iterér
Der er ikke nogen der siger, at alle alle features skal være beskrevet inden du kan gå videre med implementeringen. Du kan sagtens tage det i små trin og bygge systemet op over tid. Du kan gøre det som en iterativ proces, hvor du specificerer noget og implementerer det i din app. Når du så har været i gang med at implementere, får du måske nogle nye ideer til, hvilke features der kan implementeres som de næste. Det vigtigste er, at du sørger for at tage det i små trin, fordi det så bliver nemmere at holde idéen om den aktuelle feature i dit hoved fra start til slut.
Når du udvikler på denne måde, er det som om du skærer den ene skive af efter den anden, på den samlede opgave med at bygge dit system. Når der ikke er mere at skære af, er du færdig. På engelsk bruges termen "Vertical Slice" om den måde at udvikle på.