Software Architecture - Cheatsheet.pdf

Software Architecture - Cheatsheet
Software Architecture - Cheatsheet Singleton Pattern: Sorgt dafür, dass eine Klasse nur eine Instanz hat. Definition: Stellt sicher, dass eine Klasse genau eine Instanz hat. Details: Nützlich für globale Zustände oder Konfigurationen. Implementierung meist durch eine statische Methode, die die einzige Instanz zurückgibt. Thread-Sicherheit beachten! Beispiel in Java: class Singleton { private sta...

© StudySmarter 2024, all rights reserved.

Software Architecture - Cheatsheet

Singleton Pattern: Sorgt dafür, dass eine Klasse nur eine Instanz hat.

Definition:

Stellt sicher, dass eine Klasse genau eine Instanz hat.

Details:

  • Nützlich für globale Zustände oder Konfigurationen.
  • Implementierung meist durch eine statische Methode, die die einzige Instanz zurückgibt.
  • Thread-Sicherheit beachten!
  • Beispiel in Java:
class Singleton {   private static Singleton instance;   private Singleton() {}   public static Singleton getInstance() {       if (instance == null) {           synchronized (Singleton.class) {               if (instance == null) {                   instance = new Singleton();               }           }       }       return instance;   }}

Microservices: Zerlegung der Anwendung in eine Sammlung kleiner, lose gekoppelter Dienste.

Definition:

Aufteilung einer monolithischen Anwendung in eine Sammlung kleiner, unabhängig von einander arbeitender Dienste.

Details:

  • Jeder Dienst ist eigenständig und führt eine spezialisierte Aufgabe aus.
  • Dienste kommunizieren über APIs (typischerweise RESTful oder gRPC).
  • Ermöglicht unabhängiges Skalieren und Entwickeln der einzelnen Dienste.
  • Erfordert ein durchdachtes Deployment und Monitoring der einzelnen Dienste.
  • Höhere Komplexität in Bezug auf Datenkonsistenz und Transaktionen.
  • Benötigt DevOps-Tools und Continuous Integration/Continuous Delivery (CI/CD).

Extreme Programming (XP): Fokus auf technische Exzellenz und fortlaufende Feedbackschleifen.

Definition:

Extreme Programming (XP) ist eine agile Softwareentwicklungsmethode, die sich auf technische Exzellenz und ständige Feedbackschleifen konzentriert.

Details:

  • Technische Exzellenz: Praktiken wie Testgetriebene Entwicklung (TDD), kontinuierliche Integration, Refactoring.
  • Feedbackschleifen: Regelmäßige Code-Reviews, Pair Programming, häufige Releases und stand-up Meetings.
  • Kernwerte: Kommunikation, Einfachheit, Feedback, Mut und Respekt.
  • Iterativ und inkrementell: Entwicklung erfolgt in kurzen Zyklen mit laufenden Anpassungen.

Wartbarkeit: Fähigkeit des Systems, Änderungen einfach umzusetzen.

Definition:

Wartbarkeit: Fähigkeit des Systems, Änderungen einfach umzusetzen.

Details:

  • Modularität: Unabhängige Module erleichtern Änderungen.
  • Dokumentation: Hilft, den Code zu verstehen.
  • Testbarkeit: Automatisierte Tests vereinfachen Überprüfung von Änderungen.
  • Lesbarkeit: Klare und verständliche Code-Struktur.
  • Kohäsion und Kopplung: Hohe Kohäsion und niedrige Kopplung fördern Wartbarkeit.
  • Versionskontrolle: Nachvollziehbarkeit von Änderungen.

Architekturdiagramme: Grafische Darstellung der Systemkomponenten und ihrer Beziehungen.

Definition:

Grafische Darstellung der Systemkomponenten und ihrer Beziehungen.

Details:

  • Dienen zur Visualisierung der Struktur eines Softwaresystems.
  • Unterstützen die Kommunikation zwischen Stakeholdern.
  • Ermöglichen eine bessere Planung und Analyse von Systemarchitekturen.
  • Typen: UML-Diagramme, Schichten- und Komponenten-Diagramme, C4-Modell.
  • Ziele: Klarheit, Übersicht, Wartbarkeit, und Skalierbarkeit des Systems.

Event-Driven Architecture: Reaktion auf und Verarbeitung von Ereignissen in Echtzeit.

Definition:

Architekturmuster, das Ereignisse in Echtzeit bemerkt und darauf reagiert, oft verwendet für Systeme, die auf Änderungen schnell reagieren müssen.

Details:

  • Zentrale Konzepte: Ereignisse, Event Producer, Event Consumer, Event Broker
  • Ereignisse (Events) sind signifikante Änderungen im Systemzustand
  • Produzenten erzeugen Ereignisse, Konsumenten verarbeiten sie
  • Event Broker vermittelt Ereignisse zwischen Produzenten und Konsumenten
  • Vorteile: Skalierbarkeit, Entkopplung, Reaktivität
  • Nachteile: Komplexität, potenzielle Inkonsistenzen
  • Verwendete Technologien: Apache Kafka, RabbitMQ, AWS Lambda

Skalierbarkeit: Fähigkeit, den Umfang und die Leistung der Software zu erhöhen.

Definition:

Fähigkeit einer Software, auf zunehmende Last oder Benutzeranforderungen mit Erweiterung in Kapazität oder Leistung zu reagieren.

Details:

  • Vertikale Skalierung: Erhöhung der Ressourcen (z.B. CPU, RAM) eines einzelnen Servers.
  • Horizontale Skalierung: Hinzufügen weiterer Server zur Bewältigung der Last.
  • Wichtig für hohe Verfügbarkeit und Performance.
  • Muss bereits in der Entwurfsphase berücksichtigt werden.
  • Messbare Kenngrößen: Durchsatz, Latenz, Antwortzeiten.

UML: Universelle Modellierungssprache zur Dokumentation und Planung von Systemen.

Definition:

Visualisierungs- und Modellierungssprache für die Planung und Dokumentation von Softwaresystemen. Standardisiert in der Informatik für objektorientierte Modellierung.

Details:

  • Use-Case-Diagramme: Visualisierung von Benutzer-Interaktionen
  • Klassendiagramme: Struktur und Beziehungen von Klassen
  • Sequenzdiagramme: Ablauf von Prozessen und Nachrichten
  • Aktivitätsdiagramme: Modellierung von Workflows
  • Zustandsdiagramme: Darstellung von Zustandsänderungen
Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden