I min todo-lista har jag kommit fram till något som stavas D-C-I. Ännu en bokstavskombination. Står dessa tre bokstäver för något som stoppas undan i skrivbordslådan och faller i glömska eller kommer de att få allmän spridning. Vissa vill till och med hävda att det leder till ett så kallat paradigmskifte inom utveckling av programvara. En efterföljare och naturlig fortsättning av det objektorienterade synsättet.
Låt oss titta lite närmare. Bokstavskombinationen står för förkortningen av Data-Context-Interaction. En av förgrundsfigurerna är den nu över 80-årige norrmannen och professorn Tryggve Reenskaug. Det var också han som formulerade begreppet model-view-controller (MVC pattern) som fått stort genomslag. Är det våra grannar som ska sätta sina avtryck i databranschens historieböcker? Finland har sin Linus och Norge ja de har Tryggve.
Behovet av ett ändrat angreppssätt tar sin utgångspunkt i svårigheterna att följa och förstå koden i allt komplexare system. Det objekt-orianterade programmeringssättet isolerar objektens data och deras beteenden men interaktionen mellan objekten är ofta svåra att följa. Målet för DCI är att separera vad systemet är (data) från vad systemet gör (interaction). Därmed blir koden mer läsbar. Systemets runtime-egenskaper ska motsvara den mentala modellen och återspeglas i koden.
Begreppet roll införs. Det står för beteende. Förändringar av objekten. Genom att införa roller separeras objektens datastruktur från dess beteende (metoder). Den stora förändringen är begreppet context. Från användarens mentala modell via use case till context ska finnas ett klart samband. Varje use case ska återspeglas i ett context. Det ska visa vad som händer med objekten och mellan objekten under runtime. Fördelarna är uppenbara. Kommunikationen med användarsidan underlättas. När väl context identifierats framgår sammanhangen tydligt i koden. Läsbarheten ökar.
Låt oss följa hela kedjan. Utgångspunkten är användargränssnittet. Användaren triggar ett use case och ett request skapas. Från requesten letar serverdelen reda på rätt context. Context plockar in de data och roller som behövs. Sedan kan rollerna genomföra det som krävs.
Jag tycker angreppssättet verkar mycket tilltalande. Hur många timmar läggs ner på att följa och förstå kod? Åtskilliga! En av svårigheterna är mängden kod. Med DCI isoleras varje use case i greppbara delar. Det känns lovande. Naturligtvis är det först i den praktiska tillämpningen som tankesättet sätts på prov. Kan fördelarna göras synliga?