Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
152 lines (110 sloc) 6.45 KB

Architecture 1

«… Gute Architekten liefern gute Qualität.»


Was sind die Aufgaben eines Architekten?

  • Den Umständen entsprechend die bestmöglichen Systeme konstruieren und deren Entwicklung begleiten.
  • System soll verständlich, langlebig, wartbar, funktional, performant und sicher sein.
  • System soll robust auf Fehler reagieren.
  • Gute Architekten liefern gute Qualität.

Ich würde sagen die Rolle des Architekten sollte ein erfahrener Entwickler übernehmen


Was ist die Formel der Architektur?

Ein Diagramm das ungefähr so aussieht:

Formel der Architektur


Welche 2 Arten von Systemeingenschaften gibt es?

  1. Eigenschaften, die zur Laufzeit eines Systems gemessen werden können:
  2. Eigenschaften, die nur indirekt gemessen werden können.

Was sind Elements?

Wird in 3 Bereiche eingeteilt

  • Processing Elements: Diese Elemente führen Transformationen auf Data Elements aus.
  • Data Elements: Sämtliche Daten eines Systems werden als Data Elements einer Architektur beschrieben.
  • Connection Elements: Connection Elements können entweder Processing Elements oder Data Elements oder beides sein. Beispiele sind Procedure Calls, Shared Data und Messages.

Was ist die Form?

Wird in 2 Teile unterteilt:

  • Weighted Properties: Die Gewichtung von Eigenschaften eines Elements erlaubt es einer Architektur zwischen zentralen und dekorativen Eigenschaften zu unterscheiden. Die Properties sind in einer Architektur ein Mittel zur Definition der Rahmenbedingungen eines Elements der Architektur. Sie definieren die minimalen Anforderungen, die ein Element erfüllen muss. – Relationships: Relationships werden zur Definition der Platzierung eines Elementes in einem bestimmten Kontext von Elementen verwendet.

Was ist Rationale?

Sie ist Ausdruck der Abbildung der Systemanforderungen, die von funktionalen hin zu allgemeinen Systemanforderungen reicht.


Was ist Architektur?

Im Sinne von Software:

  • Eine Architektur ist eine Menge von signifikanten Entscheidungen über die Organisation eines Software Systems, der Auswahl der einzelnen Strukturelemente und deren Schnittstellen sowie deren Verhalten.

Allgemeiner:

  • ist Architektur die Kunst oder Wissenschaft des planvollen Entwurfs der menschlichen Umwelt.

Architektur: Die organisierte Struktur eines Systems oder einer Komponente. (IEEE)


Was ist gute Architektur?

Eine gute Architektur ist in einem konkreten Software Design sichtbar.
Ein gutes Software Design basiert immer auf einer Reihe von klar definierten Prinzipien, die die Gesamteigenschaften des Zielsystems massgeblich beeinflussen


Welche Eigenschaften einer Software kann man zur Laufzeit messen?

  • Performance
  • Security (Sicherheit)
  • Availability (Verfügbarkeit)
  • Usability (Verwendbarkeit)
  • Robustness (Stabilität)

Welche Eigenschaften kann man nicht zur Laufzeit messen?

  • Scalability (Skalierbarkeit)
  • Integrability (Integrierbarkeit)
  • Portability (Portabilität)
  • Maintainability (Wartbarkeit)
  • Testability (Testbarkeit)
  • Reusability (Widerverwendbarkeit)

Welches sind die Prinzipien des Software Designs?

  1. Modularity (Modularität)
    • Leicht austauschbare Komponenten
  2. Portability (Portabilität)
    • Komponenten auch einbaufähig in andere Software
  3. Changeability (Formbarkeit)
    • Leicht zu Erweitern
  4. Conceptual Integrity (Konzeptionelle Integrität)
    • Ähnliche Komponenten sollen auch ähnlich aufgebaut werden. Nicht 5 verschiedene Design-Patterns verwenden
  5. Intellectual Control (Intellektuelle Kontrolle)
    • Software Design sollte detailiert verstanden werden können
  6. Buildability (Herstellbarkeit)
    • Das Team muss die Software herstellen können.
  7. Coupling and Cohesion (Kopplung und Kohäsion)
    • Kopplung: Verbindung zwischen Komponenten (lose Kopplung soll angestrebt werden)
    • hohe Kohäsion: möglichst nur Eine, wohldefinierte Aufgabe in einer Klasse/Funktion
  8. Design for Change
    • Im vornherein überlegen, wie sich das System weiterentwickeln könnte und dementsprechend designen.

Welches sind die Schwierigkeiten einer Software-Architektur?

  • Komplexität (Complexity): Software ist das Komplexeste, was man auf der ganzen weiten Welt überhaupt bauen kann, weil man keine Eigenschaften weglassen kann um einfachere Modelle eines Problemes zu bekommen
  • Konformität (Conformity): Die Software interagiert mit ihrem Umfeld, welches unterschiedlich Komplex sein kann. Die Schnittstellen sind daher so Komplex wie die Systeme die sie verbinden.
  • Formbarkeit (Changeability): Software kann man sehr einfach verändern im Gegensatz zu einem Auto. Deshalb werden auch Änderungen gemacht
  • Unsichtbarkeit (Invisibility): Man sieht Software nicht, man kann sie nicht geometrisch darstellen. Es sind in eingem gewissen Sinne "Luftschlösser"

Was bedeutet «There is no Silver Bullet» in Bezug auf Software Architektur?

Es gibt keinen Patentrezept/Königsweg, ein Software-Projekt anzugehen.


Welches sind die Vorteile einer guten Architektur?

  • Bessere Kommunikation
    • Software Architektur kann als Grundlage für die Kommunikation der an einem Softwareprojekt beteiligten Personen (Domänenexperten, Entwicklern, Benutzern etc.) untereinander dienen.
  • Bessere, logischere Struktur im System
    • Software Architektur kann als die treibende Kraft des System-Designs fungieren.
  • Wiederverwendbarkeit
    • Eine Software Architektur steckt den Rahmen für die Wiederverwendung einzelner Software-Artefakte ab.
  • Bessere Qualität
    • Software Architektur ist der "Träger" von Qualitätscharakteristika und nichtfunktionaler Eigenschaften, die nicht an einer bestimmten Systemkomponente festgemacht werden können.
  • Vereinfacht weitere Projekte
    • Software Architektur kann als Invariante über mehrere Softwareprojekte mit minimal unterschiedlichen Systemanforderungen gelten und somit den Entwicklungsprozess für eine Serie ähnlicher Projekte vereinfachen.
  • Bessere Analyse-Möglichkeiten
    • Software Architektur ist die Basis für eine umfassende Betrachtung einer Software und erlaubt die Analyse bestimmter Systemeigenschaften bereits zu einem sehr frühen Entwicklungszeitpunkt des Systems.

Wie Beschreibe ich eine Architektur?

Mit Patterns

Was ist das C4-Model?

Ein Modell zum Visualisieren von Software-Architektur (siehe Bild «C4-Modell»).
Das Modell besteht aus 4 Levels:

  • Level 1: Context
  • Level 2: Containers
  • Level 3: Components
  • Level 4: Code

C4-Modell{ width=550px }

You can’t perform that action at this time.