Grundlagen des Software Engineering - Cheatsheet
Wasserfall-Modell und Agile Methoden (z.B. Scrum und Kanban)
Definition:
Wasserfall-Modell: sequentielles Phasenmodell. Agile Methoden: iterative Entwicklung mit Flexibilität (z.B. Scrum, Kanban).
Details:
- Wasserfall-Modell: lineare Phasen (Anforderungsanalyse, Design, Implementierung, Testen, Wartung)
- Scrum: Sprints, Product Backlog, Daily Standups, Rollen (Product Owner, Scrum Master, Team)
- Kanban: Tafel zur Visualisierung des Arbeitsflusses, Work-in-Progress-Limits (WIP), kontinuierliche Verbesserung
- Agile Prinzipien: flexible Reaktion auf Veränderungen, Kundenfeedback, iterative Entwicklung, funktionsübergreifende Teams
UML-Klassendiagramme und UML-Sequenzdiagramme
Definition:
UML-Klassendiagramme: Strukturmodell; zeigt Klassen, Attribute, Methoden und Beziehungen. UML-Sequenzdiagramme: Verhaltensmodell; zeigt Interaktionen zwischen Objekten über die Zeit.
Details:
Anforderungserhebung und -dokumentation (Interviews, Workshops)
Definition:
Prozess der Identifikation und Dokumentation von Anforderungen, oft mithilfe von Interviews und Workshops.
Details:
- Anforderungserhebung: Sammeln von Anforderungen von Stakeholdern.
- Interviews: Einzelgespräche mit Stakeholdern zur detaillierten Anforderungsermittlung.
- Workshops: Gruppenarbeit zur Erhebung und Diskussion von Anforderungen.
- Dokumentation: Schriftliche Festhaltung der Anforderungen für spätere Phasen des Projekts.
- Verwendung von UML-Diagrammen, Use Cases und User Stories zur Visualisierung.
- Ziele: Klarheit, Vollständigkeit und Nachvollziehbarkeit der Anforderungen sicherstellen.
Design Patterns (Singleton, Factory, Observer)
Definition:
Design Patterns: Wiederverwendbare Lösungen für häufig auftretende Probleme. Singleton: Gewährleistet eine einzige Instanz. Factory: Erzeugt Objekte ohne Angabe der exakten Klasse. Observer: Benachrichtigt abhängige Objekte über Zustandsänderungen.
Details:
- Singleton: Stellt sicher, dass eine Klasse nur eine Instanz hat und bietet einen globalen Zugangspunkt.
- Factory Method: Definiert eine Schnittstelle zur Erzeugung eines Objekts, lässt aber Unterklassen entscheiden, welche Klasse instanziiert wird.
- Observer: Ermöglicht es einem Subjekt, eine Liste von abhängigen Objekten zu pflegen und sie automatisch zu benachrichtigen, wenn sich sein Zustand ändert.
Testpyramide und Testmethoden (Unit-Tests, Integrationstests, Systemtests)
Definition:
Die Testpyramide illustriert das Verhältnis und die Häufigkeit von verschiedenen Testmethoden im Softwareentwicklungsprozess.
Details:
- Unit-Tests: Testen einzelner Komponenten oder Funktionen, oft isoliert von anderen Teilen des Systems.
- Integrationstests: Überprüfen das Zusammenspiel mehrerer Komponenten und deren Schnittstellen.
- Systemtests: Testen das gesamte System als Ganzes, einschließlich aller integrierten Komponenten und Schnittstellen.
Vererbung und Polymorphismus im objektorientierten Design
Definition:
Vererbung erlaubt das Erstellen neuer Klassen basierend auf bestehenden Klassen (Superklasse/Subklasse). Polymorphismus erlaubt Methodenaufrufe, die sich basierend auf dem Typ des Objekts unterschiedlich verhalten.
Details:
- Vererbung: Wiederverwendung von Code, Hierarchien schaffen
- Polymorphismus: Methoden überschreiben, Interface-Programmierung
- Syntax:
class Subklasse extends Superklasse { ... }
- Dynamische Bindung: Laufzeitzuweisung von Methoden
- is-a-Beziehung: Subklasse ist eine spezialisierte Form der Superklasse
- Vorteile: Wartbarkeit, Erweiterbarkeit
super()
-Aufruf: Zugriff auf Konstruktor der Superklasse
DevOps und kontinuierliche Lieferung
Definition:
DevOps verbindet Softwareentwicklung (Dev) und IT-Betrieb (Ops) mit dem Ziel, Entwicklungs-, Test- und Bereitstellungsprozesse zu automatisieren und zu optimieren. Kontinuierliche Lieferung (Continuous Delivery) meint das fortlaufende und automatisierte Bereitstellen von Software in Produktionsumgebungen, sodass sie jederzeit freigegeben werden kann.
Details:
- Automatisierung: Einsatz von Tools zur Automatisierung von Build-, Test- und Bereitstellungsprozessen.
- Continuous Integration (CI): Regelmäßige Zusammenführung von Code-Änderungen in ein gemeinsames Repository, gefolgt von automatisierten Builds und Tests.
- Continuous Deployment (CD): Automatisierte Bereitstellung jeder Änderung, die alle Tests erfolgreich bestanden hat, bis in die Produktionsumgebung.
- Monitoring und Logging: Ständige Überwachung der Systeme und Analyse von Log-Dateien zur Fehlererkennung und -behebung.
- Versionierung: Nutzung von Versionskontrollsystemen zur Nachverfolgung und Verwaltung von Codeänderungen.
- Feedback-Schleifen: Schnelles Einholen und Umsetzen von Feedback für kontinuierliche Verbesserungen.
Werkzeuge für das Anforderungsmanagement und UML-Modellierung
Definition:
Werkzeuge zur Unterstützung von Anforderungsmanagement und UML-Modellierung im Software Engineering Kontext.
Details:
- Tools erleichtern das Erfassen, Verwalten und Nachverfolgen von Anforderungen.
- Haupttools: IBM Rational DOORS, Jira, Redmine.
- UML-Modellierungstools: Enterprise Architect, Visual Paradigm, MagicDraw.
- Ermöglichen visuelle Darstellung und Dokumentation der Softwarearchitektur.
- Unterstützen verschiedene UML-Diagramme: Klassendiagramme, Anwendungsfalldiagramme, Sequenzdiagramme, Zustandsdiagramme.
- Integration mit anderen Softwareentwicklungstools möglich.