Bruk en referanseimplementasjon uten å gjøre den til fasit
Referansekode kan forklare en mulig behandling, men kan også ha avgrensninger og feil.
En referanseimplementasjon er kode eller et kjørbart eksempel som viser en mulig gjennomføring av en spesifikasjon. Den kan gjøre abstrakte regler lettere å forstå, men den er ikke automatisk identisk med hele standarden. Spesifikasjonen og dens avgrensning må fortsatt være kjent.
Undersøk hvem som forvalter koden, hvilken utgave den gjelder og hvilke tilfeller den prøver. En privat eksempelleser skal ikke omtales som en offisiell referanseimplementasjon uten dokumentasjon for den rollen.
Et eksempel med avrunding
En lokal eksempelkode beregner nettobeløp og avgift. Et annet system gir én øre forskjell. Forskjellen kan skyldes tidspunktet for avrunding, presisjonen i mellomregningene eller en feil. Dere må finne regelen som avgjør resultatet.
| Grunnlag | Hva det bidrar med | Hva det ikke beviser alene |
|---|---|---|
| Spesifikasjon | Avtalt beregning og feltbetydning | At én bestemt kode følger regelen |
| Referansekode | En konkret implementasjon | At alle grensetilfeller er dekket |
| Testvektor | Avgrenset input og forventning | At alle leveranser fungerer |
| Faktisk resultat | Hva mottakeren gjorde | At behandlingen er riktig |
Hvis referansekoden og spesifikasjonen ser ut til å gi ulike svar, skal avviket dokumenteres. Ikke tilpass produksjonsdataene til koden før dere har avklart grunnlaget.
Prøv koden under kontrollerte betingelser
Bruk en kjent versjon av koden og registrer avhengigheter, konfigurasjon og input. En endring i et bibliotek kan påvirke datoer eller desimalbehandling selv om deres egen kode ikke endres.
Kjør normaltilfeller, grenseverdier og bevisst ugyldig input. Undersøk særlig hvordan koden reagerer på manglende referanser og gjentatte leveranser. Eksempelkode kan være laget for å demonstrere et format, uten robust feilbehandling for produksjon.
Dokumenter egen tilpasning
En tilpasning til virksomhetens kontoplan eller mottakerprosess bør være synlig. Bevar hva som er hentet fra referansegrunnlaget, hva som er endret, og hvorfor. Dersom dere legger til en lokal regel, skal den ikke presenteres som et offentlig formatkrav.
Vurder dessuten lisensen før koden kopieres eller deles. At kode er offentlig lesbar, betyr ikke nødvendigvis at alle former for bruk eller viderepublisering er tillatt.
Referanseimplementasjonen er mest nyttig som en forklarlig sammenligning. Kombiner den med uavhengige testvektorer og avstemming av faktisk resultat. Det reduserer risikoen for at to systemer bare blir enige om den samme feilen.