Starters
- Was sind die Vorteile der Software Architektur?
- auswendig lernen
- Stakeholder Kommunikation: Die Architektur bietet eine Grundlage fuer die Diskussion mit Stakeholders.
- System Analyse: Es kann ueberprueft werden, inwiefern die Qualitaetsanforderungen eingehalten werden
- Large-Scale Reuse: Komponenten und Interfaces koennen in Zukunft wiederverwendet werden. Auch die ganze Architektur kann wiederverwendet werden.
- Projektplanung: Architektur hilft besser die Kosten schaetzen, Abhaengigkeiten analysieren, Aufgaben zwischen Teams verteilen und Meilestones setzen, Change Analasys durchfuehren
- Inwiefern hilft die Softwarearchitektur bei Wiedeverwendung
- auswendig lernen
- Man kann die Komponenten und die Interfaces wiederverwenden
- Man kann die Architekturentscheidungen wiederverwenden
- Von was wird die Softwarearchitektur beeinflusst?
- auswendig lernen
- Anforderungen: funktionale, quality, constraints
- Wiederverwendung von bereits vorhandenen Komponenten, Interfaces usw.
- Organisationsstruktur
- Erfahrungen von Teammitglieder und Teamleads
- Wieso ist das oft so, dass sich die Organisationsstruktur in der Architektur wiederspiegelt?
- Zum Beispiel, man hat ein Produkt, aber die Teile davon machen die verschiedene Abteilungen - Frontend, Datenbanken, Backend, QA, Infrastruktur
- Dann bietet es sich, die Architektur nach Diesen bereichen zu verteilen, um das Knowledge-Sharing und Kommunikation zu optimieren.
- Architectural Reuse Konzepte
- Architekturstil
- Architekturmuster
- Referenzarchitectur
- Software Production Lines
- Welche Aufgaben hat Software Architekt?
- Spezifikation von Architektur aus vorhandenen Komponenten und Interfaces
- Spezifikation von neuen Komponenten
- Verwendung von Architekturstilen, Architekturpatterns, Referenzarchitekturen
- Wichtige Entwurfentscheidungen
- Performanzvorhersagen basiert auf Spezifikation
- Delegierung von Implementierungsaufgaben zu den Entwicklungsteams
- Ueberwachung und Unterstuetzung von Entwicklungsprozess
Management
- Ist Projektplanung nicht eher Management?
- Ja, aber durch die Unterteilung des Systems in Subkomponenten wird es wesentlich einfacher die Implementierungsdauer und Kosten abzuschaetzen.
- In diesem Fall spielt Softwarearchitekt als ein Manager.
- Managers alleine werden in Allgemeinen das nicht richtig unterteilen koennen.
- Software Architektur ist ein technisches Dokument. Warum kann man das zur Projektplannung nutzen?
- Divide and Conquer Prinzip
- Man teilt das System in Komponenten. Fuer jede einzelne Komponente kann man besser und leichter die Kostenabschetzung treffen.
- Wieso hilft Architektur auch bei Kostenschaetzung?
- Falls wir schon aehnliche Komponente haben, kennen wir schon aus Historie die Kosten fuer diese Komponente. Dann muss man entweder nur ein Adapter fuer diese Komponente entwickleln, oder neue Komponente erstellen (falls alte inkompatibel war) und annehmen, dass aehnliche Komponte wird auch in gleichem Bereich kosten.
- Wie hilft Conway’s Law bei der Architektur?
- Firma hat eine Abteilungsstruktur, die wird nicht nach jedem Projekt umgebaut
- Man kann diese Struktur nehmen und die Architektur entsprechend bauen
- What is COTS?
- Commercial-off-the-shelf components
Architekturstil
- Was ist Architekturstil?
- Set von Designentscheidungen
- Hauptzweck von Architekturstile - Einschraenkung von Entwurfsraum
- Coarse-grained decision
- Sie haben gesagt, dass Architekturstile helfen, um den Entwurfsraum einzuschraenken. Ist das nicht eher schlechter?
- Nein, das ist sehr hilfreich
- Damit erreicht man eine klare Struktur und Ordnung.
- Sonst wird das System sehr chaotisch, und die Wartung und Weiterentwicklung viel teurer werden.
- Man kann im Prinzip fuer ein System glecihzeitig Call-And-Return REST implementieren und parallel einen Message Broker benutzen, aber dann wird man sehr schnell Probleme bekommen.
- Wann kann man Architekturstile kombinieren?
- Architekturstile duerfen nie in der gleichen Dimension auf einer Ebene gemischt werden
- Aber verschiedene Stile in verschiedenen Dimensionen sind OK
- Welche Dimensionen gibt es?
- Decomposition: Wie ist system in Komponenten und Subsysteme unterteilt. Beispiel: Microservices (Trennung nach Funktionen) und Schichtenarchitektur (Trennung nach Technologie). Falls wir Microservices und Schichtenarchitektur gleichzeitig auf einer Ebene nutzen, wird die Beschreibung der Architektur sehr verwirrend. Aber es sprict nichts dagegen, Microservices zu benutzen, und dann jeden Microservices als Schichtenarchitektur zu betrachten.
- Kommunikation: Wie die Komponente und Subsysteme miteinander kommunizieren. Beispiel: Call-Return vs Event-Based.
- Ein Beispiel welche Stile kombiniert man
- Microservices, und in jedem Microservice eigene Schichtenarchitektur
- Was ist Primary und Secondary Decomposition?
- Ein Architekturstil pro Dimension auf Hauptebene (Microservices)
- Anderes Architekturstil pro Dimension fuer zweite Ebene (Schictenarchitektur)