Fra kode til konkurransekraft
- Solgunn Ø. Matre
- 21. aug.
- 4 min lesing
Hvordan DDD, SOLID og Clean Code skaper programvare med forretningsverdi

Tenk deg at vi skal bygge et hus – ikke et hvilket som helst hus, men et som skal stå i generasjoner, være lett å endre når familien vokser, og hvem som helst kan forstå hvordan det er satt sammen. I programvareutvikling er målet lignende: Vi vil bygge systemer som ikke bare virker, men som er robuste, tilpasningsdyktige og lette å forstå og vedlikeholde over tid. For å oppnå dette trengs det mer enn bare ad hoc-koding. Det trengs en helhetlig tilnærming. Vi velger en som også gir kunden forretningsverdi og økt konkurransekraft.
Her kommer vår kraftfulle trekløver inn i bildet: Domain-Driven Design (DDD), SOLID-prinsippene og Clean Code. Dette er ikke rigide regler, men snarere et synergistisk sett med verktøy og retningslinjer som hjelper oss å navigere i kompleksitet og levere programvare av overlegen kvalitet.
1. Domain-Driven Design (DDD): Forstå kjernen av virksomheten din
Forestiller du deg at du skal bygge en skreddersydd garderobe. Du kan starte med å tenke på hvilke typer skruer du skal bruke (tekniske detaljer), eller du kan starte med å forstå hvem som skal bruke garderoben, hva den skal lagre, og hvordan den skal organisere klærne (forretningsdomenet). DDD handler om det siste.
Fokuser på hjertet (kjernedomene): DDD handler om å sette forretningsdomenet – den spesifikke delen av virksomheten som skaper unik verdi – i sentrum av utviklingsarbeidet. I stedet for å la databasestrukturer eller tekniske rammeverk styre designet, bygger vi programvaren rundt de virkelige problemene og konseptene i forretningen.
Ett språk for alle (Ubiquitous Language): Med DDD etablerer vi et felles, presist språk som brukes av absolutt alle i prosjektet – både forretningseksperter og utviklere – og vi bruker det direkte i kildekoden.
Avgrensede kontekster (Bounded Contexts): Store systemer deles inn i tydelig avgrensede domener som kan utvikles uavhengig.
Byggesteinene i koden (taktisk design): Entiteter, verdiobjekter og aggregater utgjør grunnstrukturen i domenemodellen.
DDD hjelper oss altså med å bygge systemer som er dypt forankret i forretningsvirkeligheten, noe som gjør dem mer meningsfulle og tilpasningsdyktige.
2. SOLID-prinsippene: Bygg komponentene dine sterke og fleksible
Hvis DDD er arkitekturen og planleggingen av huset, er SOLID-prinsippene de fem gylne reglene for hvordan hver enkelt del av huset skal bygges for å sikre stabilitet, fleksibilitet og enkel utskifting eller utvidelse.
S – Single Responsibility Principle: Én klasse, én oppgave.
O – Open/Closed Principle: Åpen for utvidelse, lukket for endring.
L – Liskov Substitution Principle: Subtyper må kunne erstatte supertyper uten overraskelser.
I – Interface Segregation Principle: Små, fokuserte grensesnitt fremfor store, generelle.
D – Dependency Inversion Principle: Avhengigheter til abstraksjoner, ikke konkrete implementasjoner.
SOLID hjelper oss å lage fleksibel kode som kan endres uten at alt annet bryter sammen.
3. Clean Code: Skriv kode som forteller en historie
Hvis DDD gir strategien og SOLID prinsippene for struktur, er Clean Code kunsten å skrive selve koden på en måte som er så klar og lesbar at den nesten dokumenterer seg selv.
Meningen bak navnene: Variabler, klasser og funksjoner bør ha beskrivende navn.
Funksjoner som gjør én ting godt: Små, fokuserte funksjoner er lettere å forstå og teste.
Kommentarer som tilfører verdi: Forklar hvorfor, ikke hva koden gjør.
Formatering for lesbarhet: God struktur og konsistens gjør koden enklere å lese.
Identifiser og fjern code smells: Lang metode, godclass og anemisk domenemodell er klassiske faresignaler.

Synergien: Når trekløveret spiller sammen
Forestillingen om husbygging blir enda mer relevant her. DDD gir oss kartet over byen (Bounded Contexts) og planene for nabolaget (strategisk design), som sikrer at vi bygger riktig type hus på rett sted. SOLID-prinsippene gir oss arkitekttegningene for huset (hvordan vi strukturerer rom, vegger, VVS). Clean Code er håndverket og detaljene i utførelsen (hvordan hver spiker slås inn, hvert rør legges, hver ledning trekkes).
DDD hjelper oss å finne de riktige abstraksjonene basert på forretningsdomenet.
SOLID hjelper oss å strukturere disse abstraksjonene på en fleksibel og vedlikeholdbar måte.
Clean Code sikrer at implementasjonen er av høy kvalitet – lesbar, forståelig og enkel å jobbe med.
Dette skaper kraftig synergi. Resultatet er systemer som er robuste, tilpasningsdyktige, lette å vedlikeholde og som snakker forretningens språk. Arkitekturmønstre som Clean Architecture (og lignende som Hexagonal Architecture) fungerer som den ideelle byggeplassen for disse prinsippene. De sikrer at kjernelogikken forblir isolert fra skiftende teknologier som databaser og brukergrensesnitt.
Et praktisk eksempel på dette er å la brukergrensesnittet kommunisere med kjernen via et stabilt og versjonert REST API. Forretningslogikken ligger trygt i en robust backend – hvor vi har de beste verktøyene for testing og CI/CD – mens frontend-teamet kan eksperimentere med nye løsninger uten å risikere å påvirke selve forretningsreglene. Slik oppnås den ultimate løse koblingen: backend forblir stabil og forutsigbar, mens frontend kan utvikle seg i sitt eget tempo.
Praktisk anvendelse: Kontinuerlig polering av koden
Å forbedre kodekvalitet er ikke et engangsprosjekt, men en pågående reise. Det handler om å kontinuerlig polere og justere koden.
Refaktorering: Endre den interne strukturen uten å endre funksjonaliteten.
Sikkerhetsnettet – testene: Automatiserte tester bekrefter at endringer ikke ødelegger eksisterende funksjonalitet.
Speiderregelen: La koden være litt bedre enn da du fant den.
Ved å kombinere en strategisk tilnærming (DDD), solide designprinsipper (SOLID) og et fokus på kodekvalitet (Clean Code), og deretter aktivt bruke refaktorering som et verktøy, bygger du ikke bare fungerende programvare – du bygger programvare som er laget for å vare, som er en glede å jobbe med, og som kan vokse og tilpasse seg over tid. Slik går vi fra å bare skrive kode til å bygge varig digital forretningsverdi. Dette er kjernen i moderne programvarehåndverk.
Ta kontakt for å høre hvordan Cloudberries kan hjelpe organisasjonen din til å komme i gang med datadrevet innovasjon som gir deg økt konkurransekraft. Per Christian Øren
Tlf: 982 65 880
E-post: per.christian.oren @ cloudberries .no
Innholdet er skrevet av Thomas Andersen (seniorkonsulent), og tilpasset bloggformat av Solgunn Ø. Matre (strategisk innholdsrådgiver).