3.1 Architectuurfundamenten
Overzicht en motivatie
Softwarearchitectuur is de verzameling significante ontwerpbeslissingen die duur zijn om te wijzigen: de structuur van de grote componenten, de relaties ertussen en de eigenschappen die het hele systeem moet vertonen. Zie het als het gedeelde mentale model waarmee veel mensen één samenhangend product kunnen bouwen. In een klein team kan architectuur in een paar hoofden leven en onderweg evolueren. In een grote organisatie (honderden engineers, tientallen teams, meerdere producten, jaren roadmap) wordt architectuur datgene wat iedereen gecoördineerd houdt. Wanneer ze helder is, bewegen teams onafhankelijk zonder te botsen. Wanneer ze vaag is, wordt elke afhankelijkheid tussen teams een onderhandeling en elk incident een archeologieproject.
Voor ondernemingen en overheid tellen de fundamenten nog zwaarder, omdat de systemen langlevend, zwaar gereguleerd en gedeeld over afdelingen zijn. Een belastingsysteem, een uitkeringsplatform, een nationaal gezondheidsdossier of het kerngrootboek van een bank zal de loopbaan van de mensen die het bouwden overleven. De beslissingen die je vandaag neemt over koppeling, data-eigenaarschap en kwaliteitsattributen bepalen wat mogelijk is voor een decennium of meer. Toezichthouders en auditors verwachten steeds vaker gedocumenteerde, verdedigbare architectuur: bewijs dat betrouwbaarheid, beveiliging, privacy en toegankelijkheid zijn ingebouwd en niet vastgeschroefd. De fundamenten goed krijgen is niet academisch. Het is het verschil tussen een platform dat zich aanpast aan nieuwe mandaten en een dat vanaf nul moet worden herbouwd.
Dit hoofdstuk behandelt de duurzame fundamenten die technologiemodes overleven: kwaliteitsattributen (de “-iteiten”), architectonisch significante vereisten, fitness functions en evolutionaire architectuur, lichte documentatie met C4 en arc42, en gestructureerde afwegingsanalyse. Dit zijn de gereedschappen waarmee een groot team met opzet over architectuur kan redeneren in plaats van bij toeval.
Kernprincipes
- Architectuur gaat over afwegingen, niet over juiste antwoorden. Elke significante beslissing ruilt de ene kwaliteit tegen de andere. Het werk is die ruilen bewust en transparant te maken.
- Kwaliteitsattributen zijn vereisten. Prestaties, beschikbaarheid, beveiliging en onderhoudbaarheid moeten met dezelfde rigueur worden gespecificeerd als functies, of ze worden onder deadlinedruk opgeofferd.
- Niet elke vereiste is architectonisch significant. Richt schaarse ontwerpaandacht op de vereisten die structuur vormen, moeilijk te wijzigen zijn of hoog risico dragen.
- Architectuur moet kunnen evolueren. Grootschalig ontwerp vooraf mislukt omdat kennis aan het begin het laagst is. Ontwerp incrementeel en bescherm sleuteleigenschappen met geautomatiseerde controles.
- Documenteer beslissingen, niet alleen diagrammen. De redenering achter een keuze (en de verworpen opties) is waardevoller dan een plaatje van het resultaat.
- Maak de architectuur leesbaar voor wie haar niet creëerde. Nieuwe medewerkers, auditors en toekomstige onderhouders moeten de bedoeling kunnen reconstrueren.
- Stel uit wat je kunt, beslis wat je moet. Houd opties open waar verandering goedkoop is. Leg je alleen vroeg vast waar late vastlegging duur is.
Aanbevelingen
Specificeer kwaliteitsattributen als meetbare scenario’s
Vage doelen als “het systeem moet snel zijn” of “hoog beschikbaar” kunnen niet worden getest of afgedwongen. Schrijf elk kwaliteitsattribuut in plaats daarvan als concreet scenario met een prikkel, een context en een meetbare respons: “Wanneer het aantal gelijktijdige gebruikers op het hoogtepunt 50.000 bereikt, voltooit 95% van de zoekverzoeken binnen 300 ms.” Dek de attributen die voor je domein tellen: beschikbaarheid, prestaties, schaalbaarheid, beveiliging, onderhoudbaarheid, observeerbaarheid, toegankelijkheid, overdraagbaarheid en kostenefficiëntie. Rangschik ze hardop, want je kunt ze niet allemaal tegelijk maximaliseren. Een systeem afgestemd op maximale consistentie zal niet ook maximaal beschikbaar zijn.
Identificeer architectonisch significante vereisten (ASR’s)
Maak tijd vrij om ASR’s van gewone vereisten te scheiden. Een vereiste is architectonisch significant als ze veel componenten raakt, duur is om te vervullen, een strikte beperking oplegt of technisch riskant is. Regelgevende mandaten (dataresidentie, bewaring, controleerbaarheid), scenario’s met hoge belasting, integratie met legacysystemen van registratie en harde beveiligingsgrenzen zijn meestal ASR’s. Houd een korte, levende lijst ervan bij en herleid grote ontwerpbeslissingen naar die lijst, zodat reviewers kunnen zien waarom de architectuur eruitziet zoals ze eruitziet.
Neem evolutionaire architectuur en fitness functions aan
Behandel architectuur als iets wat stap voor stap verandert in gestuurde richtingen, niet als een vast blauwdruk. Een fitness function is een geautomatiseerde, objectieve test dat een specifiek architectonisch kenmerk standhoudt: een controle bij het bouwen dat geen module importeert uit een verboden laag, een prestatietest die de pipeline laat falen als de p99-latentie regresseert, een beveiligingsscan die bekend kwetsbare afhankelijkheden blokkeert, een test die bevestigt dat geen service een directe verbinding met de database van een andere service houdt. Fitness functions veranderen architectonische bedoeling in vangrails die continu worden afgedwongen: de enige manier om die bedoeling levend te houden over een groot, veranderend team.
Documenteer met C4 en arc42
Gebruik het C4-model om structuur te beschrijven op vier zoomniveaus (Systeemcontext, Containers, Componenten en Code) zodat elk publiek het niveau leest dat bij hem past en geen enkel diagram alles hoeft te zeggen. Gebruik arc42 als sjabloon voor het omringende verhaal: doelen, beperkingen, context, oplossingsstrategie, bouwstenen, runtime-scenario’s, deployment, dwarsdoorsnijdende zorgen, beslissingen en risico’s. Leg individuele beslissingen vast als korte Architecture Decision Records (ADR’s): context, beslissing, status en gevolgen, één bestand per beslissing, geversioneerd naast de code. Als je maar één documentatiegewoonte aanneemt, maak het dan ADR’s: ze betalen zich uit meer dan wat dan ook voor grote teams.
Voer gestructureerde afwegingsanalyse uit en stuur ontwerp op risico
Gebruik voor systemen met hoge inzet een methode als de Architecture Tradeoff Analysis Method (ATAM) om kandidaatarchitecturen af te wegen tegen geprioriteerde kwaliteitsattribuutscenario’s. Ze legt gevoeligheidspunten bloot (waar een beslissing één attribuut sterk beïnvloedt) en afwegingspunten (waar ze er meerdere beïnvloedt). Neem voor een lichtere aanpak risicogedreven ontwerp aan: besteed ontwerpinspanning in verhouding tot risico. Delen met laag risico die goed worden begrepen hebben weinig ceremonie nodig. Nieuwe beslissingen met grote impact of die onomkeerbaar zijn verdienen prototypes, spikes en formele review.
Afwegingen: voor- en nadelen
| Aanpak | Voordelen | Nadelen |
|---|---|---|
| Zware architectuur vooraf | Helderheid in coördinatie. Minder late verrassingen in programma’s met vaste reikwijdte | Beslissingen genomen wanneer kennis het laagst is. Traag. Broos bij verandering |
| Emergente / evolutionaire architectuur | Past zich aan leren aan. Minder verspilling. Ondersteunt snelle oplevering | Risico van afdrijving zonder fitness functions. Vraagt sterke engineeringdiscipline |
| Formele evaluatie in ATAM-stijl | Rigoureus, controleerbaar, legt verborgen conflicten bloot | Kost veel tijd en expertise. Overdreven voor kleine wijzigingen |
| Lichte ADR’s + C4 | Goedkoop, leesbaar, incrementeel, schaalt naar veel teams | Alleen zo goed als de discipline om ze actueel te houden |
De centrale spanning is die tussen zekerheid en aanpasbaarheid. Programma’s van de overheid met vaste prijs en veiligheidskritieke systemen neigen naar meer rigueur vooraf en formele evaluatie, omdat de kosten van late verandering of falen enorm zijn. Snel bewegende productorganisaties neigen naar evolutionaire aanpakken bewaakt door automatisering. De meeste grote organisaties hebben beide nodig: zwaardere governance op de onomkeerbare beslissingen met grote impact en dwarsdoorsnijdende zorgen, en lichter, emergent ontwerp overal elders. Beide uitersten falen op hun eigen manier: overarchitectuur verspilt jaren en levert niets op, terwijl te weinig architectuur een kluwen oplevert die niet kan schalen of worden geaudit.
Vragen om met je team te bespreken
Wanneer twee van je kwaliteitsattributen onder belasting botsen, welke wint, en heb je die prioriteitsvolgorde opgeschreven? Elke architectuur dwingt afwegingen af: maximale consistentie ondermijnt beschikbaarheid, strakke beveiliging voegt latentie toe, agressieve caching vecht met controleerbaarheid. In een groot team is het gevaar dat verschillende squads stilletjes verschillende prioriteiten aannemen, zodat de een optimaliseert voor doorvoer terwijl een ander strikte consistentie bewaakt, en het conflict pas tijdens een incident aan het licht komt. In omgevingen van onderneming en overheid zal een toezichthouder vragen welk attribuut je beschermde en waarom, dus de rangschikking moet expliciet en verdedigbaar zijn in plaats van folklore. Neem je kwaliteitsattribuutscenario’s mee en rangschik ze hardop tegen elkaar, paar voor paar, tot de volgorde ondubbelzinnig is. Codeer de winnaar dan als fitness function zodat de prioriteit standhoudt onder deadlinedruk in plaats van te eroderen.
Welke van je recente beslissingen waren eenrichtingsdeuren, en kregen ze meer toetsing dan de tweerichtingsdeuren? Risicogedreven ontwerp zegt ontwerpinspanning te besteden in verhouding tot hoe moeilijk een beslissing terug te draaien is, maar de meeste teams beoordelen elke wijziging met ongeveer dezelfde ceremonie. Dat verspilt aandacht aan goedkope, omkeerbare keuzes terwijl onomkeerbare (een datamodel gebakken in een juridisch record, een publiek API-contract, een kerndatastore) met te weinig tegenspraak doorglippen. Haal de significante beslissingen van vorig kwartaal op en sorteer ze op omkeerbaarheid, en vraag dan of de onomkeerbare prototypes, spikes of formele review kregen. In langlevende systemen van onderneming en overheid stapelen de kosten van een verkeerde eenrichtingsdeur zich een decennium op, dus de extra rigueur betaalt zich vele malen terug. Stem het gewicht van je proces af op de omkeerbaarheid van de beslissing, niet op de omvang van de diff.
Wie moet er bij je volgende beslissing met hoge inzet die moeilijk terug te draaien is in de kamer zitten, en tegen welke scenario’s ga je de opties scoren? Een gestructureerde afwegingsreview in ATAM-stijl verdient haar kosten wanneer een beslissing onomkeerbaar is en meerdere kwaliteitsattributen tegelijk raakt, en haar kracht komt van de aanwezige mensen: oplevering, beveiliging, operatie en de beleids- of bedrijfseigenaren die de gevolgen voelen. Sla een van die stemmen over en je ontdekt het conflict na de bouw, zoals een cachingkeuze stilletjes een controleerbaarheidsvereiste kan breken. Neem de geprioriteerde kwaliteitsattribuutscenario’s mee als scorerubriek, en zoek gevoeligheidspunten waar één optie één attribuut hard doet uitslaan en afwegingspunten waar ze er meerdere beweegt. De uitkomst die je wilt is een korte ADR die de verworpen opties en waarom vastlegt, zodat de redenering de mensen die haar maakten overleeft. Als geen aankomende beslissing dit lijkt te rechtvaardigen, is dat zelf de moeite waard te controleren, want een groot programma zonder onomkeerbare beslissingen aan de horizon kijkt meestal niet ver genoeg vooruit.
Als een nieuwe medewerker of een externe auditor alleen je schriftelijke architectuur had, kon die dan reconstrueren waarom het systeem is gevormd zoals het is, en wanneer testte je dat voor het laatst? Architectuur die in een paar senior hoofden leeft is een single point of failure: wanneer die mensen verder gaan, gaat de redenering achter elke moeilijk terug te draaien beslissing met hen mee, en leert het volgende team haar opnieuw via incidenten. Voor een grote organisatie is de leesbaarheid van de architectuur (C4-diagrammen die met de werkelijkheid overeenkomen, een arc42-verhaal, ADR’s die verworpen opties vastleggen) wat tientallen teams over hetzelfde systeem laat redeneren zonder vergadering. Neem een recente ADR en een actueel diagram mee, geef ze aan iemand die het component niet bouwde en kijk hoe ver ze komen voor ze een persoon moeten vragen. In omgevingen van onderneming en overheid zal een auditor precies deze oefening doen, en documentatie die het systeem van vorig jaar beschrijft is erger dan geen omdat ze juist de mensen misleidt die moeten certificeren. Behandel de versheid van het schriftelijke dossier als meetbare eigenschap en leg een fitness function of een reviewritme erachter om het waar te houden.
Welke van je architectonische kenmerken worden vandaag beschermd door een geautomatiseerde fitness function, en welke leunen nog op dat iedereen de regel onthoudt? Bedoeling die alleen in een wikipagina of het geheugen van een reviewer leeft, erodeert zodra er een deadline komt, want de gelaagdheidsregel, de grens van geen gedeelde database en het latentiebudget zijn precies wat teams schrappen onder druk. In een grote, snel veranderende codebase is de enige bedoeling die overleeft de bedoeling die een build afdwingt, dus de kloof tussen de kenmerken die je claimt en degene die je werkelijk controleert is je echte architectonische risico. Maak een lijst van je significante kenmerken, markeer elk als afgedwongen, handmatig beoordeeld of onbewaakt, en neem de laatste drie keer mee dat een review afdrijving ving die een fitness function eerder had kunnen vangen. In gereguleerde en publieke systemen telt dit dubbel, want een toezichthouder zal niet vragen of je dataresidentie of controleerbaarheid bedoelde maar hoe je bewijst dat ze continu standhielden, en een groene pipeline is een veel sterker antwoord dan een beleidsdocument. Geef prioriteit aan het automatiseren van de kenmerken waarvan het falen zowel waarschijnlijk als duur is, en accepteer dat sommige handmatig blijven.
Wanneer je beslist of een vereiste architectonisch significant is, wie neemt die beslissing, en hoe voorkom je dat de ASR-lijst alles of niets wordt? De waarde van het benoemen van architectonisch significante vereisten komt uit selectiviteit: behandel elke vereiste als significant en ontwerp loopt vast, behandel er geen als significant en de structurele, riskante, moeilijk te wijzigen glippen onbewaakt door. In een groot team is de verleiding elke squad lokaal te laten beslissen, wat inconsistente lat oplevert en verrassingen tussen teams wanneer de “kleine” keuze van de ene groep de structuur van een andere beperkt. Neem je huidige ASR-lijst mee, de criteria die je gebruikte (raakt veel componenten, duur om te vervullen, strikte beperking, technisch riskant) en een paar grensgevallen om de grens hardop te toetsen. Voor ondernemingen en overheid zijn regelgevende mandaten zoals dataresidentie, bewaring en controleerbaarheid bijna altijd significant en niet onderhandelbaar, dus noem wie de lijst bezit, hoe ze wordt beoordeeld en hoe een besluit om een ASR toe te voegen of te schrappen wordt vastgelegd, want een ASR die niemand bestuurt is een vereiste die niemand onder toetsing zal verdedigen.
Sectorperspectief
Startup. Houd de ceremonie bijna nul en het dossier bijna compleet. Sla formele ATAM-workshops en zware sjablonen over, maar schrijf toch een dozijn korte ADR’s voor de keuzes die pijnlijk zouden zijn om terug te draaien (datastore, monoliet tegenover services, authenticatieleverancier) en pin de twee of drie kwaliteitsattribuutscenario’s die je eerste klanten werkelijk voelen. Je schaarse middel is engineeringaandacht, dus bescherm alleen de kenmerken waarvan het falen je zou laten zinken, zoals tenantisolatie, en laat al het andere emergent en goedkoop te wijzigen.
Kleinbedrijf. Zonder aparte architect en met een krap budget leun je op de fundamenten die bijna niets kosten: noem je handvol kwaliteitsattributen als concrete getallen, schrijf ADR’s voor alles wat je moeilijk zou kunnen terugdraaien en laat je gekozen platform of leverancier de zware structurele beslissingen dragen. Geef de voorkeur aan het kopen van een goed ondersteunde stack boven het bouwen van maatwerkinfrastructuur, en behandel de gedocumenteerde architectuur van de leverancier als een beperking die je erft en niet een die je vanaf nul moet schrijven.
Grote onderneming. De uitdaging is samenhang over veel teams en jaren roadmap, dus investeer in gedeelde machinerie: een architectuurgilde, een gemeenschappelijke set kwaliteitsattribuutscenario’s, ADR’s naast de code opgeslagen en fitness functions in CI die grenzen afdwingen die geen enkele reviewer op schaal kan bewaken. Gebruik gestructureerde afwegingsanalyse voor de onomkeerbare, dwarsdoorsnijdende beslissingen, houd C4-diagrammen als gedeelde kaart in ontwerpreviews en bestuur de ASR-lijst centraal zodat groepen ophouden lokaal redelijke keuzes te maken die globaal botsen.
Overheid. Langlevende, gereguleerde systemen maken gedocumenteerde, verdedigbare architectuur tot een aanbestedings- en verantwoordingseis, geen nette extra. Behandel dataresidentie, bewaring, controleerbaarheid en toegankelijkheid als architectonisch significante vereisten, opgeschreven in een arc42-beschrijving die auditors direct kunnen lezen, en houd lichte afwegingsworkshops waar beleids- en beveiligingsfunctionarissen aan deelnemen zodat conflicten (zoals caching tegenover controleerbaarheid) op papier aan het licht komen voor er code is. Houd het redeneringsspoor compleet genoeg dat een verantwoordelijke functionaris zorgvuldigheid kan aantonen, en geef de voorkeur aan architecturen met heldere uitstapopties boven die een publiek orgaan een decennium aan één leverancier binden.
Voorbeelden
Startup. Een SaaS-team van zes personen in de seedfase houdt zijn architectuur in een gedeeld document in plaats van een formeel proces, maar schrijft toch de beslissingen op die pijnlijk zouden zijn om terug te draaien. Ze leggen zo’n dozijn ADR’s vast (waarom Postgres boven een documentenstore, waarom een modulaire monoliet boven services, waarom ze hun authenticatieleverancier kozen) en pinnen twee kwaliteitsattribuutscenario’s die voor vroege klanten werkelijk tellen: “een aanmelding voltooit binnen twee seconden” en “geen klant kan ooit de data van een andere tenant lezen”. Wanneer ze hun zevende en achtste engineer aannemen, laten die notities de nieuwkomers in hun eerste week opleveren in plaats van iedereen te onderbreken om te vragen waarom dingen zijn zoals ze zijn.
Grote onderneming. Een multinationale bank consolideert twaalf regionale betalingssystemen en zet daarom een kleine architectuurgilde op. De gilde definieert acht kwaliteitsattribuutscenario’s (waaronder “verwerk 10.000 transacties per seconde zonder verloren transacties” en “herstel een regio binnen 15 minuten”), legt zo’n veertig ADR’s vast en dwingt fitness functions af in CI (continuous integration): geen service mag naar de database van een ander domein schrijven, alle aanroepen tussen services moeten worden getraceerd en elke afhankelijkheid met een kritieke CVE (Common Vulnerabilities and Exposures) laat de build falen. De C4-context- en containerdiagrammen worden de gedeelde kaart in elke ontwerpreview, en geschillen over integratie tussen teams dalen scherp.
Overheid. Een nationale instantie moderniseert een uitkeringsplatform, en de wet eist dat ze dataresidentie, zevenjarige controleerbaarheid en toegankelijkheidsconformiteit garandeert. Haar architecten behandelen deze als ASR’s en schrijven ze in een arc42-beschrijving die auditors direct beoordelen. Ze houden een lichte ATAM-workshop met leveringsteams, beveiliging en beleidsfunctionarissen om twee kandidaatarchitecturen te vergelijken en ontdekken dat de cachingstrategie van het voorkeursontwerp conflicteert met de controleerbaarheidsvereiste. Die afweging op papier vangen, voor er een regel code is, bespaart maanden herwerk en geeft de verantwoordelijke minister gedocumenteerd bewijs van zorgvuldigheid.
Zakelijke onderbouwing: motivatie, ROI en TCO
Het rendement van architectuurfundamenten is vooral vermeden kosten, wat het makkelijk onderfinancierd en duur om over te slaan maakt. De invoeringskosten zijn bescheiden: de tijd van een handvol ervaren architecten, een paar workshops, een documentatiesjabloon en wat CI-investering in fitness functions, meestal een klein eencijferig percentage van het budget van een programma. De kosten van niet aannemen komen later, en tegen een toeslag: herwerk wanneer een ongespecificeerd kwaliteitsattribuut in productie faalt, nood-herplatforming wanneer een ongedocumenteerde koppeling een verplichte wijziging blokkeert, slepende incidenten omdat niemand het systeem begrijpt en mislukte audits die oplevering stilleggen of boetes triggeren.
Formuleer de zaak voor het bestuur rond optionaliteit en risico. Goede architectuurfundamenten verlagen de kosten van toekomstige verandering (een directe hefboom op leveringssnelheid en total cost of ownership over de levensduur van een systeem van tien jaar), verminderen hoe vaak en hoe lang ernstige incidenten duren en produceren het documentatiespoor dat toezichthouders en auditors nu eisen. De ADR-gewoonte alleen betaalt zichzelf terug de eerste keer dat een nieuw leiderschapsteam vraagt “waarom hebben we het zo gebouwd?” en in minuten een antwoord krijgt in plaats van een forensisch onderzoek. Geef het waar mogelijk getallen: weeg de kosten van één vermeden grote herarchitectuur, of één vermeden mislukte audit, tegen de kleine doorlopende kosten van de praktijken.
Antipatronen en valkuilen
- Ivoren-torenarchitectuur. Architecten die diagrammen produceren maar nooit code aanraken of met leveringsteams praten. Hun ontwerpen worden genegeerd of zijn niet te bouwen.
- Kwaliteitsattributen als bijvoeglijke naamwoorden. “Schaalbaar, veilig, betrouwbaar” zonder getallen, zonder scenario’s en dus zonder manier om te verifiëren of af te wegen.
- Big design up front. Elk detail vastleggen voor de eerste regel code, beslissingen vastleggend wanneer begrip het zwakst is.
- Documentatie die liegt. Diagrammen die het systeem van vorig jaar beschrijven. Erger dan geen omdat ze misleiden.
- Cv-gedreven ontwerp. Technologieën kiezen om loopbanen op te bouwen in plaats van aan ASR’s te voldoen.
- Vergulden. Engineeren voor schaal, flexibiliteit of algemeenheid waar de vereisten nooit om vroegen, wat blijvend kosten en complexiteit toevoegt.
- Geen architectonische vangrails. Op goede bedoelingen leunen in plaats van op fitness functions om structuur over een groot team te behouden.
Volwassenheidsmodel
- Niveau 1: Initiëren. Architectuur is impliciet en leeft in de hoofden van individuen. Geen gedocumenteerde kwaliteitsattributen, geen ADR’s, geen gedeelde diagrammen. Structuur wordt ontdekt tijdens incidenten, en elke afhankelijkheid tussen teams wordt vanaf nul heronderhandeld.
- Niveau 2: Ontwikkelen. Sommige teams schrijven de beslissingen op die pijn zouden doen om terug te draaien en schetsen sleuteldiagrammen, maar de praktijk is inconsistent: de ene squad houdt ADR’s bij terwijl een andere er geen heeft, kwaliteitsattributen worden als bijvoeglijke naamwoorden benoemd in plaats van meetbare scenario’s en documentatie drijft tussen projecten uit de pas.
- Niveau 3: Standaardiseren. Kwaliteitsattribuutscenario’s en architectonisch significante vereisten worden gespecificeerd en geprioriteerd volgens een gedocumenteerde, organisatiebrede standaard. ADR’s zijn routine en liggen naast de code opgeslagen, C4- en arc42-documentatie wordt onderhouden volgens een gemeenschappelijk sjabloon en gestructureerde afwegingsreviews zijn vereist voor significante beslissingen over elk team.
- Niveau 4: Beheersen. De architectuur wordt gemeten aan de hand van uitgangswaarden in plaats van beweerd. Fitness functions in CI rapporteren over kenmerken als p99-latentie, laagschendingen, niet-getraceerde aanroepen en kwetsbare afhankelijkheden. ADR-dekking en documentatieversheid worden als statistieken gevolgd. Afwegingsreviews scoren opties tegen de geprioriteerde scenario’s. En afdrijving ten opzichte van afgesproken uitgangswaarden triggert een gedefinieerde reactie in plaats van een verrassing. Auditors kunnen vertrouwen op gemeten bewijs in plaats van alleen verhaal.
- Niveau 5: Orkestreren. Architectuur evolueert continu en adaptief over de hele organisatie. Data van fitness functions en incidenten voedt terug in welke kenmerken ertoe doen en waar ontwerpinspanning heen gaat. ASR-lijsten, prioriteiten van kwaliteitsattributen en vangrails worden herschikt naarmate mandaten en risico verschuiven. En de praktijk is geïntegreerd met oplevering, beveiliging en risicoplanning zodat het platform zich aanpast aan nieuwe vereisten in plaats van vanaf nul te worden herbouwd.
Ideeën voor discussie
- Welke drie kwaliteitsattributen zijn werkelijk niet onderhandelbaar voor je meest kritieke systeem, en kun je elk vandaag als meetbaar scenario formuleren?
- Hoe besluit je wanneer een beslissing “architectonisch significant” genoeg is om een ADR te rechtvaardigen tegenover het gewoon doen?
- Waar zouden fitness functions afdrijving vangen die je huidige codereview mist?
- Overarchitectureert of onderarchitectureert je organisatie, en welk bewijs vertelt je welke?
- Wie is verantwoordelijk voor architectuur in een team-van-teams-structuur, en hoe vermijd je zowel ivoren torens als totale anarchie?
- Hoe zou een externe auditor de bedoeling van je architectuur reconstrueren uit wat vandaag is opgeschreven?
Belangrijkste inzichten
- Architectuur is de verzameling beslissingen die duur zijn om terug te draaien. Neem die afwegingen bewust en leg ze vast.
- Specificeer kwaliteitsattributen als meetbare scenario’s en identificeer de architectonisch significante vereisten die structuur vormen.
- Ontwerp incrementeel en bescherm sleutelkenmerken van de architectuur met geautomatiseerde fitness functions.
- Documenteer licht maar waarheidsgetrouw met C4-diagrammen, een arc42-verhaal en ADR’s per beslissing naast de code.
- Stem rigueur af op risico: zware analyse voor onomkeerbare beslissingen met grote impact, licht proces overal elders.
- De zakelijke onderbouwing is vermeden herwerk, kortere incidenten, snellere toekomstige verandering en auditklaar bewijs.
Referenties en verder lezen
- Len Bass, Paul Clements, and Rick Kazman, Software Architecture in Practice
- Neal Ford, Rebecca Parsons, and Patrick Kua, Building Evolutionary Architectures
- Simon Brown, Software Architecture for Developers (and the C4 model)
- Mark Richards and Neal Ford, Fundamentals of Software Architecture
- George Fairbanks, Just Enough Software Architecture: A Risk-Driven Approach
- Michael Nygard, “Documenting Architecture Decisions” (the ADR pattern)
- Gernot Starke and Peter Hruschka, arc42 documentation template
- Paul Clements et al., Evaluating Software Architectures: Methods and Case Studies (ATAM)
- ISO/IEC 25010, Systems and software quality models