Praktische Softwaretechnik - Cheatsheet
Anforderungsanalyse und Spezifikation
Definition:
Erfassung und Dokumentation der Anforderungen an ein Software-System, um als Basis für die Entwicklung zu dienen.
Details:
- Ermittlung der Anforderungen: Interviews, Workshops, Beobachtungen
- Dokumentation: Lastenheft (was), Pflichtenheft (wie)
- Analysemethoden: Use Cases, User Stories, UML-Diagramme
- Verifikation: Validierung durch Stakeholder
Vererbung und Polymorphismus in objektorientierter Programmierung
Definition:
Vererbung und Polymorphismus sind grundlegende Konzepte der objektorientierten Programmierung zur Wiederverwendung von Code und Flexibilität von Systemen.
Details:
- Vererbung: Fähigkeit einer Klasse, Eigenschaften und Methoden einer anderen Klasse zu erben (Stichwort: Basisklasse und abgeleitete Klasse).
- Schlüsselwort in Java:
extends
- Polymorphismus: Fähigkeit, dass eine Methode mehrere Formen annehmen kann. Ermöglicht Nutzung einer Schnittstelle oder Basisklasse durch verschiedene abgeleitete Klassen.
- Wichtig: dynamisches Binden (Laufzeitbindung)
- Schlüsselwort in Java:
implements
(für Interfaces) - Beispiel-Vererbung:
class B extends A { }
- Beispiel-Polymorphismus:
Shape s = new Circle();
Klassifikation und Implementierung von Entwurfsmustern
Definition:
Klassifikation und Implementierung von Entwurfsmustern umfasst die Einteilung von Mustern in Kategorien und ihre Anwendung zur Lösung wiederkehrender Designprobleme in der Softwareentwicklung.
Details:
- Entwurfsmuster: Wiederverwendbare Lösungen für häufig auftretende Probleme.
- Kategorien: Erzeugungsmuster, Strukturmuster, Verhaltensmuster.
- Erzeugungsmuster: Umgang mit der Objekterzeugung.
- Strukturmuster: Zusammensetzung von Klassen/Objekten.
- Verhaltensmuster: Interaktion und Zuständigkeit von Klassen/Objekten.
- Implementierung: Werden meist durch UML-Diagramme und spezifische Codebeispiele dargestellt.
SCRUM-Prozess und Extreme Programming (XP) Praktiken
Definition:
SCRUM-Prozess: Framework zur agilen Softwareentwicklung. XP: Sammlung von Methoden zur Verbesserung der Softwarequalität und Responsivität.
Details:
- SCRUM: Iterativ, inkrementell, produktorientiert.
- Rollen: Product Owner, Scrum Master, Entwicklungsteam.
- Artefakte: Produkt-Backlog, Sprint-Backlog, Inkrement.
- Events: Sprint, Sprintplanung, tägliches Stand-up, Sprint-Review, Sprint-Retrospektive.
- XP-Praktiken: Pair Programming, Test Driven Development (TDD), Continuous Integration, Refactoring.
- XP-Werte: Kommunikation, Einfachheit, Feedback, Mut, Respekt.
Testgetriebene Entwicklung (TDD) mit JUnit
Definition:
Testgetriebene Entwicklung (TDD) ist eine Entwicklungsstrategie, bei der zuerst automatisierte Tests geschrieben werden, bevor der eigentliche Code implementiert wird.
Details:
- Schritt 1: Schreibe einen fehlgeschlagenen Test (Red)
- Schritt 2: Implementiere minimalen Code, damit der Test besteht (Green)
- Schritt 3: Refaktoriere den Code (Refactor)
- Wiederhole diese Schritte kontinuierlich
- JUnit ist ein Framework zum Erstellen und Ausführen automatisierter Tests in Java
- Testmethoden in JUnit mit @Test annotieren
- Verwende Assertions wie assertEquals(), assertTrue() usw. zum Überprüfen von Testbedingungen
- @Before und @After für Vor- und Nachbedingungen einzelner Tests verwenden
Microservice-Architekturen vs. Monolithische Architekturen
Definition:
Microservices: Unabhängige, modularisierte Dienste. Monolithen: Eine große, zusammenhängende Codebasis.
Details:
- Microservices:
- Jeder Service eigenständig deploybar
- Skalierbarkeit auf individueller Servicebasis
- Ermöglicht Polyglot-Programmierung
- Monolithisch:
- Eine zentrale Codebasis
- Kann einfacher zu verwalten sein bei kleinen Projekten
- Skalierbarkeit des gesamten Systems notwendig
- Microservices Vorteile:
- Bessere Wartbarkeit und Testbarkeit
- Erhöhte Fehlertoleranz
- Bessere Nutzung von Continuous Delivery/Deployment
- Monolithische Vorteile:
- Einfachere Deployment-Prozesse
- Geringerer Initialaufwand
Refactoring in TDD
Definition:
Refactoring in TDD: Code verbessern ohne Funktionalität zu ändern. Nach dem Green-Phase refaktorisieren.
Details:
- Erhöht die Codequalität und Wartbarkeit.
- Wird nach erfolgreichen Tests (grünen Tests) durchgeführt.
- Führt zu saubererem und lesbarem Code ohne das Verhalten zu beeinflussen.
- Erfordert automatisierte Tests zur Validierung der Änderungen.
Praxisbeispiele und Implementierungsstrategien für Entwurfsmuster
Definition:
Praxisbeispiele und Implementierungsstrategien für Entwurfsmuster im Rahmen der Vorlesung Praktische Softwaretechnik vermitteln konkrete Anwendungen und Vorgehensweisen zur Implementierung von Entwurfsmustern.
Details:
- Einführung: Überblick über gängige Entwurfsmuster wie Singleton, Observer, Factory, Strategy
- Praxisbeispiele: Anwendungsfälle aus der Praxis verdeutlichen die Verwendung einzelner Entwurfsmuster
- Strategien: Tipps und Best Practices zur Implementierung
- Codebeispiele: Typische Implementierungen der Muster in verschiedenen Programmiersprachen (Java, C++)
- Evaluation: Vergleich der Muster hinsichtlich ihrer Vor- und Nachteile
- Werkzeuge: Einsatz von Software-Werkzeugen zur Unterstützung der Implementierung
- Erfahrungen: Berichte aus Projekten und reale Herausforderungen