Historier från dataträsket del 1: Hur jag lärde mig att verksamhetsexperter inte kan allt

Jag tänker att jag i några artiklar ska berätta några historier som jag varit med om, och som man kan reflektera över. Först ut är historien om hur jag på ett ganska brutalt sätt lärde mig grunden i vad det innebär att modellera en verksamhet. Eller snarare vad det inte innebär. Hur man absolut inte ska göra.

Låt mig berätta en historia jag tänker på ibland. Det var en gråkall vårvinter i Stockholm i början av 90-talet. Jag var färsk från universitetets datalinje och hade fått mitt första jobb som systemutvecklare. Ett försäkringsföretag behövde ett administrativt system som skulle fungera som en central punkt i verksamheten. Det fanns redan färdiga informations- och processmodeller som skulle fungera som specifikation. De hade tagits fram i en serie workshops ledda av ett konsultbolag. Så nu var det bara att bygga efter ritning. Det vill säga att de var så det sades.

Men alla som varit med i branschen vet ju att sådana i förväg framtagna specifikationer är tämligen intetsägande. Vanligen är de på samma gång dels alldeles för grova och dels alldeles för detaljerade. Där de går ner lite mer i detaljer blir det nästan utan undantag fel. Orsaken är nog självklar för de flesta idag. Det går inte att i förväg specificera vad som verkligen behövs. Utveckling måste alltid vara iterativ, man måste experimentera sig fram, ställa upp hypoteser, prova vad som fungerar och modifiera alltefter man lär sig.

Men på den tiden, och även långt senare, fanns det en naiv tro på att man kunde specificera saker i förväg. Det var en hel industri, konsultbolag som tog fram hela pärmar av modeller och specifikationer. Det finns det nog fortfarande de som gör, men det är ovanligt.

Det var uppenbart för mig redan efter första dagarna att jag måste ta fram allt från grunden, inte minst en datamodell att basera databasen på. Pärmen jag hade fått i handen var inte till mycket hjälp, annat än att den i varje fall ringade in vilka områden man hade tänkt sig att man behövde it-stöd för.

Nåväl, jag satte igång med ungdomlig energi. Mest handlade det om att se vilka data som hanterades idag och vad man tyckte sig ha behov för framöver. Det gick ganska lätt. Men några begrepp hade jag svårt för. Ett av dessa var det mest centrala begreppet ”Försäkring”. Som alla vet som har sitt boende eller bil försäkrad så får man ju en ny version av försäkringen varje år. Är det då en ny försäkring eller är det samma?

Mitt första möte med en verksamhetsexpert  

När jag besvärade kontorsfolket med denna och andra frågor blev jag hänvisad till Arne, bolagets mest seniora expert. ”Arne kan allt. Han är en legendar i branschen”. Vad bra tänkte jag, nu kan jag få riktigt bra svar på mina frågor. Så här gick min intervju:

Jag: Det som löper över flera år, är det en försäkring?

Arne: Ja.

Jag: Det som jag får nytt varje år, vad är det?

Arne: En försäkring.

Jag: Men du sa ju att det som löper över flera år är det som är en försäkring?

Arne: Jo.

Jag: Men det är ju olika saker?

Arne (nu lite irriterad): Ja, men det är en försäkring.

Och så vidare. Så höll vi på ett tag. Och Arne började nu bli röd i ansiktet.

Då fick jag infallet att passa på att reda ut något annat. Nämligen vad den korrekta termen är för själva det papper man får hem som det står ”Försäkring” på. Det var ingen bra idé. Arne kallade också detta för ”försäkring”.

Nu var jag förvirrad och mina upprepande frågor och påpekanden att vi behövde skilja på de olika men närliggande företeelserna. Det fick till resultat att Arne stod och dunkade försäkringsbrev i skrivbordet, så att askkoppar och aska flög. (Jo, man rökte på kontor på början av 90-talet. Svårt att tro idag.) och upprepande högljutt: ”Det här är en försäkring. Och det här. Och det här.”

Jag lämnade Arnes flotta hörnrum med tanken att det blir nog inte så lätt i den här branschen. När inte verksamhetsexperter kan svara på de mest enkla frågor.

Varför berättar jag denna historia? Jo, jag tycker att i den finns en sensmoral. Men först måste jag bara säga vad jag så småningom lärt mig i själva sakfrågan, vad de korrekta termerna är för de företeelser som jag undrade över. För det första: Inget av det jag nämnde heter formellt sett ”försäkring” även om det används som en vardaglig term. Det man tecknar med ett försäkringsbolag är ett avtal om försäkring, ett ”försäkringsavtal”, även om ingen använder det ordet till vardags. När avtalet förnyas årligen blir det rent juridiskt sett ett nytt avtal. Men i praktiken, ur alla vanliga aspekter, ser man det som en ny version av samma avtal. Man kallar då varje version för ”försäkringsavtalsversion”, om man ska vara korrekt, men oftast bara ”försäkringsversion”. Det dokument som manifesterar avtalet kallas, som alla nog vet, ”försäkringsbrev”.

Vad jag lärde mig

Men hur var det med sensmoralen i historien? Jo, jag tänker att det jag lärde mig den hårda vägen var att när man vill analysera, förstå och beskriva en verksamhet räcker det inte med att fråga verksamhetsexperter. Man kan inte förvänta sig att experter så där enkelt och rakt ska berätta för en hur deras verksamhet fungerar. Att vara bra på en verksamhet betyder inte att man nödvändigtvis kan beskriva den på ett tydligt sätt. Jag har absolut inga tvivel på att Arne var bland de bästa på området och klart och tydligt kunde skilja på de företeelser jag frågade honom om. Men det betyder inte att han därmed kunde benämna och definiera dessa saker på ett sätt som var användbart för mitt syfte.

Det är mitt jobb, som informationsarkitekt att analysera, beskriva och benämna de begrepp som verksamheten behöver. Inte någon verksamhetsexperts. Jag måste förstås fråga och föra en dialog med olika verksamhetsexperter. Men inte bara det, jag måste forska och tänka själv också. Jag kan aldrig förvänta mig att verksamhetsexperter ska vara bra på att analysera och beskriva de begrepp de använder.

Mitt andra möte med verksamhetexperter

En tid senare, när jag tyckte att jag fått ihop en någorlunda klar databasdesign, så var det en sak som återstod innan jag kunde påbörja konstruktionen. Vi behövde bestämma detaljer som fältlängder, värdeförråd, vad som skulle vara obligatoriska termer etcetera. Jag och datachefen fick då den strålande idén att göra detta i ett stormöte. Det vill säga, vi själva var väldigt nöjda med idén. Representanter från verksamhetens alla hörn skulle få vara med och bidra med sin kunskap. Intresset visade sig emellertid vara lågt, det grymtades att man minsann hade viktigare saker att göra, viktiga kundmöten och nya avtal som man behövde få fram. Men vi trumfade igenom ett stormöte till slut, med många deltagare, allt från chefer och stjärnsäljare till sekreterare och assistenter. Vi började ställa våra frågor. Hur långt kan ett kundnamn vara? Hur stort belopp kan en försäkringspremie vara på? Måste en försäkring alltid ha provisionsprocenten angiven?

Irritationen växte i salen. Varför ska jag var med här tyckte vissa, det här är inte mitt område? Andra: ”Det här är en teknisk fråga, jag har bättre saker att göra”. Varje fråga möttes av vilda gissningar, ointresse, och ifrågasättande av om detta var deras sak. Folk började droppa av. Det gick så långt att vi fick avbryta.

Vad jag lärde mig denna gång

Vad var sensmoralen denna gång? Jo, densamma. Verksamhetsfolk kan inte allt, kan inte i detalj veta vad de behöver, har inte alltid rätt. Och bryr sig ofta inte ens. Verksamhetsexperter är inte kunniga på alla aspekter på sin verksamhet. Det är jag som verksamhetanalytiker som måste använda olika metoder och källor och rätt avväga och räkna ut hur saker hänger ihop.

Då det gäller så enkla saker som, fältlängder och existensregler för olika fält är det enklast att tröska igenom befintligt data efter extremvärden.

Jag tänker ibland på dessa händelser. Jag var oerfaren och naiv. Fast hur skull jag kunna veta att experter inte kan ge vettiga svar på frågor inom sitt område? Just dessa aspekter var ju inte deras område förstås. Borde jag ha förstått det i förväg? Kanske inte, men jag borde i varje fall ha varit mer uppmärksam när jag fick tecken på att så inte var fallet. Inte vara lika envis och mer eller mindre kräva att de skulle kunna svara. Idag hoppas jag att jag är mer ödmjuk när det gäller förväntningar på vad andra ska kunna, även sådana som är experter. Det hela kokar ner till att verksamheter är komplicerade ekosystem och ingen kan vara expert på alla aspekter av något så mångfacetterat.

Jag tycker att det illustrerar något grundläggande om kunskap och hur vi finner den. Vi ska fråga, fast inte förvänta oss att alltid få de svar vi behöver ha. Kanske du tycker att denna historia visade något du redan vet. Och det hoppas jag. Men i så fall kan den kanske tjäna som en påminnelse om vilken naiv bild andra kan ha av vad vi gör, vi som jobbar med modellering, att vi bara frågar och tecknar ner vad experter säger.  

/Peter Tallungs, IRM

Nästa artikel i serien publicerar vi torsdag 7 april. Vill du prenumerera på denna artikelserie? Registrera din mailadress här.

PS Vi har tyvärr varit tvungna att ta bort möjligheten att kommentera på artiklarna för en tid. Har du tankar om innehållet i artikeln som du vill dela? Välkommen att kommentera på vår linkedin där lägger vi ut en post vid varje publiceringstilfälle. Eller skicka ett mail till Peter Tallungs: peter.tallungs(at)irm.se

Informationsmodellering: Hur vi kan namnge relationer

Jag vill ge ett alternativ till den vanliga principen för att namnge relationer mellan entiteter i informationsmodeller. Syftet är att namnen ska överensstämma med namnen för de verksamhetsbegrepp som relationerna representerar. Vi får därmed en spårbarhet från relationerna i våra informationsmodeller till termer i verksamheten och i informationssystemen.

Den vanliga principen för namngivning

Det vanliga är att namnge relationer så att relationsnamnet tillsammans med entitetsnamnen blir mer eller mindre en verbal mening som går att uttala.
I exemplet till höger blir det ”Beställning läggs av Kund”. Det är tänkt att hela ER-diagrammet då blir läsbart som ett antal verbala uttryck. Det är en fördel, speciellt då det gäller ovana läsare av ER-diagram, och i varje fall då det gäller enklare diagram, det vill säga där man bara har ett antal entiteter och relationer och inga attribut.

Men jag menar att den principen för namngivning också har ett antal nackdelar, och att dessa tillsammans vida överskuggar fördelen. Jag beskriver problemen i det följande.

Problem 1: Namnen blir ofta intetsägande verb

Det blir ofta nästan omöjligt att undvika att relationsnamnen blir intetsägande verb som ”har”, ”tillhör”, ”är”. När vi talar så har dessa allmänna verb en funktion, men de kan aldrig fungera som verksamhetbegrepp. De beskriver inte vad relationen står för, i detta exempel vilken roll en kund har i en beställning. En relation har alltid en mening. De namn vi ger saker och ting bör uttrycka den meningen så klart och tydligt som möjligt.

Problem 2: Namnen uttrycker ofta handling

Om man vill undvika de mest allmänna verben, se ovan, så blir relationsnamnen ofta i stället verbsatser som uttrycker någon form av handling i tiden, som ”läggs av” i exemplet ovan. Problemet med sådana namn är just det att de uttrycker handling, det vill säga en process. Det fungerar inte så bra i en informationsmodell, som ju ska vara processneutral. Modellen ska bara uttrycka vilken information som kan finnas, inte hur den skapas.

Alla beställningar har en beställare, men så snart beställningarna finns så är beställningarna redan lagda. ”Läggs av” är historia, det var något som skedde någon gång, i det ögonblick beställningen gjordes. Det gör att informationsmodellen får drag av process, vilket är falskt. ”Lagd av” vore mer korrekt i så fall, men är ändå inte bra, eftersom det mer talar om hur relationen skapades än vad den innebär.

Problem 3: Namnen blir inte verksamhetstermer som kan användas i andra sammanhang.

Den kund som lagt en beställning är ”Beställare” på beställningen. Det är en egenskap hos en beställning. En relation är således alltid en egenskap hos en entitet samt också ett verksamhetsbegrepp som bör definieras, beskrivas och normeras. Det är det vi har informationsmodellens textdel till. Och där kan egenskapen inte heta ”Läggs av” eller ”Har”. Knappast heller ”Kund” eftersom det namnet bara uttrycker vilken klass av objekt som utgör värdeförråd för egenskapen, och inte vad relationen har för mening.

Sedan ska relationen realiseras i olika sammanhang. Den kanske blir en; databaskolumn, variabel i programkod, fält i en fildeklaration, ruta i användargränssnitt eller term i en rapport? Då, om inte tidigare, behöver vi ett tydligt namngivet, definierat och normerat verksamhetsbegrepp. Detta är enligt min mening informationsmodellens jobb. Precis som vi gör med entiteter och attribut. Då fungerar termen ”beställare”, men knappast de intetsägande namnen man ofta ser i informationsmodeller.

Vad vi vill med namngivning

Vi kan tänka efter vad vi egentligen vill med namnen, vad som är ett bra namn. Ett namn ska förstås vara så korrekt och tydligt som möjligt men också så användbart som möjligt. Det innebär att det ska fungera i så många olika sammanhang som möjligt, det vill säga alla de sammanhang som informationsmodellen kan komma att användas i. Man brukar ibland uttrycka det som att informationsmodellen ska vara process-agnostisk, det vill säga inte ha något spår av hur företeelserna kommer till eller hanteras, bara att de finns och vad de har för mening.

Jag tycker att det är viktigt att våra modeller, blir användbara som underlag för implementationer av informationssystem av olika slag. Det kan vara databaser, programkod, filer, meddelandescheman, användargränssnitt, api:er, rapporter med mera. Vi normerar ett språk för allt det som hanteras och presenteras. Då gäller det att de namn vi väljer blir så användbara som möjligt. Men då måste vi ha en namngivning som är så pass användbar att den verkligen fungerar i skilda sammanhang.

Men jag vet att det finns en mer traditionell uppfattning som säger att det inte är något värde att försöka tillämpa samma namngivning i informationsmodeller som i fysiska sammanhang. Man ser det som olika världar som ska hållas isär. Vi gör konceptuella modeller och bryr oss inte alls om det ”tekniska”, säger man. Man är alltså inte bekymrad för om informationsmodellen säger något om den fysiska verkligheten, eller ens om den är användbar i praktiska sammanhang.

Jag är av motsatt åsikt. Jag menar att vi så lång det går bör jobba ihop, tvärs över alla roller i organisationen och så långt det går ha gemensamma modeller. Det är ju det modeller är till för, att ge oss en gemensam bild, en gemensam förståelse att jobba med och att utveckla tillsammans.

Nyckeln är ”så långt det går”. Det kommer alltid att finnas skillnader mellan modeller och det modellerna används till, men låt oss sträva efter att hålla dessa så små som möjligt. Detta är en princip som kommer från den filosofi som heter ”domändriven design”, och som jag tycker är helt avgörande för vilken nytta våra modeller ska kunna ge. Jag har skrivit om detta synsätt i många tidigare artiklar.

Mitt förslag till namngivningsprincip

Mitt förslag är en namngivning som jag tillämpat i ett par decennier och som jag tycker fungerar bra.

En relation är egentligen inget annat än en egenskap hos en entitet. Närmare bestämt en egenskap som innebär att entiteten har en relation till en annan entitet. Man kan också uttrycka det som att egenskapen har ett värdeförråd (en värdedomän) som definieras av den andra entiteten, det vill säga den klass av företeelser som den andra entiteten representerar. I exemplet, som är genomgående i denna artikel, är det Beställning som har egenskapen ”Beställare”, som enligt ER-diagrammet är en obligatorisk egenskap och som har ett värdeförråd (möjliga värden) som är mängden av alla kunder.

Allt det vi behöver definiera och beskriva för övriga attribut behöver vi också beskriva för de attribut som manifesterar relationer, såsom namn, synonymer, beskrivningar, värdeförråd, format och regler. Varför ska vi då behandla relationer på andra sätt än andra attribut?

Låt oss se hur det blir när vi beskriver detta med hjälp av attribut.
Namnet på attributet skulle jag skriva ”Beställare – Kundnummer”. Ofta blir namnet lite mer specifikt än vad relationen heter. Vi vill ju kunna säga att i detta fall är det beställarens kundnummer som är egenskapen.
En del kanske tycker att man kan utelämna suffixet ”Kundnummer”. En främmande nyckel ska ju ändå alltid peka på primärnyckeln i den entitet den pekar på. Men jag föredrar att ha med det ändå. Man kan inte vara nog tydlig. Det kan ju också finnas till exempel ”Beställare – Namn”.

Nu har vi fått en tydlig spårbarhet mellan diagram och de attribut man beskriver i textdelen av modellen.

Det finns de som reagerar på det osköna i redundansen i detta sätt att göra, det vill säga att samma sak beskrivs två gånger, en gång som relation och en gång som attribut. Att en beställning har en kund som beställare beskrivs både med relationslinjen och med attributet. Man kan då undra om det är samma sak eller inte. Jag förstår invändningen, men menar att den väger lätt. Jag tycker att det är ett pris värt att betala, bara man är tydlig med namngivning och beskrivning.

Namngivning enligt databasstandard

Det finns en annan princip för namngivning av attribut som manifesterar relationer som man ofta stöter på och därför är värd att nämna. Det är det namnskicket som är vanligt i databassammanhang. I en traditionell databas är ju en relation manifesterad som en databaskolumn, vilken är en främmande nyckel, det vill säga den innehåller värden som återfinns som primärnyckel i en annan tabell. Då brukar man ge den kolumnen samma namn som den tabell och kolumn den pekar på. I exemplet ovan skulle då attributet heta Kund.Kundnummer. Fördelen för databasdesigners är att detta namnskick underlättar så att man automatiskt kan hantera relationer. Fast jag tycker att det namnskicket inte passar för en bredare användning. Man säger visserligen att kolumnen innehåller ett kundnummer men det viktigaste tycker jag ändå är att uttrycka relationens mening.

Relationers riktning

Inom traditionell data- och informationsmodellering har relationer inte någon riktning. Det beror på att informationsmodellering har ett ursprung i relationsdatabasdesign. I en relationsdatabas kan en relation traverseras i vilken riktning som helst, till exempel med frågespråket SQL. Däremot så har relationsnamnet alltid en viss läsriktning, det vill säga namnet är tänkt att läsas från en bestämd entitet till den andra. Man kan dock lika gärna behöva sätta ett namn med motsatt läsriktning. Eller ha två namn, ett åt vartdera hållet. Det finns de som förespråkar det.

Men så fungerar inte alla modelleringsspråk. I klassmodeller i UML är det annorlunda, därför att UML ursprungligen är framtaget för att strukturera objektorienterad programkod. Där har relationer alltid en bestämd riktning. Om man i programkod vill kunna traversera i båda riktningarna behöver vi skapa två relationer, en för vardera riktningen.

I programkod, liksom i olika språk för datascheman, är det dessutom vanligt att relationer går åt hållet från en till många. I programkod skulle förmodligen en kund ha en kollektion av pekare till de beställningar kunden är beställare på.

Allt detta gör att det är viktigt att vi pekar ut riktningen för våra relationer, vare sig det rör sig om att relationen verkligen har en bestämd riktning eller det handlar om läsriktning för det namn vi väljer att ge den. Jag gör det med en liten fylld pilspets som i exemplet.

En annan fördel med en sådan pilspets vid relationsnamnet ges exempel på här till höger. Ibland har man många relationslinjer som går ut vertikalt från en entitet. Då kan en sådan pilspets tydligt markera vilket namn som hör till viken relationslinje. Se de relationer som går vertikalt uppåt från entiteten ”Card Activity”.

Låt oss diskutera och utveckla vårt område!

Allt detta är förstås bara mina egna erfarenheter och åsikter, inte en slutgiltig ”sanning”. Men det är något vi borde diskutera och utveckla. Jag har saknat en sådan dialog. Det är därför jag skriver dessa artiklar.

/Peter Tallungs, IRM

Nästa artikel i serien publicerar vi torsdag 31 mars. Vill du prenumerera på denna artikelserie? Registrera din mailadress här.

PS Vi har tyvärr varit tvungna att ta bort möjligheten att kommentera på artiklarna för en tid. Har du tankar om innehållet i artikeln som du vill dela? Välkommen att kommentera på vår linkedin där lägger vi ut en post vid varje publiceringstilfälle. Eller skicka ett mail till Peter Tallungs: peter.tallungs(at)irm.se

Informationsmodellering: Om struktur i flera nivåer

I en informationsmodell med många ämnesområden har vi ett behov av att gruppera dessa i större områden. Det vill säga att etablera en övergripande struktur för modellen. Sedan finns det också ofta ett behov av att dela in ett enskilt ämnesområde i mindre avsnitt. På så sätt kan vi strukturera en informationsmodell i flera nivåer. Denna artikel visar hur vi kan gestalta denna struktur grafiskt i ett ER-diagram.

Gruppering av ämnesområden

Låt mig visa ett exempel, se bild I. Detta är ett utsnitt av ett ER-diagram som är en översikt av en större informationsmodell, vilken omfattar en hel verksamhet. Modellen som helhet har ett femtiotal ämnesområden. Förutom det översiktliga ER-diagrammet finns det ett detaljerat ER-diagram och detaljerade textuella beskrivningar för varje ämnesområde.
Du kan läsa mer om ämnesområden i artikeln Informationsmodellering: Om ämnesområden

För att få till en övergripande struktur räcker det inte med ämnesområdena. Det finns ett behov av en mer övergripande struktur. För detta skapade vi femton övergripande områden med upp till kanske sex-sju ämnesområden i varje.

Lägg märke till hur vi har gestaltat denna indelning grafiskt. Varje sådan grupp av ämnesområden bildar en egen avgränsad rektangel i ER-diagrammet, med extra luft runt och en rubrik över. För att tydligt ringa in varje grupp har vi gjort en bred grå linje över gruppen, på vilken grupprubriken är skriven. Linjen spänner över hela bredden på gruppen för att tydligt markera vilka ämnesområden som ingår i gruppen. Även grupprubriken är grå, för att den inte ska framhävas lika mycket som entiteterna.

Det är viktigt att både rubrik, definition och rubriklinje är gjord i en mörkgrå färg, i likhet med ämnesområdets rubrik. Det gör att hela den underliggande strukturen hamnar på ett mentalt plan som är mindre framträdande, för att inte förvirra vårt mönstersökande synsinne. Det gör att entiteterna och deras relationslinjer framhävs i förhållande till strukturen. Allt detta gör modellen tydligare. 

Det vanligaste sättet att gruppera saker i flera nivåer i en graf brukar annars vara att rita rutor i rutor. Men det bör vi undvika. Det blir svårare att överblicka. Förmodligen för att hjärnan hela tiden söker mönster, och om rutor ibland kan vara entiteter och ibland ämnesområden och ibland grupper av ämnesområden så går en del mental kapacitet åt till att hela tiden försöka skilja mellan dessa. Synsinnet belastas ju mycket av att leta mönster bland myllret av synimpulser och försöka ge dessa mening. Vad hör ihop med vad? Vad är parallella företeelser? Vad är viktigast? Låt oss då hjälpa till, genom att göra de mönster vi vill förmedla visuellt tydliga, och låt oss avstå från sådant som förvirrar.

Bild I Exempel på gruppering av ämnesområde

Vi har lagt till en definition under, eller efter, grupprubriken när vi tyckt att det behövts, skrivet med ett mindre typsnitt. Detta har vi gjort med ämnesområdenas rubriker också, liksom med entiteterna.

Vi älskar definitioner! Inget skapar så mycket förvirring och tveksamhet helt i onödan, som en modell utan definitioner. Ett namn kan stå för lite av varje, och ofta är man osäker på vad den som gjort modellen har tänkt sig. Definitioner i ER-diagrammet ger läsaren en betydligt bättre chans att förstå.

Att skriva definitioner tvingar mig som modellerare att tänka igenom vad jag egentligen menar, och hur det kan uttryckas tydligt. Vilket ofta leder till att jag för mig själv reder ut inkonsekvenser och oklara tänkesätt. Esaias Tegnér sa det väl: ”Det dunkelt sagda är det dunkelt tänkta”. När vi tvingas att uttrycka våra uppfattningar tydligt, till exempel genom att tydligt definiera våra modellelement så som entiteter, ämnesområden, attribut och relationer, blir vi nödgade att tänka klarare och tydligare. Jag kommer i en senare artikel att berätta om vad en bra definition är och vad den inte är.

Gruppering i två dimensioner

Ibland finner man att man att det vore bra att strukturera sin modell i två dimensioner. Då kan man ordna ämnesområdena i rader och kolumner med rad- och kolumnrubriker. Se exempel bild II.

Bild II Exempel på gruppering av ämnesområde i två dimensioner

Gruppering inom ämnesområden

Vanligen finns det även ett behov av att gruppera entiteter inom ett ämnesområde. Det underlättar ofta läsningen och förståelsen av modellen.

Då använder jag ett liknande sätt att rita som för grupper av ämnesområden. Det vill säga att jag skapar en rubrik på en bred horisontell linje där linjen dras ut så den tydligt markerar vad gruppen omfattar. Det som omfattas är alltid en eller flera entiteter men kan även inkludera andra modellelement. Se bild III.

Bild III Exempel på gruppering av entiteter inom ett ämnesområde

Viktigt att vi identifierar och gestaltar meningsfulla strukturer

Jag menar att det är viktigt att vi identifierar meningsfulla strukturer i vår verksamhetsdomän, samt att vi gestaltar dessa i vår modell. På så sätt kan vi skapa en mer tydlig gemensam karta över vår data-/informationsresurs, de företeelser som hanteras och vår verksamhetslogik. Detta har ett stort värde för vår gemensamma förståelse och lärande, och därmed för verksamhetens hela hantering och utveckling.

Varning för övertro på industrimodeller.

Men se upp för att använda en generell struktur för alla verksamheter du stöter på. Det har många gånger gjorts försök i olika branscher att skapa generella strukturer som fungerar för en hel bransch. Men det är omöjligt att bedöma om en sådan struktur skulle fungera för ens egen verksamhet innan vi ens har förstått och kommit överens om vår egen struktur. Ty varje typ av verksamhet har sin egen struktur. Till och med verksamheter i samma bransch har ofta ganska olika sätt att hantera saker. Det kan bero på att de har lite annorlunda gränsdragning mot partners eller leverantörer. Eller att deras produkt- eller tjänstestruktur är annorlunda uppbyggd.

Tyvärr ser man ofta en övertro på så kallade industrimodeller. Man har grovt generaliserade strukturer för en hel bransch, och försöker tvinga alla i samma mall. Det skulle kanske fungera någorlunda om man såg till att förstå sin egen verksamhet på djupet, och i detalj, där det trixiga gömmer sig. Det vill säga om man modellerade först. Men det var ju det man hoppades slippa genom att köpa in en industrimodell.

Dock finns det mönster som återkommer både inom branscher och också tvärs över olika branscher. Men det är något annat. Det är sådant vi ska hålla utkik efter. Det är ett spännande och outforskat område som det skulle vara intressant att gräva mer i. Men det är inte alls samma sak som att tro att man bara kan applicera en industrimodell för sin egen verksamhet.
För att läsa mer om problemet med industrimodeller se artikeln: ”Varför en industrimodell är en dålig idé”

Hur gör du?

Nu har jag berättat hur jag gör för att strukturera modeller. Berätta gärna hur du gör. Kanske kan vi lära oss mer tillsammans? Hör av dig via LinkedIn eller mejl, peter.tallungs@irm.se.

/Peter Tallungs, IRM

Nästa artikel i serien publicerar vi torsdag 24 mars. Vill du prenumerera på denna artikelserie? Registrera din mailadress här.

PS Vi har tyvärr varit tvungna att ta bort möjligheten att kommentera på artiklarna för en tid. Har du tankar om innehållet i artikeln som du vill dela? Välkommen att kommentera på vår linkedin där lägger vi ut en post vid varje publiceringstilfälle. Eller skicka ett mail till Peter Tallungs: peter.tallungs(at)irm.se

Informationsmodellering: Om ämnesområden

En informationsmodell blir tydligare om man delar in den i områden. Men vad ska vi kalla dessa områden och hur ritar vi dem i ER-diagrammet? I denna artikel går jag igenom de olika benämningarna jag stött på samt olika sätt att rita dem.

Hur ska vi benämna dessa områden?

Många informationsmodellerare har förstått att det är en stor fördel att dela in sin informationsmodell i områden som sedan kan beskrivas var och en för sig. Det verkar också finns en samsyn om hur en sådan uppdelning kan ske. Dock förekommer det olika benämningar för dessa områden och även olika sätt att markera dem i ett ER-diagram.

Jag kallar dessa områden av en informationsmodell för ”ämnesområden” (Subject Areas).Det är en benämning som är vanligt förekommande.

I det följande visar jag på två synonyma benämningar som man kan stöta på, samt motiverar varför jag tycker de är mindre lämpliga.

Synonym 1: Entitetsgrupp eller objektgrupp (Entity group)  

Det är sant att de områden vi pratar om innehåller entiteter (eller om man vill kalla dem för objekt), men de innehåller mer än så. Om man gör en mer utförlig informationsmodell så innehåller den mer än det som kan hänföras till en specifik entitet, som vissa verksamhetsregler med mera. Jag vill gärna att vi lämnar uppfattningen att en informationsmodell bara är en grupp entiteter, därav är jag inte riktigt bekväm med namnet.

Synonym 2: Informationsområde (Information Area)

Jag tror att tanken med den benämningen är att man vill dela in hela mängden av information i en verksamhet i olika områden, och att man vill avspegla detta i den verksamhetsövergripande informationsmodell man tar fram. Men det finns enligt mig två skäl till att den benämningen inte riktigt fungerar:

1.  Det är inte alla informationsmodeller som omfattar en hel verksamhet. En informationsmodell kan till exempel beskriva informationsinnehållet i en tjänst.
Även en sådan behöver delas ner i hanterbara delar. Då känns det fel att prata om informationsområden, om man med det menar områden som spänner över en hel verksamhet. Ämnesområden är på det sättet en mer neutral benämning menar jag.

2.  Jag menar att en informationsmodell, trots sitt namn, beskriver mer än information. Mycket mer! Inte minst definierar och beskriver den de företeelser som informationen representerar, det vill säga de egenskaper som verksamheten behöver hålla reda på hos de företeelser som hanteras. Det kan vara kunder, beställningar, avtal mm. Dessutom beskriver informationsmodellen ofta verksamhetsregler för dessa företeelser, samt att informationsmodellen beskriver benämningar och definitioner för dessa egenskaper, det vill säga beskriver och normerar ett verksamhetsspråk. Allt detta är mer än att beskriva verksamhetens information, mer då att beskriva verksamhetens domän som helhet.

Helst skulle jag se att vi hittade ett bättre namn än informationsmodell, förslagsvis domänmodell. Men namnet informationsmodell är nog alltför invant. Men låt oss i varje fall inte försvåra det hela genom att fortsätta envisas med att påstå att en informationsmodell bara beskriver information. Vi har nu ett val att betona det bredare perspektivet.

Jag vill således pusha för benämningen ”ämnesområde” (subject area). Det avspeglar tydligare den mening jag vill lägga i begreppet.

Du kanske har en annan uppfattning. Jag är intresserad av din synpunkt. Hör av dig via LinkedIn eller mejl.

Hur ritar vi ut ämnesområden i ER-diagrammet

Jag har sett lite olika sätt att markera ämnesområden i ett ER-diagram. I det följande presenterar jag dessa och ger min mening om vilket sätt att rita som är bäst.

Alternativt ritsätt 1: Sammanhängande rutor

Det är vanligt att man delar in ytan i ER-diagrammet i sammanhängande rutor på sättet som visas i bild I nedan. Jag menar att det finns en nackdel med detta. I lite mer omfattande modeller behöver man nästan alltid dra relationslinjer mellan två ämnesområden som i diagrammet ligger långt från varandra. Då blir man tvingad att dra linjen över ett mellanliggande ämnesområde, ett som inte alls är inblandat i relationen. Man ”genar över grannens tomt”. Jag tycker inte att det är så snyggt. Det är bättre att hålla varje ämnesområde rent från saker som inte hör till detta. Vi behöver således neutrala tomrum, ”ingenmansland” mellan ämnesområdena, stigar där vi kan låta linjer löpa. 

Bild I: Ämnesområden gestaltade som rutor, utan mellanrum

Alternativt ritsätt 2: Sammanhängande olikfärgade rutor

Ibland ser man att man ger ämnesområdena olika färger, bild II. Det ger måhända en dekorativ effekt, men färgerna har faktiskt ingen funktion. De förmedlar ingen information alls. Det finns en grundläggande minimalistisk princip när man gör en design som är till för att förmedla information, till exempel ett diagram av något slag. Varje grafiskt element eller effekt man använder ska förmedla någon information. Allt annat ska man rensa bort. Detta diagram bryter mot den principen. Dessutom är just det att använda färg på detta sätt ett slöseri med uttrycksmedel. Färg är mycket användbart till vissa ändamål och bör därmed sparas till då det verkligen behövs och gör nytta, och inte slösas där det inte gör nytta. Vi har ju endast en handfull färger att tillgå, kanske fem, om de ska skilja sig tydligt från varandra. Spar då dessa till där de verkligen behövs.

Bild II: Ämnesområden gestaltade som färgade fält

Alternativt ritsätt 3: Olikfärgade entitetsrutor

Ibland ser man olikfärgade entitetsrutor, bild III. Jag förstår tanken, men samma här. Onödig dekor. Spara färgeffekterna tills de verkligen behövs. Dessutom behöver man då en särskild förklaring till färgernas betydelse, vilket är en nackdel.

Bild III: Ämnesområden sedda som typer av objekt kodade med färger

Alternativt ritsätt 4: Rutor med mellanrum

Här har vi rutor med mellanrum för ämnesområdena, bild IV. Det är i grunden samma struktur som de grå ytorna jag förespråkar, se Alternativt ritsätt 5 nedan. Men det finns en skillnad. Vi får på detta sätt rutor i rutor, Syncentrum i hjärnan försöker hela tiden hitta mönster, och därmed mening, i den myriad av synimpulser som kommer in via ögonen. Och hjärnan får faktiskt ett litet sjå att hela tiden skilja på vilka rutor som är entiteter och vilka som är ämnesområden. Det kanske verkar petigt, men så är det faktiskt. Det går att visa med experiment, och jag tror också att vi kan uppfatta detta fenomen om vi verkligen jämför. Den negativa effekten minskar om man till exempel gör kantlinjerna streckade eller ger dem en annan färg. Men inget går upp mot att få hjärnan att helt undvika att uppfatta ämnesområdena som rutor.

Bild IV: Ämnesområden gestaltade som rutor med mellanrum

Alternativt ritsätt 5: Grå rektangulära ytor

Här är ämnesområdena representerade av grå rektangulära ytor, bild V. Det är alltså det ritsätt jag förespråkar. De grå ytorna med mellanrum hamnar mentalt på ett bakgrundsplan i den mönsterigenkänning som syncentrum ägnar sig åt. De grå ytorna blir därmed grafiska element som faktiskt inte tillför komplexitet till grafen utan löser upp komplexiteten. Det går lätt att demonstrera på följande sätt; I Microsoft Visio kan man lägga de grå bakgrundsytorna i ett eget lager som man sedan kan dölja med en knapptryckning. Då händer följande; Så snart jag trycker bort bakgrundsytorna så upplever jag att min blick börjar flacka och det känns att hjärnan börjar jobba med att få ihop bilden. Detta trots att diagrammet är enkelt, och trots att diagrammet är tydligt strukturerat. Och trots att jag själv har gjort det och är väl förtrogen med det. Visst är det fascinerande! Vi behöver alltså denna bakgrundstruktur för att skapa mening och sammanhang. Och det behöver upplevas som just en bakgrund, vilket det gör om vi gör dessa grå ytor.

Bild V: Ämnesområden gestaltade som grå bakgrundsfält

Tips om hur man ritar

I det följande ger jag några tips om hur man ritar dessa grå ytor för ämnesområden.

Tips 1: Låt de grå ytornas ytterkanter tillsammans bilda en rektangel

Det kan betyda att man får göra ett ämnesområde mycket större än det annars skulle behöva vara för att rymma entiteterna. (som i ämnesområdena Kunder och Beställningar). Skälet är inte endast, som man skulle kunna tro, att det ska se prydligt ut, utan det är betydligt viktigare än så. Hjärnan letar som sagt efter mönster. Om ytornas kanter följer samma linjer uppfattar syncentrum det som att det inte finns något signifikant mönster att tyda i placeringen av ytorna. Då blir det en kognitiv avlastning för syncentrum som hela tiden jobbar för att hitta mening i de signaler som mottas.

Tips 2: Placera ämnesområdena i en logisk ordning

Vad en logisk ordning innebär kan vara mycket olika beroende på vad modellen representerar. Om den representerar företeelserna i en verksamhet så har olika typer av verksamheter olika inneboende logik och ordning. Det här är ett viktigt och outforskat ämne som vi kan diskutera mycket mera.

Den grundläggande principen är att företeelser som ligger nära varandra i verksamheten ska vara nära varandra i diagrammet. Vad nu detta innebär? Jag försöker alltid ge diagrammet någon slags geografi, att upp, ner, höger och vänster ska betyda något. I exemplet i denna artikel tänker jag så här. Vi har kunder. Vi har produkter. De är grundläggande företeelser som finns där, och som vi sedan knyter ihop. Det blir då naturligt att det som knyter ihop finns mellan det som knyts ihop. Hopknytandet sker från produkt-sidan av att vi paketerar produkter i produktpaket som vi kan erbjuda våra kunder. Sedan lägger kunder beställningar.

Effekten blir att närliggande företeelser hamnar nära varandra och företeelser som ligger lång från varandra inte är så tätt relaterade till varandra. Och att företeelser som i något avseende är parallella i förhållande till varandra ligger parallella i diagrammet. Och så vidare.

Hur vi strukturerar modeller är ett stort, viktigt och spännande ämne som vi behöver återkomma till. Det har hittills nästan inte alls beaktats i vårt skrå. Ofta ser man diagram där den enda principen verkar vara att entitetrutorna och relationslinjerna ska vara snyggt och jämnt utplacerade. Det är att nästan inte alls utnyttja grafikens möjligheter.

Tips 3: Ge ytorna en mycket ljus grå färg

Jag brukar använda den ljusaste grå standardkulören i Microsoft Visio. Det är viktigt för att behålla en hög kontrast mellan det som ritas på ytorna och ytorna som utgör bakgrund.

Tips 4: Ge kantlinjerna en grå färg som är ett steg mörkare än ytorna

Skillnaden i färgstyrka mellan en grå yta och det vita mellanrummet är mycket liten när man har en ljus grå färg. Det gör att kanten uppfattas som oskarp av hjärnan. Om man då lägger en tunn linje i kanten som ramar in den grå ytan med en lite mörkare kulör upplever man kanten som skarp trots att man inte uppfattar att där finns en linje. Men observera att kantlinjen bara ska vara ett steg mörkare, samt mycket tunn. Annars uppfattar man fältet som en ruta i stället, vilket ju var precis det man inte ville. Det här är ett knep som grafiker använder.

Tips 5: Ge ämnesområdena namn

Ämnesområdena behöver ha beskrivande namn för att vi ska kunna referera till dem och förstå deras betydelse. Det är bra om man i möjligaste mån kan undgå att ge dem samma namn som någon entitet, för att vi ska kunna undvika förväxling. Om det bästa namnet jag kan hitta ändå blir samma som den viktigaste entiteten i ämnesområdet, skriver jag det i plural för att skilja det.

Tips 6: Skriv ämnesområdenas namn i mörkgrå fetstil

Skriv namnen på ämnesområdena med ett större typsnitt och i fetstil. Använd en mörk grå färg till typsnittet så det blir tydligt för hjärnan att namnet hör till bakgrundsskiktet i diagrammet.

Tips 7: Se till att relationslinjernas etiketter hamnar rätt

En relation hör alltid till ett ämnesområde. Man bör visa vilket ämnesområde en viss relation hör till genom att man placerar etiketten i fråga inom rätt ämnesområde. ”Beställare” är en egenskap hos en beställning. Därmed hör den relationen till ämnesområdet Beställningar. Men det skulle kanske vara lika rätt att se det som att det är ”Kund” som har ”Beställningar”. I så fall ska vi ha etiketten ”Beställningar” i ämnesområdet Kunder. I vissa fall vill vi ha båda riktningarna markerade.

Allt inom grafisk design handlar om att hjälpa hjärnan på traven, genom att utnyttja det den är bra på, och undvika att gillra fällor för dess mönsterigenkänning. Om vi lär oss det så blir våra modeller otroligt mycket bättre.

/Peter Tallungs, IRM

Nästa artikel i serien publicerar vi torsdag 17 mars. Vill du prenumerera på denna artikelserie? Registrera din mailadress här.

PS Vi har tyvärr varit tvungna att ta bort möjligheten att kommentera på artiklarna för en tid. Har du tankar om innehållet i artikeln som du vill dela? Välkommen att kommentera på vår linkedin där lägger vi ut en post vid varje publiceringstilfälle. Eller skicka ett mail till Peter Tallungs: peter.tallungs(at)irm.se

Tio tips för bättre gestaltning av en informationsmodell

Jag ger här några enkla tips om hur du kan göra dina informationsmodeller tydligare. Tipsen förändrar inte modellen i sig, det vill säga vad modellen säger, utan endast hur den säger det den säger.

I min föregående artikel ”Vi kan göra bättre modeller – Om gestaltning med grafik och text” påstod jag att vi kan göra modeller som bättre förmedlar allt det vi vill förmedla. Jag planerar en rad artiklar om detta. Som en rivstart kommer här en liten guide med tio praktiska tips på hur du på ett enkelt sätt kan få dina modeller att bli tydligare.

Startläget

Bild I. Före alla ändringar

Tänk dig att du har följande ER-diagram, se bild I. Tänk dig också att du är nöjd med vad diagrammet visar. Det är precis så du vill uppfatta de företeelser som hanteras i den domän du beskriver. Det vill säga följande:

  • Man har kunder som kan lägga beställningar av färdiga paket av produkter.
  • En beställning kan avse ett eller flera produktpaket, där man också väljer hur man vill ha respektive paket förpackat.

Jag tycker egentligen inte att detta ER-diagram är uppseendeväckande dåligt. Jag har sett värre. Men ändå, jag menar att det finns utrymme för förbättring.

Jag ska visa hur vi med enkla medel kan förbättra diagrammet, steg för steg. Vi ändrar inte själva modellen, det vill säga det som modellen uttrycker, vilka företeelser som hanteras och hur de är relaterade till varandra. Resultatet blir i varje steg samma modell fast med en ny gestaltning.

Steg 1: Identifiera och rita ut ämnesområden för att ge modellen en geografi

En modell blir mer begriplig om man delar in den i olika ämnesområden. Ett ämnesområde är en del av en modell med företeelser som hör samman på något sätt, och gärna beskrivs tillsammans.

När jag får ett ER-diagram i min hand så är alltid det första jag gör att försöka ringa in olika delar av diagrammet så att varje del bildar en sammanhängande helhet av saker som hör ihop. I denna modell tycker jag att Beställning och Beställningsrad hör tätt ihop eftersom beställningsrader är delar av en beställning. Sedan tycker jag att Produkt, Produktpaket och Förpackningsalternativ hör samman eftersom de tillsammans utgör det som kunder kan beställa. Till sist får Kund bli ett eget område. (Bild nedan)

Bild II. Ämnesområden inringade

Det här sättet att dela in en modell är inte någon exakt vetenskap. Det finns ofta flera alternativ. Men det finns ändå vissa principer som avgör vad som bör hamna i samma ämnesområde. I senare artiklar återkommer jag till det ämnet.

Rita nu grå rektangulära ytor, en för varje ämnesområde. Flytta entiteterna så att de hamnar på rätt plats. (Bild III)

Ge ämnesområdena beskrivande namn. Försök placera ämnesområdena så att ordningen får någon slags mening. Här tänker jag mig att vi å ena sidan har kunder (de vi erbjuder saker) och å andra sidan har erbjudanden (det vi erbjuder våra kunder). Mitt emellan har vi det som knyter ihop dessa två kategorier av företeelser nämligen de beställningar som är lagda av kunderna.

Lägg märke till ritsättet:

  1. Ämnesområdena ritas som ljusa grå ytor, med mellanrum emellan.
  2. Ämnesområden bildar tillsammans en rektangel.
  3. Namnen på ämnesområdena skrivs med fetstil och med en mörkt grå färg.

Tillsammans gör detta att ämnesområdena bildar en neutral bakgrund för diagrammet. Indelningen tillför inte komplexitet utan reducerar komplexitet. Detta är en grundprincip för en bra gestaltning. Hur vi fångar och tillför så mycket kunskap och mening till modellen som möjligt, utan att i onödan tillföra komplexitet.

När jag handleder elever i informationsmodellering och visar dem detta steg blir de alltid överraskade av hur mycket tydligare modellen blir redan av detta första enkla steg. Till och med en så enkel modell som denna blir mycket tydligare. Tänk då hur det blir med modeller som är mycket mer komplexa. Och det handlar inte bara om hur jag kan kommunicera modellen till andra. Även jag själv ser och förstår modellen tydligare. Modeller är som sagt inte bara ett kommunikationsverktyg utan också – egentligen först och främst när man tänker efter – ett tanke- och analysverktyg.

Bild III. Efter steg 1: Ämnesområden inritade

Steg 2: Byt versaler mot gemener

Det är välkänt att versaler ger sämre läsbarhet än gemener. De gäller inte bara löptext utan även rubriker och dylikt. Därför är det bättre att skriva allt med gemener, förutom inledande versal på namn. (Bild IV)

Steg 3: Rita relationslinjer med vinkelräta linjer

När man har många relationer och de behöver dras lång väg blir det tydligare om linjerna dras vinkelräta än om de går kors och tvärs. (Bild IV)

Steg 4: Böjda hörn på relationslinjerna

Böjda hörn är att föredra. En fördel är följande: Hjärnan letar hela tiden efter mönster i synimpulserna. Hjärnan behöver då skilja mellan olika typer av hörn. Om hörnen på relationslinjerna skiljer ut sig tydligt från hörnen på entitetsrutorna så kan vi avlasta den kognitiva funktionen.
(Bild IV)

Bild IV. Efter steg 2, 3 och 4: Namn skrivna med gemener, relationslinjer med vinkelräta linjer och böjda hörn
Bild V. Reltationslinjen från Payment Batch ansluter en annan relationslinje. Den runda böjen gör att man ser vilket håll den tar vägen.

Detta kan tyckas som en liten sak, och är kanske det. Men det är enkelt att åstadkomma och det ger en effekt.

En annan fördel med böjda hörn på relationslinjerna är följande: När man drar flera relationslinjer till samma mål kan man dra dem tillsammans. Om man då ansluter linjen med en böj så visar man vilket håll en anslutande linjen tar vägen. Se exempel, bild V

Steg 5: Byt princip för namngivning av relationer

Relationer mellan entiteter är egentligen också attribut hos entiteter, och bör benämnas med en verksamhetsterm. Om vi som exempel tar relationen mellan Beställning och Kund som i diagrammet heter läggs av, se bild 5. Det är ingen verksamhetsterm. Verksamhetstermen för relationen är lämpligen Beställare, och är inte bara en relation utan manifesteras som en egenskap hos enbeställning med samma namn.Det attributet kommer behöva beskrivas med namn, egenskaper och regler, i modellens textdel precis som andra attribut. Det kommer också att behöva representeras av något dataelement, kanske en kolumn i en tabell eller liknande.  

Därför anser jag att principen för att namnge en relation i ett ER-diagram bör vara en princip som fungerar inte bara i diagrammet utan också i övriga delar av modellen, samt i alla övriga sammanhang där relationen förekommer i verksamheten. En informationsmodell som kommer till användning i en verksamhet normerar ju ett verksamhetsspråk. Och Beställare är då en verksamhetsterm som vi bör definiera och beskriva i vår modell. Läggs av är inte på samma sätt en verksamhetsterm, den har ingen mening utanför detta diagram, och inte ens någon mening utanför den linje den är placerad på.

Jag vet att detta går emot det som brukar läras ut. Men om vi ska utveckla vårt kunskapsområde behöver vi vara beredda att ompröva ingrodda ”sanningar”.

Lägg också märke till att en relation, inte bara en entitet, alltid hör till ett visst ämnesområde. Beställare är en relation/egenskap hos en beställning och hör därmed till ämnesområdet Beställningar, och inte till Kunder. Därför bör relationslinjens etikett, namnet på relationen, alltid placeras hel och hållen inom ämnesområdet i diagrammet. (Bild 5)

Steg 6: Markera läsriktning för relationsnamn

Namnet på relationer är alltid avsedd att läsas i en viss riktning. Gör det tydligt med en lite pilspets som det visas i exemplet nedan, bild VI

Bild VI. Efter steg 5 och 6: Relationer namngivna med verksamhetsbegrepp och som egenskaper, och med läsriktning markerad

Steg 7: Lös upp många-till-många-relationer

Modeller blir tydligare om man uttrycker många-till-många-relationer som entiteter i sin egen rätt. Se entiteten Produkt i produktpaket i bild VII nedan.Lägg märke till namnet. Precis som övriga entiteter så bör man vara noga med att ge den ett namn som uttrycker vad en enskild förekomst av entiteten står för. En förekomst av den entiteten uttrycker ju fakta att en viss produkt förekommer i ett visst produktpaket.

Steg 8: Placera en entitet som är underställd en annan entitet under denna och med indrag

I exemplet nedan, bild VII, så är Beställningsrad underställd Beställning i den meningen att den förra är en del av den senare. Samma gäller för Produkt i produktpaket i förhållande till Produktpaket. Det framgår tydligt att de hör samman i en hierarki på det sättet om man placerar Beställningsrad och Produkt i produktpaket i diagrammet som jag har gjort, under och med ett indrag. Ofta har man flera underställda entiteter och ibland i flera nivåer. Då blir det ännu viktigare att vi tydligt visar hierarkin.

Lägg också märke till att jag fann det tydligare att bryta ut Produkt till ett eget ämnesområde. Detta eftersom man i detta fall inte erbjuder produkter till kunder annat än som ingående i paket. (Bild VII)

Bild VII. Efter steg 7 och 8: Många-till-många-relation upplöst. Underställda entiteter placerade för att uttrycka beroendet.

Steg 9: Skriv entiteternas definitioner i entitetsrutorna

Om man tar med definitionen i entitetsrutan så får läsaren en extra möjlighet att förstå vad entiteten står för. Definitioner är mycket centrala delar av en informationsmodell. Egentligen mer centrala än namnen. Namnen är viktiga som mentala ”etiketter”. Men det är definitionerna som uttrycker vad företeelserna i fråga är för något. (Bild VIII)

Bild VIII. Efter steg 9 och 10: Relationer som innebär komposition (beroendeobjekt) särskilt markerade. Definitioner i entitetsrutor.

Steg 10: Markera beroendeobjekt

Vissa relationer där en entitet är underställd en annan entitet innebär en starkare bindning än andra. Den underställda entitetens livscykel är då sammankopplad med den andra entiteten. Till exempel kan en beställningsrad inte existera utan att den hör till sin specifika beställning. Den kan alltså varken existera självständigt eller byta vilken beställning den är en del av. Det är en permanent relation. Det är en viktig egenskap hos relationen men den uttrycks inte av den vanliga 1–1-relationen. En vanlig min 1- max 1-koppling säger ju bara att beställningsraden alltid måste var knuten till precis en beställning, men inte att det alltid måste vara samma beställning. I en del notationer kallas det för beroendeobjekt.

Jag tycker att mina modeller blir tydligare om jag markerar vilka entiteter som hör samman på det här starka sättet. En beställning och dess beställningsrader är inte olika informationsobjekt, utan beställningsraderna är integrerade delar av en beställning med ett existentiellt beroende. Det vill säga att en beställningsrad inte kan existera oberoende av sin beställning.

Bild IX. Composition (beroendeobjekt) i UML

I UMLs klassmodeller kallas den relationen sammansättning (composition) och uttrycks med en romb. Egentligen ska romben vara fylld men den symbolen finns inte som standard i Visio så jag brukar nöja mig med en ofylld. (Bild IX)

Inom parentes sagt: Den ofyllda romben uttrycker i UML en mängd (aggregation), vilket i praktiken är samma som en vanlig association med en min 1 – max 1-koppling. Därför är symbolen tämligen meningslös i UML. Jim Rumbough, en av grundarna till UML, liknade den vid placebo och Martin Fowler ägnar en hel uppsats till att avfärda konstruktionen.

Jag har skrivit om detta tidigare, i artikeln ”Saker jag stjäl från UML”.

Vad har vi gjort egentligen

Lägg märke till att vi inte på minsta sätt har förändrat modellen, endast dess gestaltning. Diagrammet som det blev till slut uttrycker exakt samma modell som diagrammet gjorde från början, det vill säga vi har inte ändrat något i vår bild av vår förståelse av det som avbildats. Det vi har ändrat är endast gestaltningen, det vill säga sättet modellen säger det den säger.

Bild X. Från före alla ändringar till efter steg 9 och 10: Relationer som innebär komposition (beroendeobjekt) särskilt markerade. Definitioner i entitetsrutor.

Men jag menar att skillnaden är avsevärd. Jag vill på detta sätt visa hur vi med mycket enkla medel kan få till mycket bättre informationsmodeller. Det är därför jag tycker att det är så viktigt att vi börjar diskutera gestaltning av modeller och utveckla sättet vi gestaltar på. Målet för mig är inte att alla skall göra som jag. Pröva själv, på dina egna diagram. Se om du tycker att det blir någon skillnad. Min vilja är att vi kommer loss från den dogmatik och förstening som rått i några decennier nu, och att vi kan börja utveckla vårt område. Låt oss pröva olika sätt, låt oss diskutera och låt oss dela med oss.

De finns de som är rädda för en sådan öppenhet och frihet. De tycker att vi då visar oss som amatörer, att vi visar upp en tvekan, att vi inte alltid vet vad som är bäst, och att vi öppnar upp för anarki och oordning. Till dessa vill jag säga: Utveckling innebär alltid en viss oordning. Leve denna oordning! 

Fortsättningen

Du kanske har andra tankar om hur vi kan göra bättre modeller. Det är bra, låt oss få höra. Det är så ett område kan utvecklas.

Det kommer fler artiklar om gestaltning av modeller. Detta var bara en liten början, varje steg ovan går det att säga mer om och det finns andra områden av ämnet att diskutera, inte minst de delar av våra modeller som består av text.

Hoppas du vill hänga med på detta.

/Peter Tallungs, IRM

Nästa artikel i serien publicerar vi torsdag 10 mars. Vill du prenumerera på denna artikelserie? Registrera din mailadress här.

PS Vi har tyvärr varit tvungna att ta bort möjligheten att kommentera på artiklarna för en tid. Har du tankar om innehållet i artikeln som du vill dela? Välkommen att kommentera på vår linkedin där lägger vi ut en post vid varje publiceringstilfälle. Eller skicka ett mail till Peter Tallungs: peter.tallungs(at)irm.se