Self-Assessment Questions Software Architecture Flashcards
Wat zijn de vier dimensies die softwarearchitectuur definiëren?
Structuur, architectuurkenmerken, afhankelijkheden en constructietechnieken.
Wat is het verschil tussen een architectuurbeslissing en een ontwerpbeginsel?
Een architectuurbeslissing bepaalt de algemene structuur van het systeem, terwijl een ontwerpbeginsel specifieke richtlijnen biedt voor implementatie.
Noem de acht kernverwachtingen van een softwarearchitect.
Technisch leiderschap, ontwerp en documentatie, besluitvorming, communicatie, samenwerking, mentoring, risicobeheer en naleving van standaarden.
Wat is de Eerste Wet van Softwarearchitectuur?
Alles in softwarearchitectuur draait om het maken van afwegingen.
Waarom werkt de traditionele scheiding tussen architectuur en ontwikkeling niet meer?
Het veroorzaakt communicatieproblemen en belemmert flexibele samenwerking en iteratieve verbeteringen.
Noem de drie kennisniveaus in de kennisdriehoek en geef een voorbeeld van elk.
Praktijkkennis (hands-on ervaring), conceptuele kennis (algemene principes) en proceskennis (projectbeheer).
Waarom is technische breedte belangrijker dan technische diepte voor een architect?
Een brede kennisbasis stelt architecten in staat om systemen holistisch te ontwerpen en samen te werken met verschillende teams.
Hoe kunnen architecten hun technische diepgang behouden?
Door hands-on werk te doen, code reviews uit te voeren en betrokken te blijven bij implementatiedetails.
Wat betekent de term connascence?
Het beschrijft de mate van afhankelijkheid tussen elementen in een systeem.
Wat is het verschil tussen statische en dynamische connascence?
Statische connascence verwijst naar afhankelijkheden zichtbaar in de code, terwijl dynamische afhankelijkheden zich voordoen tijdens runtime.
Wat betekent connascence van type? Is het statisch of dynamisch?
Het beschrijft afhankelijkheden van types tussen componenten; het is statisch.
Wat is de sterkste vorm van connascence?
Connascence van locatie, waarbij elementen precies moeten worden geplaatst.
Wat is de zwakste vorm van connascence?
Connascence van naam, waarbij alleen overeenstemming in namen vereist is.
Welke vorm van connascence heeft de voorkeur in een codebasis: statisch of dynamisch?
Statisch, omdat het gemakkelijker te controleren en te beheren is.
Welke drie criteria moet een kenmerk hebben om als architectuurkenmerk te worden beschouwd?
Het moet meetbaar, significant en relevant voor de architectuur zijn.
Wat is het verschil tussen een impliciet en expliciet kenmerk? Geef een voorbeeld van elk.
Impliciet: automatisch verkregen (bijv. betrouwbaarheid in een gedistribueerd systeem). Expliciet: vereist specifieke maatregelen (bijv. beveiliging).
Geef een voorbeeld van een operationeel kenmerk.
Beschikbaarheid.
Geef een voorbeeld van een structureel kenmerk.
Modulariteit.
Geef een voorbeeld van een cross-cutting kenmerk.
Beveiliging.
Welk architectuurkenmerk is belangrijker: beschikbaarheid of prestatie?
Dit hangt af van de systeemvereisten; beide kunnen kritisch zijn.
Waarom is het verstandig om het aantal kenmerken te beperken dat een architectuur ondersteunt?
Om complexiteit en conflicten tussen kenmerken te verminderen.
Waar of niet waar: de meeste architectuurkenmerken komen voort uit bedrijfsvereisten en gebruikersverhalen.
Waar
Welke architectuurkenmerken ondersteunen snelle time-to-market?
Agility, testbaarheid en schaalbaarheid.
Wat is het verschil tussen schaalbaarheid en elasticiteit?
Schaalbaarheid verwijst naar het uitbreiden van resources; elasticiteit verwijst naar het dynamisch aanpassen van resources aan vraag.