Ja, måske er det bare mig, men var artefakter ellers ikke noget man hørte om i arkæologiske sammenhænge – mest i hvert fald? Godt, det er det ikke! Artefakter forekommer nemlig i høj grad i det vi her beskæftiger os med; softwareudvikling. Vi skal se lidt nærmere på dem i dag, og hvordan de hænger sammen med vores krav. En enkelt artefakt vil jeg med det samme fremhæve, nemlig Use Case Model, som er en meget central, og praktisk taget uundværlig del af processen – vær opmærksom på den.
Alle de artefakter jeg fortæller om her, er en del af inceptions fasen – den forberedende fase, men fordi vi arbejder i iterationer, vil flere artefakter forekomme flere steder i processen og undervejs vil nogle af dem måske ændres eller udbygges.
Vi begynder med visionen, som jo beskriver de overordnede mål med projektet – hvad er det vi vil og hvorfor vil vi det? Den her del er det meget vigtigt at skrive ned! Selvom man har siddet sammen og talt om visionen, er det ikke en garanti for at alle parter har samme opfattelse af hvor de skal hen, hvad der skal lægges vægt på undervejs og hvorfor. Derfor er det vigtigt at kunne tage visionen frem i tvivlsspørgsmål, for de vil komme i de forskellige iterationer.
Det næste er vores Use Case, som er hvad vi kan kalde et brugs scenarie, og som har til formål at beskrive de funktionelle krav – hvilke handlinger skal man kunne udføre i systemet? Til at begynde med laver vi en liste over de fleste af vores Use Cases, men analyserer og beskriver kun ca. 10% af dem – hvorfor? Fordi resten kommer i de senere iterationer. Der er her vi begynder med de krav, der er størst risiko for vi ikke kan lykkes med. Vi analyserer og beskriver i detaljer de handlinger vi anser for de sværeste. En Use Case består af to elementer : en tekst og et UML (Unified Modeling Language) diagram, der viser det samme som teksten med ord forklarer. Giver det mening? Teksten fortæller en historie om hvad det er vi gerne vil kunne gøre i systemet, som hvis en butik skulle have et nyt kassesystem og vi skulle forklare at det skal kunne registrere salg, tage varer retur, opdatere lagerbeholdning, omregne til anden valuta, tage imod checks og betalingskort osv. Og hvordan det rent praktisk foregår. Til at illustrere det, tegner vi et UML diagram, med kasser, pile og få forklarende/beskrivende ord, der viser hvordan processen ser ud. Det er en stor fordel at bruge UML diagrammer, i særdeleshed hvis man bruger udenlandske programmører, der måske ikke er helt fortrolige med nuancerne i det sprog Use Case teksten er skrevet på. Dertil kommer, at teksten er skrevet i slutbrugerens sprog, og ikke med en masse tekniske forklaringer, som en programmør typisk selv ville bruge. Senere vil jeg komme meget mere ind på UML, og alle de fortræffeligheder, der er forbundet hermed.
En supplerende specifikation kan ofte være en fordel, til at definere de ikke-funktionelle krav, der kan være til et system. Der kan være lovgivningsmæssige hensyn, skattetekniske finurligheder, krav om at brugeren skal kunne vælge mellem flere sprog og en række andre ting, der skal tages højde for. Det bruger man denne supplerende specifikation til at få på plads.
En ordliste viser sig ofte at være en af de meget nyttige artefakter, der ikke kun bruges til oversættelse til andet sprog, men i højere grad som redskab til at forklare begreber, ord og terminologier.
Risko-liste og, i mangel af bedre ord, Risk Management Plan er to super vigtige elementer. Hvad kan gå galt, og hvad gør vi ved det, når/hvis det går galt? Hvad kan der opstå af tekniske forhindringer, tidsmæssige forhindringer, resourceproblemer osv. Og hvad er planen, hvis vi render ind i de problemer? Jeg behøver vel næppe forklare hvorfor det er så super vigtigt at bruge lidt tid her? Nej? Det tænkte jeg nok!
Prototype og proof of concept – dem kommer vi heller ikke udenom. De er i sagens natur ikke det aller første vi tager hul på, men de kommer meget tidligt i processen, og har det formål at sikre, at det nu også er umagen værd at gå videre med projektet, for hvis vi ikke kan præsentere noget der viser at det kan komme til at virke – den lille bid software vi udvikler efter den mest risikofyldte use case for eksempel, hvis den ikke virker efter hensigten, er det så umagen værd at gå videre? Eller har vi valgt den rigtige udviklingsteknologi? Skal vi ændre noget der? Eller er der krav, der skal ændres? Du kan godt se hvorfor det her skal foregå tidligt i processen, ikke? Og mange gange i processen faktisk – vi tester jo løbende, husk på det.
En iterations plan – ja, det er skam nødvendigt. Den beskriver jo hvad der skal ske i de første iterationer og hvor lang tid de hver især tager. En tidsplan er vigtig, og igen er det ikke tiden vi rykker noget ved, men indholdet i de enkelte iterationer, hvis vi ikke når det planlagte. En iteration bliver aldrig længere end den er planlagt til – aldrig.
En plan for elaborationsfasen som helhed – jo, den behøver vi også. Det er her vi giver et bud på hvor lang tid den fase må vare. Og her vi beskriver hvad vi skal bruge af værktøjer, uddannelse, folk og andre resourcer.
Development Case – udviklings scenariet. Hvordan har vi tilrettet vores UP efter projektet? Hvilke skridt tager vi hvornår, hvilke artefakter arbejder vi med og hvordan? Det er altid UP’en der customizes, eller tilrettes til projektet – altid. Spørgsmålet er ikke om vi gør det, men hvordan vi gør det, og det er det vi definerer og beskriver her.
Var det ligeså spændende for dig, som for mig? Eller var det bare en masse sludder og vrøvl? Lad mig høre hvad du synes – og lad mig høre hvis du har spørgsmål! Eller hvis der er et emne du gerne vil have mig til at tage op – jeg tager imod ideer med stor glæde.
It-girl – enjoyingIt