donderdag 3 mei 2012

Door de bouwblokken de patronen niet meer kunnen zien

Inleiding

Wie zich bezighoudt met architectuur raamwerken als Togaf en DyA zal ongetwijfeld wel eens van de term bouwblokken en patronen gehoord hebben.

Voor hen die dit niet weten, en kleine inleiding.

In de infrastructuur architectuur (maar ook daarbuiten) vinden we naast principes de zogenaamde bouwblokken waaruit een stuk infrastructuur is opgebouwd. Bouwblokken worden beschreven als op zichzelf staande onderdelen die een deel van een gestandaardiseerde functionele oplossing vormen.
Op een hoger abstractieniveau vinden we de patronen. Patronen zijn een samenstelling van één of meerdere bouwblokken om een functionele oplossing te bieden.

In dit artikel/blog wil ik het principe van patronen en bouwblokken wat proberen te verduidelijken. Ik beperk me even tot de vrij tastbare infrastructuur architectuur, maar in principe zal dit verhaal ook passen op de Security Architectuur, Software architectuur en Business Architectuur. In de Enterprise Architectuur komen we wel patronen tegen, maar naar alle waarschijnlijkheid geen bouwblokken. Dit is echter geen vaststaande regel.



Bouwblokken


Zoals reeds gemeld is een bouwblok een op zichzelf staande onderdeel van een oplossing. Bouwblokken zijn opgebouwd uit elementen. Elementen zijn vaste onderdelen van het bouwblok.

Hieronder staat een DyA weergave van een bouwblok:
http://tweakers.net/ext/f/CIB86sYCOdww2G0E3A47bSO4/full.jpg

Denk hierbij aan een bouwblok wat een SQL Database oplossing biedt. Het bouwblok zal dan bestaan uit één of meerdere database servers, een stuk storage, een netwerk om het aan elkaar te knopen en te ontsluiten naar de buitenwereld, een stuk configuratie en documentatie en wellicht een backup/restore invulling.

Een ander bouwblok kan worden ingevuld met een Oracle op Linux oplossing waarbij een enkele server met lokale storage wordt gebruikt om de database te hosten.

Beiden zijn bouwblokken en lijken voor wat betreft functionaliteit enigszins op elkaar. Beide bouwblokken kunnen ingezet worden om een database oplossing neer te zetten als backend voor een webapplicatie.


Bouwblok Types

De hierboven beschreven bouwblokken vallen onder een enkele noemer. Namelijk het bouwblok type "Database"
Database is een zelf in te vullen naamgeving. Om het begrip tastbaar te houden heb ik voor deze naamgeving gekozen.
Het bouwblok type is dus een generieke naam voor onze bouwblokken. Onze bouwblokken zijn varianten van het bouwblok type.

Bouwblok varianten

Ons bouwblok type "Database" kent in ons geval een tweetal bouwblok varianten.
Te weten:
  • Bouwblok "MS SQL zilver"
  • Bouwblok "Oracle brons"
Wederom, de naamgeving is niet direct van invloed, bij varianten mag het wat beschrijvend zijn. Dat in tegenstelling tot de generieke naamgeving van het bouwblok type, wat geen merknamen of beschrijvingen zou mogen bevatten.

Waar er in een project nu een database oplossing nodig is waarbij de beschikbaarheid van groot belang is, kan er gekozen worden uit een tweetal standaard oplossingen (bouwblokken). In ons geval zal het bouwblok "SQL Zilver" een betere ontwerpkeuze zijn vanwege de eisen aan beschikbaarheid.

Kort resumerend:
We kennen het bouwblok type: "Database", en daarvan leiden we 2 bouwblok varianten af: "MS SQL zilver" & "Oracle Brons".
Bouwblokken zijn standaard deeloplossingen. Varianten kunnen verschillen in gebruikte software, hardware en configuraties.


Patronen

Waar bouwblokken nog vrij tastbaar zijn, worden patronen wat minder begrijpelijk.

Binnen DyA onderkent men patroon types, en patroon varianten. Een patroon type is een set met bouwblokken die een infrastructurele oplossing vormen. Een patroon variant is een bepaalde technische invulling van het patroon type.
Een patroon impliceert iets herhalend. Denk daarbij aan het brei-patroon op een trui.

Hieronder een plaatje van het DyA patroon type "Data Transport"

http://tweakers.net/ext/f/GR2HT4njhgTdV7gFgyGyDtfW/full.png

Zoals je ziet is het patroon opgebouwd uit enkele bouwblokken waarvan sommigen optioneel zijn. Bovendien heeft het patroon optionele links met andere patronen.

Dit is allemaal vrij abstract, en dus best lastig te begrijpen. Ik zal proberen het duidelijk te maken met wat meer alledaagse begrippen.
Onthoudt dat een patroon een set met bouwblokken is die een infrastructurele oplossing vormt. Aangezien er altijd een probleem (of uitdaging) vooraf gaat aan een oplossing, ga ik in het hieronder staande voorbeeld een vrij tastbaar probleem beschrijven.


Voorbeeld


Probleem
Je staat met 3 auto's, en 30 mensen bij een rivier. Jullie moeten deze rivier zien over te steken zonder dat jullie nat worden. Er is geen tijdslimiet, maar het moet wel veilig gebeuren.

Uitwerking
Goed, hoe steken we een rivier over? Juist, we bouwen een brug.
Maar wat voor een brug? Gelukkig hebben we enkele functionele eisen gekregen bij de probleemstelling:
  • Er moeten auto's over kunnen rijden
  • Er moeten mensen over kunnen lopen
  • Er is geen tijdslimiet
  • Het moet veilig zijn
Oké, onze patroon type "brug" bestaat uit een 3 tal bouwblokken:
  • Peilers (optioneel)
  • brugdek
  • brugleuning (optioneel)
Nu moeten we een brug bouwen die voldoet aan de gestelde eisen.

Aangezien er auto's over de brug moeten, is het ontwerptechnisch wel verantwoord om het optionele bouwblok "peilers" te gebruiken. Die staan immers zwaardere belasting toe. Indien we van het bouwblok type peilers meerdere varianten hebben (Hout, staal, beton) kiezen we de variant die voldoende belasting kan hebben.

Over de peilers komt dan een brugdek. Vanwege de zware belasting van de auto's moet het dek voldoende draagkrachtig zijn om de auto's te dragen. Het bouwblok type "brugdek" moet dus ingevuld worden met een variant die draagkrachtig genoeg is.
Aangezien er geen tijdslimiet is, hoeft het brugdek niet breder te zijn dan een enkele auto.

Aangezien het een eis is dat er mensen over de brug moeten kunnen lopen, zal het brugdek voorzien moeten zijn van wandelpaden met een effen loopvlak. Bovendien zal vanwege de veiligheid het optionele bouwblok type "brugleuning" gebruikt moeten worden. Als variant kiezen we voor een houten brugleuning wat veilig genoeg wordt geacht.

Goed, geloof het of niet, maar we hebben zojuist een patroon variant gemaakt van het patroon type "brug". De naamgeving van de variant laat ik aan jullie over.

Indien we dit probleem nu vaker tegen komen, dan kan je dit patroon variant uit de kast trekken als standaard oplossing.
En dat is werken volgens architectuur. Het hergebruiken van standaard oplossingen.

Zo, dat is de eerste post op dit blog. Eén van vele hoop ik. Een opmerkende lezer heeft gezien dat deze eerste post een kopie is van een blog op: http://equator.tweakblogs.net. Dat klopt, daar heb ik deze als eerste gepost.

Geen opmerkingen:

Een reactie posten