Grundlagen Flashcards
(41 cards)
Was sind die gemeinsamen Konzepte der unterschiedlichen Architekturdefinitionen?
Bausteine (Building Blocks, Komponenten, Packages), Beziehungen (relationships) zwischen den Bausteinen, Beziehungen der Bausteine zur Umwelt (Außenwelt, Kontext), Prinzipien, Regeln, Guidelines…
Was ist das wichtigste Entwurfsziel?
Qualität
Warum nimmt Softwarearchitektur eine zentrale Roll in Projekten ein?
Sie unterstützt den Übergang von der Analyse- zur Implementierungsphase und ist somit Teil des Software Lifecycles.
Was sind die für eine Architektur typischen Sichten auf ein System?
- Kontextabgrenzung (Vogelperspektive & Nachbarsysteme)
- Laufzeitsicht
- Bausteinsicht
- Verteilungssicht
Was macht eine gute Softwarearchitektur aus?
- Definition von Design Guidelines
- Spezifikation notwendiger Eckpunkte
- Schafft Verständnis des Systems bei den Stakeholdern
- Dokumentation von Designentscheidungen
- Sinnvolle Aufteilung von Komponenten
- Sicherstellung der Erfüllung funktionaler und nicht-funktionaler Anforderungen an das System
Was sind die Ziele von Softwarearchitektur?
- High-Level Struktur des Systems festlegen => Anforderungen und Qualitätsziele werden erfüllt
- Zentrale Designparadigmen festlegen => Konsistenz im Entwurf (gleiche Probleme werden auf dieselbe Art gelöst)
- Zuweisen von gewünschten Funktionalitäten zu Systembausteinen => Verständlichkeit des Systems wird sichergestellt
- Anforderungen an Qualität festlegen => Nachvollziehbarkeit der Designentscheidungen
- Unterstützung des Entstehungsprozesses, der Wartung und des Betriebs des Systems => Fokus auf Langlebigkeit und Wartbarkeit
- Stakeholder unterstützen, das System zu verstehen => Wiederverwendbarkeit von Systemkomponenten oder Konzepten
Was sind die Aufgabenbereiche der Softwarearchitektur?
- Qualitätsanforderungen und -ziele erfüllen
- Konzeptionelle Integrität (Konsistenz)
- Verständlichkeit des Systems sicherstellen
- Fokus auf Langlebigkeit
- Unterstützung des gesamten Lebenszyklus
- Vereinfachung der Wiederverwendung von Bestandteilen
Was bedeutet Komplexität?
Complexity is the degree to which a system’s design or code is difficult to understand because of numerous components or relationships among components
Welche Einflussfaktoren auf eine Softwarearchitektur gibt es?
- Funktionale Anforderungen
- Nichtfunktionale/Qualitätsanforderungen
- Externe Einflussfaktoren
Architekten prüfen die Anforderungen hinsichtlich der Umsetzbarkeit und stellen ihre korrekte Umsetzung sicher
Welche Aufgaben hat ein Softwarearchitekt?
- Anforderungen und Randbedingungen klären
- Die Architektur evaluieren
- Architektur bewerten und kommunizieren
- Architektur entwerfen oder auswählen
- Implementation begleiten und anleiten
Was sind die drei Grundmotive eines Architekten?
- Effektivität
- Agilität
- Pragmatismus
Wie lautet der Satz von Conway und was bedeutet er?
“Die Strukturen von Organisationen und der von ihnen entwickelten Architekturen sind isomorph.”
Die Entwurfsentscheidungen, die Architektur und das System haben auch Auswirkungen auf die Organisation.
Wie entstehen Softwarearchitekturen nicht?
- Entkoppelt von der Realität echter Systeme
- Losgelöst von Kunden, Auftraggebern und dem Entwicklerteam
- Angepasst an eine bestimmte Technologie
Was sind die Stationen des Design Cycle?
- Start: Informationen sammeln, Ideen für das System entwickeln
- Anforderungen und Randbedingungen klären
- Risiken identifizieren
- Strukturen und technische Konzepte entwerfen
- Architektur kommunizieren
- Implementation begleiten und überwachen
- Die Architektur bewerten
- Ziel: die Auslieferung des Systems
Was sind die unterschiedlichen nichtfunktionalen bzw. Qualitätsanforderungen?
- Übertragbarkeit
- Funktionalität
- Effizienz
- Kompatibilität
- Benutzbarkeit
- Zuverlässigkeit
- Sicherheit
- Wartbarkeit
Wie werden Qualitätsanforderungen konkretisiert und was sind die Eigenschaften dieses Hilfsmittels?
Qualitätsanforderungen werden über Szenarien konkretisiert. Diese enthalten
- den Auslöser (stimulus)
- die Quelle des Auslösers (source)
- die Umgebung (environment)
- den Systembestandteil (artifact)
- die Antwort des Systems durch seine Architektur (response)
- die Antwortmetrik (response measure)
Wer sind für eine Architektur relevante Stakeholder und wie kann man deren Interesse gut dokumentieren?
- Marketing (neue Features)
- Management (kostengünstig)
- IT Operations (Stabilität)
- Maintenance (Erweiterbarkeit)
- User (Benutzbarkeit)
Die Akteure können in einer Stakeholder-Tabelle dokumentiert werden
Was sind organisatorische Einflussfaktoren auf die Architektur?
- Struktur der Organisation
- Ressourcen
- Standards der Organisation
- Juristische Faktoren
Was sind typische Risiken im Design Lifecycle?
- Begrenze Verfügbarkeit der Ressourcen
- Eignung der Ressourcen
- Fehlende Expertise
- Neue ungetestete Produkte
- Kritische externe Interfaces
- Verfügbarkeit technischer Infrastruktur
- Unzureichend formulierte Anforderungen
- Viele Änderungen der Anforderungen
- Fehlende Dokumentation
- Mehrdeutigkeit
- Fehlende Priorisierung
- Enger Zeitplan
Welche Vorgehensweisen gibt es beim iterativen/inkrementellen Architekturentwurf?
- top-down (abstrakt zu detailliert)
- bottom-up (detailliert zu abstrakt)
- outside-in (ausgehend von externen Schnittstellen zum Inneren des Systems)
- inside-out (Systeminneres zu Schnittstellen)
Welche drei Konzepte charakterisieren die Entwurfsgrundlagen einer Architektur?
- Maximen (werden als allgemeingültig vorausgesetzt)
- Prinzipien (konkrete, etablierte Regeln des methodischen Software Engineering)
- Heuristiken (Daumenregeln oder Handlungsempfehlungen)
Was sind die Maximen der Softwarearchitektur (direkt auf den Code bezogen)?
- KISS (Keep it Small and Simple)
- YAGNI (You Aren’t Gonna Need It)
- DRY (Don’t Repeat Yourself)
Welche Maximen gibt es, die sich nicht direkt auf den Code beziehen?
- Es gibt kein Patenrezept
- Änderungen sollten erwartet und begrüßt werden
- Qualitätsanforderungen sollten immer eingehalten werden
- Die Stakeholder beurteilen den Erfolg von Lösungen
- Voraussetzungen, Annahmen und Entscheidungen sollten immer explizit gemacht werden
Was sind die allgemeinen Prinzipien der Softwarearchitektur?
- Anforderungen sind höher als Prinzipien zu gewichten
- Strebe nach loser Kopplung
- Strebe nach hoher Kohäsion
- Trenne Verantwortlichkeiten
- Achte auf Abstraktion, Kapselung, Geheimnisprinzip
- Zerlege das System in geeignete Module
- Vermeide zyklische Abhängigkeiten
- Dokumentiere angemessen