Om mönster för informationsmodeller

”När vi gör en informationsmodell brukar vi inte börja med endast ett blankt papper och grundprinciperna inom vårt område. Precis som designers inom andra områden så tillämpar och anpassar vi lösningar som har visat sig användbara tidigare. Utvecklingen och användningen av standardlösningar (”modellmönster”) är en viktig del av informationsmodelleringens praktik.” Detta är ett citat av Graeme Simsion, den australienske författaren till en av de viktigaste böckerna om informationsmodellering ”Data Modeling Essential”.

Repertoarer av mönster

Om jag vill lära mig att spela schack lär jag mig kanske först hur brädet och de olika pjäserna ser ut, sedan hur de får lov att flyttas, därefter att vi turas om att göra våra drag och vad spelet går ut på. Detta tar inte så lång tid att lära sig. Har jag då lärt mig allt som där finns att lära? Nej, knappast, jag har knappt ens börjat! Resten av min resa inom området, från gröngöling till mästare, handlar om mönster. Inte så mycket om enskilda drag, mest om kombinationer av drag. Många kombinationer är kända och namngivna. Andra hittar jag själv fram till och kan dra ess ur rockärmen när så passar.

Det är så det går till inom i stort sett alla områden av mänsklig verksamhet. Både som kollektiv och individer har vi en repertoar av mönster som vi uppfinner, tillämpar, utvecklar och traderar.

Så har vi alltid gjort inom olika områden. Det som jag här benämner mönster kan kallas för en mängd olika saker men det har, i olika sammanhang, blivit mer vanligt att prata om just ”mönster”.

Mönster-begreppet inom informationsmodellering

Inom informationsmodellering har begreppet mönster använts och definierats på följande sätt:

  • Data Model Patterns (Dave Hay)
    ”Common situations that are present in a variety of business and government agencies, and which can be modeled in a standardized way – conventions of thought.”
  • Analysis Patterns (Martin Fowler)
    ”[in object-oriented analysis we] are regularly seeing problems repeat themselves.”
    ”A pattern is an idea that has been useful in one practical context and will probably be useful in others.”
  • Universal Patterns for Data Models (Len Silverston)
    ”The common underlying structures that are applicable to all data models.”
  • Patterns of Data Modeling (Michael Blaha)
  • Patterns and generic models (Graeme Simsion och Graham Witt)

Hur tanken om mönster växt fram och nått området informationsmodellering

Jag har tidigare gjort grafen nedan för att visualisera min tolkning av hur idén om mönster växt fram; från byggnadsarkitektur, via programvaruutveckling till informationsmodellering.

Den som först började tala om mönster i den här meningen var byggnadsarkitekten och designteoretikern Christopher Alexander. Det handlade då om byggnadsarkitektur, allt från stadsplanering till inredningsarkitektur. Hans filosofi har inspirerat många inom olika designdiscipliner, inte minst inom systemutveckling och verksamhetsarkitektur.

Viktigt om mönster

Det finns i några av idéerna formella krav på hur man ska strukturera beskrivningen av ett mönster. De härstammar från Christopher Alexanders idéer om designmönster. De är lite olika men kan se ut så här:

  • Namn
  • Det generella problemet som ska lösas
  • Den generella lösningen
  • Exempel på konkreta lösningar
  • Konsekvenser
  • Samband med andra mönster

Det som ibland har missförståtts, är att mönster inte är ett självändamål. Det var något som hände inom programvaruutveckling efter 1994 när designmönster gjorde sin entré i programmerarvärlden genom boken ”Design Patterns”. Då blev det en sport att klämma in så många som möjligt av bokens designmönster i sin kod.

Christopher Alexanders idé var att alla mönster inom ett område skulle fungera som ett språk för olika designlösningar. Han kallade det ett mönsterspråk (”Pattern Language”). Tanken är att vi tillsammans kan tradera olika lösningar samt diskutera, värdera och tillämpa dessa. Varje mönster har sina styrkor och svagheter, och passar olika bra beroende på sammanhanget. Vi ska inte bara kunna tillämpa mönster utan också välja bort ett mönster när det inte passar.

Mönster för informationsmodeller

Jag kommer i artiklar framöver att presentera ett antal mönster för informationsmodeller. En del av dessa mönster har jag lärt mig från olika böcker och sedan tillämpat i olika sammanhang. (Eller kanske glömt varifrån jag fått inspirationen. Vem kan komma ihåg var man får allt ifrån?) Jag kommer inte att vara så noga med strukturen på beskrivningen, utan min tanke är att grundligt presentera och diskutera varje mönster. I det sammanhanget kommer jag också, när det passar, ta upp andra mer grundläggande frågor runt modellering.

Syftet är att dela kunskap och erfarenheter inom informationsmodellering, samt att inspirera till en dialog runt detta. På så sätt kan vi kanske få igång en utveckling inom vårt kunskapsområde.

Källor för modellmönster

Jag har angivit några av mina källor ovan och jag kommer fortsättningsvis att försöka ange källorna för de mönster jag beskriver. Var har du hittat dina mönster? Har du något tips på en bra källa så tror jag att vi alla som läser detta blir tacksamma.

/Peter Tallungs

I och med denna artikel har vi ett sommaruppehåll. Torsdag 12 augusti kommer nästa artikel i denna serie om informationsarkitektur publiceras.

Vill du prenumerera på denna artikelserie? Registrera din mailadress här.

5 Kommentarer
  1. Marcus
    Marcus says:

    Fortsätter följa med stort intresse.
    Blir spännande att ta del av mönstertankarna. Är ganska ny inom modellering men har programmerat hela mitt yrkesliv och indirekt/omedvetet använt mig av (så gott som uteslutande egenuppfunna) mönster (vilket jag då aldrig benämnde dem som).. Känns som det finns en hel del att vinna på att göra mer medvetna val och inte bara försöka få uppgifterna lösta så fort som möjligt vilket ofta ligger i farans riktning. Avsätta tillräckligt med tid till att utveckla och underhålla verktyg för att kunna lösa uppgifter på ett effektivt och sammanhållet sätt.

  2. Peter Tallungs
    Peter Tallungs says:

    Svar till Marcus:
    Kul att du uppskattar artikelserien. Christopher Alexanders idé med mönster (som då var designmönster för byggnadsarkitektur) var att vi behöver skapa ett språk (som han kallade för mönsterspråk, ”pattern language”) för design inom ett område. Det vill säga ett antal namngivna mönster (generella lösningar för generella problem) för som vi kan dela kunskapen om och diskutera. Att ta del av olika beskrivna mönster är att ta del av erfarenheter som andra gjort inom vårt område. På så sätt bygger vi snabbare upp kunskap och erfarenhet både som individer och som yrkesgrupp.

  3. Marie Westberg
    Marie Westberg says:

    Spännande, jag tror att mönster absolut är en viktig del i hur vi ”moderniserar” informationsmodellering. Men, kopplat till din tidigare artikel om industrimodeller, kan inte dessa också ses som ett mönster som kan återanvändas i tillämpliga delar?

  4. Peter Tallungs
    Peter Tallungs says:

    Svar till Marie Westberg.
    Vilken bra kommentar. Jag tror många tänker så.
    Men jag vill påstå att dela och diskutera mönster är ungefär motsatsen till att implementera en industrimodell. Mönster och industrimodeller skiljer sig åt på åtminstone tre viktiga punkter:

    1. Mönster är generella:
    Ett mönster är en ”generell lösning på ett genrellt problem”. Det vill säga att det beskriver sådant som finns i många olika sammanhang, oavsett bransch eller typ av verksamhet. Som intressenter, ansvarsförhållanden, konton, avtal mm. En industrimodell beskriver hur man ska ordna en informationsmodell för en viss typ av verksamhet, det kan vara en bank eller ett försäkringsbolag. Den är alltså mycket mer specifik.
    2. Mönster är avgränsade:
    Ett mönster beskriver en viss aspekt av något, inte en hel lösning som en industrimodell. Du måste alltid välja och kombinera ett antal mönster för att skapa något.

    2. Mönster utgör inte någon standard
    Mönster säger ”så här KAN man göra”, inte så här SKA du göra.
    Ett mönster beskriver ett problem och hur man KAN hantera det, med styrkor och svagheter.
    En industrimodell är en standard. En industrimodell säger ”så här SKA du göra”.
    Ett mönster bara en inspiration. Mönster bildar tillsammans ett språk, så att vi kan tala om olika sätt att strukturera aspekter av en informationsmodell.

    3. Mönster säger inget om benämningar/språk för verksamheter eller data.
    Industrimodeller har tusentals termer för att ensa verksamheters terminologi. Mönster handlar över huvud taget inte om terminologi för verksamhetstermer.

    Om vi jämför sätten att jobba då man implementerar en industristandard med hur man mer friare tar fram en egen informationsmodell (med inspiration från mönster, dokumenterade eller inte) så blir det ungefär motsatsen.

    Jag vet inte om jag lyckats så väl med att beskriva skillnaden. Man kan jämföra med andra områden som husbyggnad eller matlagning. En industristandard skulle vara som att kopiera Nobel-middagen hemma mer eller mindre exakt. Att använda mönster är som att använda kunskaper som hur man gör en bechamel, eller att mousserat vin passar väl med rödbetor och chevré.

    Kanske någon annan kan förklara bättre?

Lämna en kommentar

Want to join the discussion?
Dela med dig av dina synpunkter!

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *