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.
Welke kenmerken zijn belangrijk bij grote klantenacquisities?
Schaalbaarheid, elasticiteit en prestaties.
Waarom is cyclomatische complexiteit zo’n belangrijke metriek voor architectuur?
Het meet de complexiteit van de code, wat helpt bij het beoordelen van onderhoudbaarheid en testbaarheid.
Wat is een architectuurfitnessfunctie en hoe kan deze worden gebruikt?
Een fitnessfunctie meet hoe goed een architectuur voldoet aan specifieke kenmerken, zoals schaalbaarheid of prestaties.
Geef een voorbeeld van een fitnessfunctie om schaalbaarheid te meten.
Een test die de responstijd meet bij een toenemend aantal gelijktijdige gebruikers.
Wat is het belangrijkste criterium voor een architectuurkenmerk om fitnessfuncties mogelijk te maken?
Het moet meetbaar zijn.
Wat is een architectonisch quantum en waarom is het belangrijk?
Een quantum is een set componenten met gedeelde kenmerken; het helpt bij het definiëren van losgekoppelde eenheden.
Een systeem met één gebruikersinterface en vier onafhankelijke services met eigen databases: is dit één quantum of vier? Waarom?
Vier, omdat elke service zijn eigen kenmerken heeft.
Een systeem met een admin- en klantgedeelte: hoeveel quanta zou dit hebben en waarom?
Twee quanta, omdat ze verschillende domeinen en kenmerken hebben. Als ze een database delen, zou deze in het admin-quantum moeten zitten.
Hoe worden componenten meestal gemanifesteerd binnen een applicatie of service?
Als groepen klassen of bronbestanden met een specifieke verantwoordelijkheid.
Wat is het verschil tussen technische en domeinpartitionering?
Technische partitionering splitst op basis van technologie, terwijl domeinpartitionering splitst op basis van bedrijfsdomeinen.
Wat is het voordeel van domeinpartitionering?
Het weerspiegelt bedrijfslogica, wat begrijpelijkheid en onderhoudbaarheid bevordert.
Wanneer zou technische partitionering een betere keuze zijn?
Bij gedeelde technische functionaliteiten zoals logging of authenticatie.
Wat is de entity trap en waarom is dit geen goede benadering voor componentidentificatie?
Het overspecialiseert componenten rond entiteiten, wat leidt tot hoge koppeling.
Wanneer zou je de workflowbenadering verkiezen boven de actor/actie-benadering?
Bij complexe workflows die meerdere stappen of componenten omvatten.
Noem de acht valkuilen van gedistribueerd computeren.
Netwerk is betrouwbaar, latency is nul, bandbreedte is oneindig, netwerk is veilig, topologie verandert niet, transportkosten zijn nul, netwerk is homogeen, en netwerkstoringen komen niet voor.
Noem drie uitdagingen die gedistribueerde architecturen hebben en monolithische architecturen niet.
Latency, netwerkstoringen en gegevensconsistentie.
Wat is stempel-koppeling?
Wanneer een interface meer gegevens ontvangt dan nodig is, wat leidt tot onnodige afhankelijkheid.
Hoe kun je stempel-koppeling aanpakken?
Door interfaces te beperken tot alleen de benodigde gegevens of door meerdere kleinere interfaces te creëren.
Wat is het verschil tussen een open en gesloten laag?
Bij een gesloten laag moeten verzoeken elke tussenliggende laag doorlopen; bij een open laag kunnen ze lagen overslaan.
Beschrijf het concept van lagen van isolatie en de voordelen ervan.
Het scheidt verantwoordelijkheden en verbetert onderhoudbaarheid.
Wat is het architectonische sinkhole-anti-patroon?
Wanneer verzoeken door meerdere lagen gaan zonder enige verwerking, wat inefficiënt is.
Welke architectuurkenmerken stimuleren het gebruik van gelaagde architectuur?
Eenvoud, modulariteit en onderhoudbaarheid.
Waarom ondersteunt de gelaagde architectuurstijl testbaarheid slecht?
Hoge koppeling tussen lagen maakt het moeilijk om afzonderlijke onderdelen te testen.
Waarom ondersteunt de gelaagde architectuurstijl agility slecht?
Wijzigingen in een laag kunnen grote impact hebben op andere lagen.