De senaste veckorna har varit intressanta. De har ägnats åt en fas av mjukvarutvecklingsprocessen som inte involverar något slags programmering överhuvudtaget. I det nya projektet ska Cinnobers grundplattform byggas ut med stöd för att skicka ut marknadsdata med multicast-teknologi över FIX-protokollet. Det går ut på att en sändare kan skicka ut marknadsdatan till ett stort antal mottagare på ett effektivt och rättvist sätt.

Förstudie och design

Eftersom detta är helt ny funktionalitet så går en stor del av projektet åt till att göra efterforskningar och ta reda på hur problemet kan lösas på bästa sätt. Vi har studerat existerande Cinnobersystem, existerande implementationer som redan finns på marknaden, vetenskapliga artiklar, m. m. Tillsammans diskuterar vi i teamet och andra experter på företaget igenom de många olika alternativa lösningar, deras för- och nackdelar och väger dem mot varandra.

Eftersom detta kommer vara del av grundplattformen som alla kundprojekt bygger på måste lösningen vara tillräckligt flexibelt för att fungera för alla kundprojekt. Samtidigt vill man minimera mängden arbete kundprojekten själva behöver göra för att anpassa systemet till deras behov. Dessutom måste systemet vara tillräckligt effektivt för att möta förväntningarna hos användare på moderna elektroniska marknadsplatser. Dessa hänsynstaganden står ofta i konflikt med varandra, vilket utgör intressanta problem.

Projektplanering med Scrum och story points

När vi anser att vi har en tillräckligt bra bild av problemställningen måste projektet planeras. I Scrum-modellen, vilken är praxis på Cinnober, delas projekt upp i så kallade sprintar, som varar i 2-4 veckor. Problemet som ska lösas delas upp i “stories”, som var och en täcker in en arbetsuppgift som ska passa in i en enda sprint. Samtidigt ska varje story prioriteras, efter två hänsynstaganden. Å ena sidan kan vissa stories helt enkelt inte utföras förrän andra är klara, och de måste naturligtvis prioriteras lägre. Dessutom prioriteras stories efter hur kritiska de är för projektets framgång, med central kärnfunktionalitet på topp och bonusfunktionalitet som lösningen i teorin skulle klara sig utan längst ner.

När väl detta är gjort tidsestimerar vi varje story, i ett format som kallas story points. En story point kan ses som ett storleksmått snarare än ett tidsmått. Detta för att tiden det tar att slutföra en uppgift kan variera beroende på vem som utför den, medan story points är tänkta att vara konstanta. En story point representerar samtidigt ingen specifik enhet, utan det viktiga är att poängmåttet är korrekt relativt andra estimat. Dvs, en story med tre story points ska vara ungefär tre gånger så stor som en story med en story point.

När väl alla stories fått ett estimat uppskattar teamet tillsammans hur många story points vi klarar av på en sprint, och de stories med högst prioritet plockas in i första sprinten tills poänggränsen är nådd. Detta har dessutom fördelen att man omedelbart får ett långsiktigt tidsestimat för hela projektet, genom att dela det totala poängantalet med poänggränsen för en sprint.

En annan finess med det här systemet är att efter varje sprint kan teamets prestanda jämföras med den estimerade. Det är mycket troligt att bedömningen av antalet poäng som kan avklaras på en sprint inte överensstämmer med verkligheten. Då kan man inför nästa sprint utnyttja antalet poäng som avklarades i föregående sprintar för att estimera nästa. På så vis kommer tidsplanen att konstant uppdateras och komma närmare sanningen allteftersom att projektet fortgår och teamet får tillgång till mer information och bättre förståelse för problemet och lösningen.

Medan jag skriver detta har vi precis avslutat den första tidsestimeringen och imorgon ska vi påbörja planeringen av den första sprinten. Det är fascinerande hur sofistikerad modern projektplanering inom mjukvara kan vara och det ska bli intressant att se hur bra systemet fungerar i praktiken de närmaste månaderna. När jag skriver nästa gång kommer vi förmodligen kommit in på andra sprinten och jag kan rapportera mer om hur det gått. Hörs då!