Lager

Jag lyssnade till en föreläsning om domändriven design eller som det kort och gott kallas DDD. Allt med genomslag har en bokstavskombination. Intresset var större än vad arrangörerna räknat med. De hade tvingats boka en större lokal.

En detalj som föreläsaren tog upp var hans förändrade syn på lager inom programutvecklingen. Han hade byggt programvara med många lager men blivit varse nackdelar när ändringskraven kommer. Underhållet blir tyngre då ändringen måste in i alla lager. Tidsödande och kostsamt. Det väckte min uppmärksamhet så här kommer min fundering runt ämnet.

En vanlig separering av programvaruutveckling är i lagren för presentation, affärslogik och databas. Det är vad jag vill kalla ett horisontellt perspektiv. Lagren ligger seriekopplade från användarytan över affärslogik till databaslagret. Samma abstraktionsnivå. En vanlig bokstavskombination i dessa sammanhang är MVC. Där M:et står för modell eller databärare. V för view det vill säga det som presenteras för användaren och slutligen C som står för controller vilket kontrollerar flödet. Perspektiv är här mer kopplat till programmeringsperspektivet men fortfarande horisontellt.

Lager kan också ses utifrån ett vertikalt perspektiv. Eller ska vi tala om abstraktionsnivåer. Om vi resonerar i databastermer så har vi på lägsta nivå teckenhantering. Nästa nivå har tecknen samlats i kolumner. Ytterligare en nivå är formatet som består av ett antal kolumner. Här kan vi också prata om block där flera format samsas. På samma sätt kan presentationslagret delas upp i vertikala lager. Tecken på lägsta nivå och om vi resonerar i html-termer har vi taggarna som ingår i element. Flera element bildar visuella enheter och till slut kommer vi upp till användarytans hela HTML-sidor. Jag vill lyfta fram denna horisontella syn på utvecklingsarbetet. Kan arbetet lyftas till en högre nivå där enheterna är block finns stora vinster att hämta. Både tidsmässigt och stabilitetsmässigt.

Låt mig ta ett exempel. Hantering av XML kan ske på många olika sätt. Nätet är fullt av verktyg. Säljare säger sig ha de nödvändiga redskapen, dock mot en smärre(större) kostnad. Arbetet med XML kräver just deras redskap. Det måste vara okunskap som gör det möjligt att sälja verktyg när det finns bra hantering av XML i många språk. I javan finns bland annat JAXB som ett utmärkt exempel. Med dess hjälp kan man lyfta hanteringen en eller ett par nivåer. Finns definitioner över xml:en i form av schema eller DTD så kan klasser genereras direkt. Vi har flyttat oss högre upp och jobbar på objektnivå eller om man så vill blocknivå. Enkelheten blir uppenbar. Omvandlingen mellan xml och klasser sker med en enda kodrad. Saknas definitioner finns också möjligheten att generera definitioner direkt från xml-filen. Om vi återvänder till resonemanget kring vertikala lager så har vi lyft oss några nivåer. Antalet kodrader som behöver skrivas minimeras. Stabiliteten blir bättre och utvecklingstiden blir betydligt kortare. Utvecklare måste kunna lämna detaljnivå.

This entry was posted in Programmering. Bookmark the permalink.