Informationsarkitektens bokhylla – del 2: Den bästa boken om mönster för informationsmodeller

Som erfaren informationsmodellerare har man ett antal mönster i huvudet, strukturer som återkommer oavsett vilken bransch man jobbar i. Men erfarenhet är inte enda vägen att tillägna sig mönster. Man kan utöka sin repertoar och förståelse för modellmönster genom att studera och reflektera över publicerade och namngivna mönster. Den bästa boken om mönster för informationsmodeller, enligt mig, är Analysis Patterns – Reusable Object Models av Martin Fowler.

/Peter Tallungs, IRM 2023-04-06

Mina tidigare artiklar om modellmönster

Jag har skrivit ett antal artiklar om mönster. Den första presenterade själva konceptet mönster: ”Om mönster för informationsmodeller” publicerad 2021-06-24. De följande tolv artiklarna presenterade olika mönster för informationsmodeller och hade samtliga en titel som började med ”Modellmönster”.

De flesta av mönstren jag presenterade var inspirerade från olika håll, där några är mina egna skapelser eller sådant jag vidareutvecklat.

Böcker om modellmönster

Det finns ganska många böcker med mönster för informationsmodeller. Följande står i min bokhylla. Jag har listat dem efter författare och utgivningsår.

David Hay

  • Data Model Patterns – Conventions of Thought, 1996
  • Data Model Patterns – A Metadata Map, 2006
  • Enterprise Model Patterns – Describing the World, 2011

Len Silverston

  • The Data Model Resource Book – Volume 1 – A library of Universal Data Models for All Enterprises, 1997
  • The Data Model Resource Book – Volume 2 – A library of Universal Data Models by Industry Types, 1997
  • The Data Model Resource Book – Volume 3 – Universal Patterns for Data Modeling, 2009

Michael Blaha

  • Patterns of Data Modeling, 2010

Martin Fowler

  • Analysis Patterns, 1997
  • Reusable Object Models, 1997

Man kan se att många av dessa böcker utkom 1996–1997. Det ger en vink om var inspirationen kom från. Ett par år tidigare, 1994–1995, hade mönsterbegreppet blivit till en hajp i programmerarvärlden.

Startskottet för detta var boken Design Patterns – Elements of Reusable Object-Oriented Software. Författarna ”The Gang of Four” var: Erich Gamma, Richard Helm, Ralph Johnson och John Vlissides. Mönstren de presenterade var dock mer programtekniska till sin natur och av mindre intresse för oss som informationsmodellerar.

(Ett sidospår: Hajpen kring mönster inom programmerarvärlden fick alla kännetecken av en hajp. Ambitiösa programmerare överanvände de stackars 23 mönster som fanns i boken. Inställningen var att man skulle klämma in alla 23 i sin kod för att visa att man hängde med. Upphovsmännen sade sig till och med ångra hur de framställde idén om mönster. På konferensen OPSLA i Denver i början av 00-talet fick jag vara med om ett spektakel som man med glimten i ögat kallade för en skenrättegång mot ”The Gang of Four”. Martin Fowler fick, med sin basröst, agera domare.)

Man kan tänka sig att David Hay fick sin inspiration till mönster från programmerarvärlden. Len Silverston däremot verkar inte vid den tidpunkten sett sina modellexempel som mönster. Och det var de inte riktigt heller, de var mer som exempel i bred mening. Först i sin tredje volym benämnde han något som mönster, och där fick de också en tydligare form som sådana.

Den bästa boken om mönster för informationsmodeller

En av böckerna, i listan ovan, sticker ut på flera sätt. Det är Martin Fowlers Analysis Patterns. De mönster han presenterar ser han inte som mönster för informationsmodeller utan som mönster för objektorienterad programkod. Närmare bestämt den del av programkoden som avbildar programvarans domän, det vill säga modellen i koden av det som programvaran hanterar i den verksamhet den stödjer. Han kallar dessa mönster för analysmönster, i linje med termen designmönster, vilken anammats av programmerarvärlden för en typ av mönster som har en mer programteknisk användning.

Dock fungerar hans mönster precis lika bra för informationsmodellering som för utformning av en domänmodell i objektorienterad programkod, enligt mig. En informationsmodell är ju också en domänmodell, och en sådan behöver struktureras på mer eller mindre samma sätt vare sig det är i programkod, i en databas eller i en konceptuell informationsmodell.

I de båda fallen är det samma utmaningar man möter och samma lösningsmönster man behöver förstå och välja mellan. Dessutom delar objektorienterad systemutveckling sin grund med informationsmodellering, i det att man ser data som det grundläggande att bygga en hantering runt. Skillnaden är bara att objektorienterad programmering har tagit tanken ett steg längre. Man menar att domänmodellen, i form av en datastruktur, är så viktig del av programvaran att vi även bör bygga programvarans beteende på den strukturen, vilket man gör genom att hänga på det som kallas klassmetoder på sina klasser i koden.

Det är inte bara så att Martin Fowlers bok är helt och fullt lämpad för oss som informationsmodellerar; den är också den överlägset bästa boken om mönster för informationsmodeller jag hittat.

Jag förstår att det är ett överraskande påstående, speciellt då boken inte alls är tänkt att beskriva informationsmodeller och är skriven av en person som inte ser sig som informationsmodellerare.

Objektorienterad systemutveckling var nytt

I mitten av 90-talet då Fowler skrev boken Analysis Patterns var objektorienterad programmering något nytt för de flesta. Det var något som växte fram inom en särskild community, en ny generation utvecklare. De byggde fristående applikationer för den tidens mikrodatorer, ofta PC, som stod hos ekonomi- eller HR-avdelningen. Utvecklarna hade inte så mycket erfarenhet av att utforma applikationer för de mera centrala verksamhetsfunktionerna. De byggde applikationer som inte var särskilt integrerade med företagens övriga systemmiljö, utan som användes av få personer för specifika ändamål.

Denna nya generation utvecklare hade heller inte särskilt mycket kontakt med sina äldre kollegor, det vill säga de från organisationernas dataavdelningar och som hade byggt företagsövergripande system sedan 70-talet. Det var ett slags ”fadersuppror”. Känslan var att det gamla sättet att bygga programvara var fel. Men som alltid med fadersuppror, så är man ändå mer lik sin far än man vill tillstå.

Ty objektorienterad design av programvara bygger i grunden på samma förståelse som informationsmodellering, att domänmodellen är hjärtat i programvaran. Skillnaden är bara den att informationsmodellering kom fram i ett sammanhang då den domänmodellen låg i databasen och att objektorienteringen ville se domänmodellen i programkoden. Databasen är då mer eller mindre bara en mekanism för att ” “persistera sina tillstånd från en programexekvering till nästa”.

Som jag uppfattat det så tog Martin Fowler i denna bok med sig erfarenheterna från ”vitrockarnas” värld, det vill säga de som befann sig bland stordatorerna och databaserna i företagens källarvåningar, och gjorde deras långa erfarenheter tillgängliga för den nya generationen utvecklare.
Om jag minns rätt har han sagt något i stil med:

Om du har ett problem att modellera en verksamhet av något slag, gå då till stordator- och databasutvecklarna i ditt företag så ska du se att de löst det problemet före dig.

Varför Martin Fowlers bok är så bra

Varför tycker jag att boken så bra? Jag tror att det har att göra med Martin Fowlers djupa och breda kunskaper inom hela systemutvecklingsområdet samt hans förmåga att höja sig över enskilda tekniker. Martin Fowler har skrivit många böcker och artiklar genom åren och har varit en respekterad person inom systemutvecklarvärlden i decennier. På snart sagt varje område, varje ny hajp som kommit har han varit den som sett nyktert på tekniken, sorterat ut begreppen, gjort en klok analys och givit sin syn på hur man egentligen bör se på området.

Boken Analysis Patterns är tydligt skriven. I varje kapitel tar han ett område, något som ska modelleras, och börjar med det enklaste mönstret. Sedan utvecklar han steg för steg till ett mer och mer kompetent men samtidigt mer komplicerat mönster. På så sätt tydliggörs för läsaren att man måste både välja och välja bort mönster, att det krävs omdöme att välja rätt. Det finns inte ett mönster som passar för alla tillfällen; inom varje område har man ett antal mönster att välja på, från det enklaste till det mest avancerade. Vilket man ska välja beror på vilket behov man har. När man väljer ett mönster väljer man också bort ett annat. Det sättet att presentera mönster har jag inte sett någon annanstans. Det är så mönster bör läras ut. Inte bara vilka mönster som finns utan hur man ska värdera olika mönster mot varandra, och hur man ska välja mönster för en specifik situation.

Dock är urvalet av områden högst ojämnt i boken, och återspeglar förmodligen de typer av verksamheter Fowler jobbat som utvecklare inom. Boken är på så sätt ingen välsorterad katalog av mönster. Men det minskar inte dess värde. Ett mönster inom ett område kan ofta användas inom ett annat. Bara att följa hur Fowler värderar och motiverar olika mönster ger en insikt i hur man kan tänka runt mönster när man modellerar.

Bokens innehåll

Boken har två delar. Den första delen omfattar det som Fowler kallar Analysis Patterns, och är den del som är intressant för oss som informationsmodellerar. Den kortare andra delen handlar om det som Fowler kallar för Supporting Patterns, och är mer programteknisk till sin natur och lämnas här därhän.

Första delen innehåller följande som jag ser som intressant för oss som informationsmodellerar:

Ansvarsförhållanden

Olika mönster för ansvarsförhållanden, det vill säga när en person eller organisation har ett ansvar av något slag till en annan.

Exempel: Kontaktpersoner, organisationsstrukturer, ansvarsräckvidder, befattningar.

Observationer och mätningar

Hur man ska hantera observationer och mätningar av olika slag.

Exempel: Kvantiteter, omvandlingar av värden, sammansatta enheter, mätningar, observationer av kvantiteter respektive kategorier, parallella tidsskalor, avböjda observationer, hypoteser och projektioner, sammanhörande observationer, processobservationer.

Observationer inom företagsekonomi

En enkel introduktion till modellering inom Data Warehouse/Business Intelligence.

Exempel: Affärssegment och dimensioner, mätprotokoll, komparativa och kausala mätprotokoll, planerad och aktuell status, värdemängd för mätvärde.

Objektreferenser

Ett kort kapitel om mer grundläggande modellmönster.

Exempel: Namngivning och identifiering av objektförekomster, sammanslagning, kopiering och ersättning av objektförekomster.

Bokföring och lager

Ett omfattande kapitel om mönster för bokföring, vilket inte bara fungerar för ekonomisk hantering utan för all typ av hantering av mätbara resurser, till exempel lagerhantering.

Exempel: Konto, kontotransaktioner, transaktioner över fler än två konton, summakonto, minneskonto, posteringsregler, reverserbara posteringar, olika sätt att implementera posteringsregler, olika sätt att exekvera posteringar, posteringsregler för grupper av konton, konteringspraxis, källor för posteringar, kontobalanser, korresponderande konton, specialiserade kontomodeller, bokningar till multipla konton, memo-bokningar härledda konton.

Planering

Mönster för planering och hantering av aktiviteter.

Exempel: Föreslagen och implementerad aktivitet, Slutförd respektive övergiven aktivitet, suspenderad aktivitet, plan, standardprocedur, resursallokering, start och resultat av utförande av en plan.

Handel

Mönster för handel med varor och tjänster.

Exempel: Kontrakt, Kontraktportfölj, Offert, Offertscenario.

Derivatinstrument

Mönster för handel med finansiella derivat.

Exempel: Optioner, framtidsoptioner.

Varför ska man läsa boken?

Helt enkelt för att det är den bästa boken om mönster för informationsmodeller. Klar i tanken och pedagogisk. Med detta sagt är en bok om mönster inget man sträckläser. Man behöver pausa och reflektera, och återvända när man behöver. En bok att leva med.

/Peter Tallungs, IRM

Välkommen att maila mig på peter.tallungs@irm.se eller kommentera artikelns post på IRM:s linkedin.

Vill du prenumerera på denna artikelserie? Det innebär att du får ett nyhetsbrev, samtidigt som vi publicerar en ny artikel i ämnet informationsarkitektur, med länk till den senaste artikeln. Skriv ett mail till info@irm.se med namn och e-postadress. Skriv IA-artikelserie i ämnesraden.

Peter Tallungs

23.04.06