Praktische Softwaretechnik - Cheatsheet.pdf

Praktische Softwaretechnik - Cheatsheet
Praktische Softwaretechnik - Cheatsheet Prinzipien des Agile-Manifests Definition: Grundlegende Prinzipien für Agile Softwareentwicklung gemäß dem Agile Manifest. Details: Kundenzufriedenheit: Durch frühe und kontinuierliche Lieferung wertvoller Software. Anforderungsänderungen: Begrüße sich ändernde Anforderungen, selbst spät in der Entwicklung. Häufige Lieferung: Liefere funktionierende Software...

© StudySmarter 2024, all rights reserved.

Praktische Softwaretechnik - Cheatsheet

Prinzipien des Agile-Manifests

Definition:

Grundlegende Prinzipien für Agile Softwareentwicklung gemäß dem Agile Manifest.

Details:

  • Kundenzufriedenheit: Durch frühe und kontinuierliche Lieferung wertvoller Software.
  • Anforderungsänderungen: Begrüße sich ändernde Anforderungen, selbst spät in der Entwicklung.
  • Häufige Lieferung: Liefere funktionierende Software regelmäßig, innerhalb weniger Wochen oder Monate.
  • Zusammenarbeit: Tägliche Zusammenarbeit zwischen Entwicklern und Kunden.
  • Motivierte Individuen: Biete Umgebung und Unterstützung, und vertraue ihnen.
  • Face-to-Face-Kommunikation: Effektivste und effizienteste Methode für Informationsaustausch.
  • Funktionierende Software: Primäres Fortschrittsmaß.
  • Nachhaltige Entwicklung: Fördere gleichmäßiges Tempo für Entwickler sowie Benutzer.
  • Technische Exzellenz und gutes Design: Fördert Agilität.
  • Einfachheit: Kunst, genau die richtige Menge an Arbeit zu tun.
  • Selbstorganisierte Teams: Beste Designs und Architekturen entstehen durch selbstorganisierte Teams.
  • Reflexion und Anpassung: Teams reflektieren regelmäßig, wie sie effektiver werden können, und passen ihr Verhalten entsprechend an.

Scrum-Prozess und Rollen

Definition:

Scrum ist ein agiles Framework zur Softwareentwicklung mit iterativen Entwicklungszyklen (Sprints). Es betont Teamarbeit, kontinuierliche Verbesserung und Kundenzufriedenheit.

Details:

  • Product Owner: Verantwortlich für Produktvision und Backlog-Management.
  • Scrum Master: Sicherstellt das Verständnis und die Einhaltung von Scrum-Prinzipien, beseitigt Hindernisse.
  • Entwicklungsteam: Interdisziplinäres Team, das Arbeit während des Sprints erledigt.
  • Sprint: Feste Zeitspanne (1-4 Wochen) zur Implementierung von Inkrementen.
  • Sprint Planning: Treffen zur Sprint-Zielsetzung und Aufgabenverteilung.
  • Daily Scrum: Tägliches 15-minütiges Meeting zur Synchronisation.
  • Sprint Review: Präsentation des Arbeitsergebnisses am Ende des Sprints.
  • Sprint Retrospective: Reflexion und Verbesserung des Prozesses nach jedem Sprint.
  • Produkt-Backlog: Priorisierte Liste von Aufgaben und Anforderungen.
  • Sprint-Backlog: Ausgewählte Aufgaben für den aktuellen Sprint.
  • Inkrement: Fertiges, nutzbares Produktteil.

Test-First-Ansatz

Definition:

Schreib zuerst Tests, dann den Code, der die Tests besteht.

Details:

  • Zuerst Tests für eine zu implementierende Funktionalität schreiben.
  • Tests laufen lassen und fehlschlagen sehen.
  • Implementiere den minimalen Code, um den Test zu bestehen.
  • Tests erneut ausführen und sicherstellen, dass sie bestehen.
  • Code ggf. refaktorisieren, Tests müssen weiterhin bestehen.
  • Wiederhole für jede neuen Funktionalität.
  • Erhöht Zuverlässigkeit und Codeabdeckung.
  • Fördert ein tieferes Verständnis der Anforderungen.

Adapter, Decorator und Composite Pattern

Definition:

Design-Patterns zur Strukturierung und Modularisierung von Software. Adapter: Anpassung einer Schnittstelle an eine andere. Decorator: Hinzufügen von Funktionalität zu Objekten dynamisch. Composite: Baumeartige Struktur, um Objekte zu behandeln.

Details:

  • Adapter: Konvertiert die Schnittstelle einer Klasse in eine andere, die der Kunde erwartet. Nutzt Zusammensetzung bzw. Vererbung.
  • Decorator: Fügt dynamisch Verantwortung hinzu, ohne die Klasse zu ändern. Nutzt Rekursion bzw. Aggregation.
  • Composite: Komposition von Objekten zu Baumstrukturen zur Darstellung von Teil-Ganzes Hierarchien. Behandelt individuelle Objekte und Zusammensetzungen einheitlich.

Monolithische vs. Microservice-Architekturen

Definition:

Monolithische Architekturen sind Anwendungen, bei denen alle Komponenten in einer einzigen und zusammenhängenden Codebasis zusammengefasst sind. Microservice-Architekturen zerlegen Anwendungen in kleine, unabhängige Dienste, die separat entwickelt, bereitgestellt und skaliert werden können.

Details:

  • Monolithisch: Eine einzige, große Codebasis
  • Microservices: Unabhängige, kleine Dienste
  • Skalierbarkeit: Monolithisch schwer skalierbar, Microservices leicht skalierbar
  • Bereitstellung: Monolithisch werden als eine Einheit bereitgestellt, Microservices unabhängig voneinander
  • Fehlerisolierung: Monolithisch anfällig, Microservices bieten bessere Fehlerisolierung
  • Entwicklungsteam: Monolithisch zentralisiert, Microservices können von verschiedenen Teams entwickelt werden

Layered Architecture, MVC

Definition:

Layered Architecture: Strukturierung von Software in übereinander liegende Schichten. MVC: Muster, das Benutzeroberfläche, Daten und Logik trennt.

Details:

  • Layered Architecture: Trennung von Verantwortlichkeiten zur Verbesserung von Wartbarkeit und Skalierbarkeit.
    • Typische Schichten: Präsentation, Geschäftslogik, Datenzugriff.
  • MVC (Model-View-Controller):
    • Model: Verwaltung der Daten und Geschäftslogik.
    • View: Darstellung der Daten und Benutzerinteraktion.
    • Controller: Vermittlung zwischen Model und View.

Refactoring und Clean Code Prinzipien

Definition:

Refactoring: Verbesserung des bestehenden Codes ohne Funktionalität zu ändern. Clean Code Prinzipien: Richtlinien für lesbaren und wartbaren Code.

Details:

  • Refactoring: Erhöht Codequalität, reduziert technische Schulden
  • Clean Code: Klarheit, Einfachheit, Tests, sinnvolle Namen, KISS, DRY Prinzip
  • Wichtige Regeln: Keine Duplikationen, kleine Methoden, Kommentare minimieren, klare Strukturen

Tools und Frameworks für automatisiertes Testen

Definition:

Sammlung von Software-Tools und Libraries zur Unterstützung von automatisierten Testprozessen.

Details:

  • Selenium: Web-Testautomatisierung
  • JUnit: Unit-Tests für Java
  • TestNG: Erweiterte Funktionen für Java-Testautomatisierung
  • Mockito: Erstellen von Mock-Objekten für Unit-Tests
  • Jenkins: Kontinuierliche Integration und Testautomatisierung
  • Cucumber: BDD-Framework für automatisierte Akzeptanztests
  • Appium: Automatisiertes Testen mobiler Apps
  • Karma: Test-Runner für JavaScript
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