Teknisk gjeld ARK2016 // Den norske dataforeningen 6. april 2016 Petter Hafskjold Sjefsarkitekt @petterhf Innhold Hva er teknisk gjeld? NAVs tilnærming Dokumentasjon av teknisk gjeld Oppsummering NAV, 06.04.2016 Side 2
Hvordan definere vi... Teknisk gjeld er en metafor som viser til konsekvensene av dårlig programvareutvikling (Cunningham, 1992) NAVs tilnærming til teknisk gjeld er i stor grad basert på artikkelen An exploration of technical debt av Edith Tom, Aybüke Aurum,Richard Vidgen i The Journal of Systems and Software 21. januar 2013. Artikkelen oppsummerer en metastudie av litteratur om teknisk gjeld NAV, 06.04.2016 Side 3 Hvordan oppstår teknisk gjeld? Bevisst Tar et bevisst valg, og er dermed klar over at det oppstår teknisk gjeld (Forsvarlig/uforsvarlig) BEVISST (Deliberate) Teknisk gjeld kvadranten «Vi har ikke tid for...» «Vi må la det være og håndtere det senere...» Ubevisst Læring underveis finner ut at man skulle gjort ting annerledes (Forsvarlig) Mangel på kunnskap, uviten om at det oppstår teknisk gjeld (Uforsvarlig) UBEVISST (Inadvertent) «Hva er lagdeling...» UFORSVALIG (Reckless) «Nå vet vi hvordan vi skulle ha gjort det...» FORSVARLIG (Prudent) TechnicalDebtQuadrant / Martin Fowler / 2009 NAV, 06.04.2016 Side 4
Vi kategoriserer teknisk gjeld i følgende dimensjoner Dimensjoner Beskrivelse Stikkord Kode Design og arkitektur Teknisk miljø Dokumentasjon Testing Skapes av dårlig skrevet kildekode. Teknisk gjeld i kode vil også øke når mengden kode øker uavhengig av kvalitet. Mangler i design og arkitektur. Avvik fra prinsipper, krav og målbilder. Kan oppstå i det tekniske miljøet til en løsning, i tillegg til utviklingsrelaterte prosesser. Utdatert komponenter, kjøretidsmiljø og/eller operativsystem er inkludert her. Mangelfull og/eller lav kvalitet på dokumentasjon. Dette kan være designdokumentasjon, dokumentasjon av kode og systemdokumentasjon. Mangelfull testdekning av en løsning og/eller manuell testing som kan automatiseres. Duplisering Kompleksitet Lesbarhet Struktur Avvik fra prinsipper Avvik fra design og arkitekturkrav Avvik fra målbilder Hardware Infrastruktur OS, plattformer, rammeverk Støttesystemer Utviklingsprosesser (f.eks.: manuelle prosesser som kan automatiseres) Mangel på dokumentasjon Dokumentasjon med lav kvalitet Mangelfull testdekning Manuelle vs. automatiserte tester NAV, 06.04.2016 Side 5 Sentralt for å identifisere teknisk gjeld er krav til produktkvalitet NAV har etablert en modell med 10 kvalitetsegenskaper Modellen er basert på ISO 25010, og tilpasset til NAV Modellen består av 3 nivåer Kvalitetskrav knyttes til kvalitetsegenskapene NAV, 06.04.2016 Side 6
Teknisk gjeld er avvik fra kvalitetskrav NAV har utarbeidet en fast kravliste Alle krav er knyttet opp mot en eller flere kvalitetsegenskaper Kravene gjelder i utgangspunktet for alle våre IT-løsninger Avvik fra kvalitetskravene anses som teknisk gjeld NAV, 06.04.2016 Side 7 Innhold Hva er teknisk gjeld? NAVs tilnærming Dokumentasjon av teknisk gjeld Oppsummering NAV, 06.04.2016 Side 8
Helhetlig tilnærming til teknisk gjeld NAV, 06.04.2016 Side 9 Prinsipper for håndtering og forvaltning av teknisk gjeld A B PROSJEKT UTVIKLINGSAVDELINGENC RAPPORTERING LØSNINGS- BESKRIVELSE 7 RAPPORTERING 8 9 UTVIKLINGS- MØTET TEKNISK 1 2 GJELD TEKNISK GJELD STYRINGS- GRUPPE D 10 6 FORVALTNINGS- KONTOR 5 ENDRINGS- PROSESSEN 3 4 ARKITEKTUR- BESLUTNINGER IT-avdelingen NAV, 06.04.2016 Side 10
Innhold Hva er teknisk gjeld? NAVs tilnærming Dokumentasjon av teknisk gjeld Oppsummering NAV, 06.04.2016 Side 11 Hvordan vi beskriver teknisk gjeld Kvalitetsegenskap Verdikjede/ komponent Beskrivelse Dimensjon (av teknisk gjeld) Oppstått Årsak Teknisk gjeld Konsekven svurdering Kostnad Kraveier Kvalitetskrav Eier (systemteam) Løsningsbe skrivelse Status Målbilde Estimat NAV, 06.04.2016 Side 12
Teknisk gjeld dokumenteres som vanlige epos, men med noe tilleggsinformasjon Angi «Dimensjon» av teknisk gjeld dette eposet omhandler Ny fane opprettet i Jira for informasjon knyttet til teknisk gjeld Angi «Kvalitetsegenskap(er)» som påvirkes av den tekniske gjelden Angi «Gevinst og 5 år» fra gevinstberegningen Angi «Konsekvenser» av den teknisk gjelden Angi «Estimat» Angi «Ekstra kostnader» (F.eks. lisenser etc.) NAV, 06.04.2016 Side 13 Teknisk gjeld legges i NAVs produktkø NAV, 06.04.2016 Side 14
Teknisk gjeld fordelt på kvalitetsegenskaper NAV, 06.04.2016 Side 15 Dimensjoner av teknisk gjeld NAV, 06.04.2016 Side 16
Innhold Hva er teknisk gjeld? NAVs tilnærming Dokumentasjon av teknisk gjeld Oppsummering NAV, 06.04.2016 Side 17 Ønsker vi alltid å unngå teknisk gjeld? Teknisk gjeld er ikke nødvendig dårlig bevist midlertidig forenkling av løsning kan gi tidligere leveranse (men medfører rydding senere) Null teknisk gjeld = «gold plating», det vil si alt for dyre løsninger tenk 80/20 eller 90/10 Brudd på kvaliteskrav medfører teknisk gjeld Men beviste og godkjente varige avvik er ikke teknisk gjeld Vurder behovet for metodisk tilnærming for teknisk gjeld og krav til produktkvalitet i nye løsninger må på plass først NAV, 06.04.2016 Side 18
Oppsummering teknisk gjeld i NAV Stegvis modning og innføring Arbeidet startet i 2012 med bevisstgjøring rundt ikke-funksjonelle krav og mange krav ble utarbeidet ISO 25010 ble etter hvert valgt som modell og regime for å forvalte kravene kom på plass i 2014 I 2014 ble budsjett og produktkøarbeid for tekniske forbedringer samlet Verktøystøtte for registrering av teknisk gjeld i produktkøen ble etablert i 2015 Bevisstgjøring har effekt både hos forretningssiden, IT og prosjektene Forvaltningsbudsjett og produktkø gir incitament Etablert produktkø gjør det enklere å utbedre teknisk gjeld når prosjekter gjennomføres og erfaringstall for senere prosjekter NAV, 06.04.2016 Side 19 // Spørsmål? NAV, 06.04.2016 Side 20
// Takk for meg! NAV, 06.04.2016 Side 21