Advanced Design and Programming (5-ECTS) - Cheatsheet.pdf

Advanced Design and Programming (5-ECTS) - Cheatsheet
Advanced Design and Programming (5-ECTS) - Cheatsheet Definition und Zweck von Entwurfsmustern Definition: Wiederverwendbare Lösungen für wiederkehrende Probleme in der Softwareentwicklung. Details: Standardisierte Entwürfe für komplexe Softwarestrukturen Verbessern Kommunikation unter Entwicklern Ermöglichen effektive und effiziente Entwicklung Reduzieren Entwicklungszeit und Fehler Beispiele: Si...

© StudySmarter 2024, all rights reserved.

Advanced Design and Programming (5-ECTS) - Cheatsheet

Definition und Zweck von Entwurfsmustern

Definition:

Wiederverwendbare Lösungen für wiederkehrende Probleme in der Softwareentwicklung.

Details:

  • Standardisierte Entwürfe für komplexe Softwarestrukturen
  • Verbessern Kommunikation unter Entwicklern
  • Ermöglichen effektive und effiziente Entwicklung
  • Reduzieren Entwicklungszeit und Fehler
  • Beispiele: Singleton, Factory, Observer

Wichtige Design Patterns wie Singleton, Factory, Observer und Strategie

Definition:

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

Details:

  • Singleton: Stellt sicher, dass eine Klasse nur eine Instanz hat und bietet einen globalen Zugriffspunkt.
  • Factory: Ermöglicht die Erstellung von Objekten, ohne den genauen Klassennamen der zu erstellenden Objekte anzugeben.
  • Observer: Definiert ein 1-zu-N-Abhängigkeitsverhältnis zwischen Objekten, sodass bei einer Zustandsänderung eines Objekts alle abhängigen Objekte benachrichtigt und aktualisiert werden.
  • Strategie: Definiert eine Familie von Algorithmen, kapselt jeden Algorithmus und macht sie untereinander austauschbar.

Prinzipien und Werte des Agilen Manifests

Definition:

Prinzipien und Werte des Agilen Manifests betonen Flexibilität, Zusammenarbeit und Reaktionsfähigkeit in der Softwareentwicklung.

Details:

  • Individuen und Interaktionen über Prozesse und Werkzeuge
  • Funktionierende Software über umfassende Dokumentation
  • Zusammenarbeit mit dem Kunden über Vertragsverhandlung
  • Reagieren auf Veränderung über das Befolgen eines Plans
  • 12 Prinzipien: Kundenzufriedenheit, Willkommene Änderungen, Häufige Auslieferung, Tägliche Zusammenarbeit, Motivierte Einzelpersonen, Face-to-Face-Kommunikation, Funktionierende Software, Nachhaltige Entwicklung, Technische Exzellenz, Einfachheit, Selbstorganisierte Teams, Regelmäßige Reflexion und Anpassung

Identifikation von Code-Smells

Definition:

Erkennen von Programmiermustern, die auf ein Problem im Code hinweisen, aber keine direkten Bugs sind.

Details:

  • Common types: z.B. 'Duplicate Code', 'Long Method', 'Large Class'
  • Tools für Erkennung: z.B. SonarQube, PMD
  • Ziele: Verbesserung der Code-Qualität und Wartbarkeit
  • Kategorie: Erkennungsmuster, Antipatterns
  • Meistens Hinweis auf tieferliegende Designprobleme

Grundprinzipien und Vorteile von Testgetriebener Entwicklung (TDD)

Definition:

Kurze Iterationen bei der Softwareentwicklung: Test schreiben, bevor der Code geschrieben wird. Zyklus: Test schreiben, Code schreiben, Refaktorisieren.

Details:

  • Red-Green-Refactor-Zyklus: Erst testen (rot), dann minimaler Code (grün), schließlich Refaktorisierung.
  • Erhöhte Code-Qualität und weniger Fehler.
  • Bessere Testabdeckung und Wartbarkeit.
  • Fokussierung auf Anforderungen und schnelle Rückmeldung.
  • Ermöglicht kontinuierliche Integration.

Prinzipien des modularen Designs

Definition:

Konzepte zur Unterteilung eines Systems in kleinere, unabhängige Module, die getrennt entwickelt und gewartet werden können.

Details:

  • Kohäsion: Einheitliche Funktionalität innerhalb eines Moduls
  • Kopplung: Minimierung der Abhängigkeiten zwischen Modulen
  • Wiederverwendbarkeit: Module können in verschiedenen Kontexten wiederverwendet werden
  • Erweiterbarkeit: Einfache Erweiterung oder Veränderung von Modulen ohne Einfluss auf andere Teile des Systems
  • Verfolgbarkeit: Nachvollziehbarkeit der Abhängigkeiten zwischen Modulen

Verwendung von Schnittstellen und Abstraktionen

Definition:

Verwendung von Schnittstellen (Interfaces) und Abstraktionen zur Förderung der Modularität und Flexibilität im Systemdesign.

Details:

  • Trennen von Implementierung und Schnittstelle
  • Fördert Wiederverwendbarkeit und Testbarkeit
  • Ermöglicht polymorphes Verhalten
  • Statische Typprüfung bei Verwendung von Interfaces
  • \textbf{Syntax Beispiele:} \texttt{interface IExample} für Schnittstellen; \texttt{abstract class Example} für abstrakte Klassen
  • Interfaces: keine Implementierung (nur Methodensignaturen)
  • Abstrakte Klassen: können sowohl abstrakte Methoden (ohne Implementierung) als auch konkrete Methoden enthalten

Schreiben effektiver Unit-Tests

Definition:

Effektive Unit-Tests prüfen isoliert die kleinsten testbaren Einheiten des Codes, typischerweise Funktionen oder Methoden, um sicherzustellen, dass sie wie erwartet funktionieren.

Details:

  • Verwendung von Assertionen zur Überprüfung der erwarteten Ausgaben: \texttt{assertEqual(), assertTrue(), assertFalse()}
  • Isolierung der Testfälle: Verwendung von Mocking, um Abhängigkeiten von externen Systemen zu vermeiden
  • Testabdeckung sicherstellen: alle möglichen Codepfade und Randfälle abdecken
  • Kurze, prägnante Tests schreiben, die nur eine Sache überprüfen
  • Automatisierte Ausführung und kontinuierliche Integration verwenden
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