Systemutveckling

Systemutveckling består av en process som kan ske på två sätt, det kan utföras på ett strukturerat och planerat sätt eller så kan det ske på ett ostrukturerat och oplanerat sätt, dvs. adhoc-mässigt.

Systemutveckling kännetecknas av att den övertid har blivit allt mer komplex vilket har lett till att systemutvecklingen idag utmärks av att det är en strukturerad process. Arbetet med att ta fram och utveckla informationssystem kännetecknas ofta av att arbetet utförs i projektform.

Ett antal viktiga punkter i lyckade systemutvecklingsprojekt är att projektgruppen består av motiverade medlemmar, sunt förnuft. Det tillsammans med ett antal principer för att skapa bra implementation, högkvalitativ mjukvara och en levande och korrekt dokumentation.

Begreppen jag vill lyfta fram i systemutveckling är Continuous Integration (CI), Test-driven Development (TDD) samt lika ansvar för kod och dokumentation. 

Continuous Integration (CI)

Continuous Integration (CI) syftar på genomförandet av kontinuerliga processer för att tillämpa kvalitetskontroll. Det rör sig om mindre ansträningningar som tillämpas ofta. CI syftar till förbättra kvaliteten på programvaran samt att minska den tid det tar att leverera. Detta genom att ersätta den traditionella vägen att tillämpa kvalitetskontroll, dvs tillämpning efter avslutad utveckling.

Test-driven Development (TTD)

TDD handlar om arbete i korta iterationer där varje iteration har som målet att lägga till ny funktionalitet eller förfina redan existerande funktionalitet, observera att iterationen får aldrig förekomma med båda målen.  

Ny funktionalitet - Skapas genom att utvecklaren/programmeraren först skapar ett test för att sedan köra testet och ser att det felar (ibland kan det hända att testet går bra direkt), sedan skriver utvecklaren koden för att uppfylla testet och kör testet för att verifiera att det går igenom.

Förfining av existerande funktionalitet/Refactoring - Är den process där koden struktureras om för att undvika dubbel kod eller för att få en överskådligare struktur. Här får ingen ny funktionalitet läggas till. Som en del av detta verifieras även att de existerande testerna fortfarande går igenom.

Lika ansvar för kod och dokumentation

Med lika ansvar för kod och dokumentation anser jag att alla deltagare i projektet har en gemensam skyldighet att se till att dokumentation om mjukvaran är korrekt och uppdaterad.

Samma sak gäller mjukvarans källkod.

Jag som utvecklare bör kunna hjälpa till att skriva dokumentation om hur en viss funktion i mjukvaran fungerar, trots att någon av de andra utvecklarna i projektet har implementerat den funktionen. Uppstår det ett fel i mjukvaran (bug) som jag har skapat, ska en annan utvecklare i projektet kunna avhjälpa, lika gärna som jag.