Introduction Flashcards
Ist Architektur ein fortlaufender Prozess?
Ja
Ist Architektur auch vor der Entwicklungsphase relevant?
Ja
Welche Aspekte beeinflussen Architektur?
- Funktionale / nicht Funktionale Anforderungen
- Budget
- Erfahrung der Beteiligten
- Verfügbare Technologie
- Bereits existierende Implementierung
- Vorhandene Frameworks und Libraries
Ist die Entwicklung von Architektur iterativ?
Ja (wir verbessern kontinuierlich)
Was ist ein Ball of Mud?
Ein Antipattern
Ball of Mud beinhaltet keine Architektur
Im Prinzip: Spaghetti Code, zusammengeschustert
Was ist eine Layered Architektur?
- Standard Pattern für JAVA EE
- Besteht aus
- Presentation Layer
- Business Layer
- Persistence Layer (oft zusammengefasst mit Business)
- Database Layer
Was ist Komponentenbasierte Architektur (CBA)?
React, Vue
Komponente (View) beinhaltet auch Logik und Helper Methoden
Beispiel: HTML, JavaScript und CSS in einer Komponente
Was ist vertikales skalieren?
Wir haben einen Server
Für diesen wird die Hardware verbessert oder dieser durch einen stärkeren ersetzt
Was ist horizontales skalieren?
Mehrere Server
Die Last verteilt sich auf verteilte Systeme
Meist günstiger
Was ist verteilte Architektur?
Konfiguration und Funktionalität wird über mehrere Systeme verteilt
Vorteile der verteilten Architektur?
- Skalierbarkeit
- Nebenläufigkeit
- Fehlertoleranz (Ausfallsicherheit)
Nachteile der verteilten Architektur?
- Komplexität
- Sicherheit
- Wartung
Welche Synchronisations Architekturen gibt es?
- Synchron / Lokal
- Synchron / Remote
- Asynchron / Lokal
- Asynchron / Remote
Was ist eine Product Line?
Selbe Anwendung aber
- verschiedene Features
- verschiedene Interfaces
Beispiel. WolframAlpha (free, paid)
Was ist ein Product Family?
Selbe Architektur aber
- verschiedene Prozesse
- verschiedene Abstraktionen
Beispiel: Websystem für Banken und Versicherungen
Welche Aufgaben hat ein Software Architekt?
- Analyse der Anforderungen
- Auswahl der Sprachen, Tools und Komponenten
- Umsetzung der Architektur
- Überwachung des Übergangs zwischen Entwicklungsphasen
Welche Teamstruktur gibt es?
- Projektmanager
- Softwarearchitekt
- Entwickler
- (Tester, Deployer, Performance Spezialist)
Was macht der Projektmanager im Team?
- Organisation
- Fortschritt im Auge behalten
- Kostenkontrolle
- Human Ressource
- Kommunikation mit oberem Management / Kunden
Was macht der Softwarearchitekt im Team?
- Verantwortlich für Code und Architektur Qualität
- Wählt die passenden Technologien
- Kommuniziert mit Experten auf Kundenseite
- Schätzt Kosten
- Vergibt Aufgaben an Entwickler
Unterschied Layer und Components?
- Layer splitten Funktionalitäten auf.
- Layer können mehrere Komponenten beinhalten.
- Komponenten sind ein Konstrukt, die die gesamte Logik beinhalten.
Beispiel für eine Plugin Architektur?
In-App Käufe für eine App
Beispiel für verteilte und persistente Architektur?
Server Backend um Daten in einer Cloud zu speichern