Mina gästbloggar i mars
resp maj
gick in på nyanser av koppling mellan klasser (på gränsen till avancerad UML),
som resulterar i länk mellan objekt (pekare, referens, främmande nyckel,
nästlat objekt mm).
Vid första anblick tycks hanteringen av härledda värden
(jfr. kurs T2715
Agil modellering med UML) vara en hårfin nyans i jämförelse, men för arkitekten
kan den bli en liten tuva som stjälper ett BigData-lass. Skall man göra
härledda värden till attribut - eller hellre till utparametrar från de beräkningsoperationer
som härleder dem? Det korta svaret är ”beror på”, men den som sysslat med
dataintensiva system länge anar redan på vad:
- Hög andel frågor (eller gott om billigt minne/cache) talar
för separat attribut, och i CQRS även separat klass, komponent, eller system
för frågehantering.
- Hög andel uppdateringar (eller gott om billig
processorkapacitet) talar för beräkning även för att besvara frågor - där
frågorna är tillräckligt sällsynta kan man leva med en tillfälligt längre
processorkö (enda sedan nätverksdatabaser har det funnits specialvarianter av
datatyp för detta, Codasyl-standarden som var ”preSQL” snarare än noSQL erbjöd
typen ”result of procedure XY” ). Med andra ord är de två viktigaste nyckeltalen
som styr beslutet:
1. marginalkostnad för processorkapacitet
i relation till dito för minne
2. förväntad andel
frågor (CQRS-Q:et) i relation till förväntad andel uppdateringar (C:et).
Och skillnaden mellan attribut och utparameter i UML? Även
här är svaret ”beror på...”
Anta som ett exempel att Produkt i vårt system har ett
tillverkningsdatum och en ålder (ålder= maskindatum och tid minus
tillverkningsdatum och tid). Tillverkningsdatum uppdateras aldrig i
normalfallet, och blir ett attribut, men ålder ”beror på”: om den mäts i t ex
månader så blir andelen uppdateringar mycket låg, vilket talar även för ålder
som attribut:
Bild 1 – ålder som attribut.
Om åldern däremot mäts i driftssekunder, av ett litet chip ombord
med begränsad kapacitet, och läses sällan, t ex av serviceutrustning i
hangaren/depån, så lutar det åt en utparameter i stället. Då går det att låta
ett annat system på en server beräkna åldern (t ex ur start- och stopptider i
loggfiler) den gången något anrop verkligen frågar efter den. Det vanliga
sättet att visa utparameter i UML är efter ett kolon:
Bild 2 – utparameter
(vanligast).
Men det finns ett mindre vanligt sätt också. Ett snedstreck visar
att värdet är just härlett dvs inte lagrat som vanliga attribut:
Bild 3 – implicit utparameter (härlett värde).
I agil modellering låter vi mottagarens informationsbehov
styra. Om ritningen vänder sig primärt till kravställare eller analytiker, är
det enklast för alla att vara konsekvent med inkapslingen och dölja även (den i deras ögon hårfina) skillnaden mellan ”vanliga” attribut och
härledda. Däremot om arkitektrollerna
är involverade (DBA, SA/SWA, produktarkitekt, osv) blir skillnaden mycket viktigare då den inverkar på tradeoffs mellan
olika kvalitetskrav (NFR).
konsult, Kiseldalen.com
UML 2 Professional, OCUP Advanced Level
(certifikatnivå 3 av 3)
Huvudförfattare
UML
Xtra Light: How to Specify Your SW Requirements
Milan samarbetar med Informator sedan våren 1996 inom
modellering, UML, arkitektur, krav, analys och design. Håller f.n. kurser i Arkitektur,
i modellering (T2715,
T2716),
och 2013 höll han också Informators fullsatta
Frukostseminarium
om användningsfall.



Inga kommentarer:
Skicka en kommentar
Trevligt att du vill dela med dig av dina åsikter! Tänk på att hålla på "Netiketten" och använda vårdat språk.