Konstruktives Software Engineering - Cheatsheet.pdf

Konstruktives Software Engineering - Cheatsheet
Konstruktives Software Engineering - Cheatsheet Wasserfallmodell und agile Methoden Definition: Wasserfallmodell: Sequentielles Vorgehensmodell mit klar definierten Phasen: Analyse, Design, Implementierung, Test. Agile Methoden: Iterative und inkrementelle Ansätze, die auf Flexibilität und schnelle Anpassung setzen, z.B. Scrum und Kanban. Details: Wasserfallmodell: Linear, strikt sequentiell Gerin...

© StudySmarter 2024, all rights reserved.

Konstruktives Software Engineering - Cheatsheet

Wasserfallmodell und agile Methoden

Definition:

Wasserfallmodell: Sequentielles Vorgehensmodell mit klar definierten Phasen: Analyse, Design, Implementierung, Test. Agile Methoden: Iterative und inkrementelle Ansätze, die auf Flexibilität und schnelle Anpassung setzen, z.B. Scrum und Kanban.

Details:

  • Wasserfallmodell:
    • Linear, strikt sequentiell
    • Geringe Flexibilität
    • Geeignet für Projekte mit klaren Anforderungen
  • Agile Methoden:
    • Iterativ und inkrementell
    • Hohe Flexibilität
    • Zentrale Elemente: User Stories, Sprints, Daily Stand-up Meetings
    • Beispiele: Scrum, Kanban
  • Vergleich:
    • Wasserfall: Stabilität, Dokumentation
    • Agil: Anpassungsfähigkeit, Kundeneinbindung

Unified Modeling Language (UML)

Definition:

UML ist eine standardisierte Modellierungssprache im Software Engineering zur Spezifikation, Konstruktion und Dokumentation von Software-Systemen.

Details:

  • Diagrammtypen umfassen: Anwendungsfalldiagramme, Klassendiagramme, Sequenzdiagramme, Aktivitätsdiagramme, Zustandsdiagramme
  • Nutzt grafische Notation zur Darstellung von objektorientierten Konzepten
  • Erlaubt abstrakte und detaillierte Modellierung
  • Unterstützt verschiedene SDLC-Phasen (Analyse, Design, Implementierung, Testing)
  • Integrationswerkzeuge (z.B. Rational Rose, MagicDraw)
  • Konzepte: Akteure, Use Cases, Klassen, Objekte, Beziehungen, Zustände, Aktivitäten
  • Industriestandard durch die Object Management Group (OMG)

Design Patterns

Definition:

Wiederverwendbare Lösungen für häufig auftretende Probleme in der Softwareentwicklung.

Details:

  • Ermöglichen eine gemeinsame Sprache zur Kommunikation zwischen Entwicklern.
  • Sind in drei Hauptkategorien unterteilt: Erzeugungsmuster, Strukturmuster, Verhaltensmuster.
  • Beispiele: Singleton, Factory, Observer, Decorator, Strategy.

Test-driven Development (TDD)

Definition:

schrittweise Entwicklung, bei der zuerst Tests geschrieben werden, bevor der eigentliche Code implementiert wird

Details:

  • Iterativer Zyklus: Test schreiben, Code implementieren, Test ausführen
  • Stellt sicher, dass der Code die Spezifikationen erfüllt
  • Verlangt kleine, isolierte Testfälle (Unit Tests)
  • Ziel: Robustheit und Wartbarkeit des Codes
  • Beispiel: Schreibe einen Fehlschlagtest \texttt{assert(x + 1 == x)} für die Funktion \texttt{increment(x)}
  • TDD-Zyklus: Red (Test schlägt fehl), Green (Code schreiben bis Test erfolgreich), Refactor (Code optimieren)

Microservices und Service-Oriented Architecture (SOA)

Definition:

Architekturstile zur Modularisierung und Organisation von Softwareanwendungen.

Details:

  • Microservices: Kleine, unabhängige Dienste, die spezifische Geschäftsprozesse abdecken.
  • SOA: Große, miteinander verbundene Dienste zur Umsetzung von Geschäftsprozessen.
  • Kommunikation oft über APIs, Protokolle wie HTTP/REST, gRPC, AMQP.
  • Microservices: Fokus auf Continuous Deployment, skalierbar und technologisch divers.
  • SOA: Fokus auf Wiederverwendbarkeit, Integration und breite Unternehmenslandschaft.
  • Beide ermöglichen Independence der Entwicklungsteams und einfachere Wartung.

Risikomanagement in der Softwareentwicklung

Definition:

Systematischer Prozess zur Identifizierung, Bewertung und Priorisierung potenzieller Risiken in Softwareprojekten, um negative Auswirkungen zu minimieren.

Details:

  • Ziele: Risikoerkennung, -analyse, -bewertung, -bewältigung
  • Risikokategorien: technologische, organisatorische, personelle, externe
  • Methoden: SWOT-Analyse, FMEA, Monte-Carlo-Simulation
  • Phasen: Risikoidentifikation, Risikobewertung, Risikominderung, Risikokontrolle
  • Tools: JIRA, Microsoft Project
  • Kennzahlen: Eintrittswahrscheinlichkeit (p), Schadensausmaß (s), Risikowert (r = p * s)

Refactoring-Techniken

Definition:

Verbessern der internen Struktur eines Software-Systems ohne dessen externes Verhalten zu ändern.

Details:

  • Code-Qualität erhöhen
  • Wartbarkeit verbessern
  • Techniken:
    • Extrahiere Methode (\textit{Extract Method})
    • Methoden zusammenführen (\textit{Inline Method})
    • Klassenhierarchie umstrukturieren (\textit{Refactor Class Hierarchy})
  • Werkzeuge: IntelliJ IDEA, Eclipse, Refactoring-Browser

Schichtenarchitektur

Definition:

Architekturmuster zur Strukturierung von Softwaresystemen in Schichten, die jeweils spezifische Aufgaben und Verantwortlichkeiten übernehmen.

Details:

  • Schichten: Präsentation, Anwendungslogik, Datenzugriff
  • Kommunikation: Meist Top-Down, jede Schicht nutzt nur die darunterliegende
  • Vorteile: Modularität, Wiederverwendbarkeit, leichtere Wartung
  • Nachteile: Schichtenabhängigkeit, mögliche Performanceprobleme
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