Einführung in das Software Engineering - Cheatsheet
Definition und Ziele des Software Engineering
Definition:
Erklärung der Begriffe Software Engineering und dessen Zielen.
Details:
- Software Engineering (SW): systematische Entwicklung und Wartung von Software.
- Ziele von SW: Qualitätssicherung, Kosteneffizienz, Wartbarkeit, Zuverlässigkeit.
- Nutzung von Methoden, Werkzeugen und Theorien zur Softwareentwicklung.
- Fokus auf Prozessmodelle und Vorgehensweisen.
Softwareentwicklungsmodelle: Wasserfall-, V-, Spiral-, inkrementelle und iterative Modelle
Definition:
Wasserfall-, V-, Spiral-, inkrementelle und iterative Modelle sind Softwareentwicklungsansätze, die verschiedene Phasen der Softwareentwicklung strukturieren.
Details:
- Wasserfallmodell: Sequentiell und linear; jede Phase muss abgeschlossen sein, bevor die nächste beginnt; typischer Ablauf: Anforderungsspezifikation, Entwurf, Implementierung, Testen, Wartung.
- V-Modell: Erweiterung des Wasserfallmodells; Testphasen werden den Entwicklungsphasen zugeordnet; Fokus auf Verifikation und Validierung.
- Spiralmodell: Iterativer Ansatz; Kombination von Design und Prototyping; risikobasiertes Management; vier Phasen: Planung, Risikobewertung, Entwicklung und Test, Bewertung.
- Inkrementelles Modell: Software wird in inkrementellen, teilweise funktionalen Versionen entwickelt und ausgeliefert; jede neue Version verbessert oder erweitert die bereits vorhandene Funktionalität.
- Iteratives Modell: Softwareentwicklung in wiederholten Zyklen (Iterationen); jede Iteration durchläuft die Phasen Anforderungsanalyse, Design, Implementierung und Testen; ermöglicht Feedback und Anpassungen während des gesamten Entwicklungsprozesses.
Methoden der Anforderungsanalyse und Erstellung von Lasten- und Pflichtenheften
Definition:
Methoden zur Identifikation und Dokumentation von Anforderungen für Softwareprojekte. Lastenheft beschreibt Anforderungen aus Kundensicht. Pflichtenheft enthält technische Umsetzung.
Details:
- Anforderungsanalyse: Interview, Fragebogen, Beobachtung, Workshops
- Lastenheft: Vom Auftraggeber verfasst, Fokus auf WAS und WARUM
- Pflichtenheft: Vom Auftragnehmer verfasst, Fokus auf WIE
- Ziele des Lastenhefts:
- Klare Anforderungen
- Basis für Vertragsgestaltung
- Inhalte des Pflichtenhefts:
- Technische Spezifikationen
- Meilensteine und Zeitpläne
Grundlagen der Softwarearchitektur und Design Patterns
Definition:
Details:
- Softwarearchitektur: Struktur eines Softwaresystems, bestehend aus Softwarekomponenten, deren Beziehungen und deren Eigenschaften.
- Design Patterns: Wiederverwendbare Lösungen für häufig auftretende Probleme in der Softwareentwicklung.
- Architekturstile: Layered, Client-Server, Microservices, u.a.
- Wichtige Design Patterns: Singleton, Observer, Factory, Strategy, Decorator, Adapter.
- UML-Diagramme: Zur Visualisierung von Architektur und Design Patterns.
- SOLID-Prinzipien: Fünf Prinzipien für gute Softwarearchitektur und -design.
- Entwurfsmusterkategorien: Erzeugungsmuster, Strukturmuster, Verhaltensmuster.
Teststrategien und Testmethoden: Unit Testing, Integration Testing, System Testing
Definition:
Unit Testing: Testen einzelner Komponenten; Integration Testing: Testen des Zusammenspiels mehrerer Komponenten; System Testing: Testen des gesamten Systems
Details:
- Unit Testing: Fokus auf kleine, isolierte Einheiten; oft durch Entwickler
- Integration Testing: Testet Schnittstellen und Interaktion zwischen Modulen
- System Testing: Verifizierung des gesamten integrierten Systems gegen Anforderungen; typischerweise durch QA-Team
- Abdeckung wichtiger Teststrategien für fehlerfreie Softwareentwicklung
Techniken zur Auflösung von Anforderungskonflikten
Definition:
Methoden zur Lösung von Konflikten zwischen unterschiedlichen Anforderungen.
Details:
- Anforderungskonflikte können durch Kommunikation, Verhandlungen und Kompromisse gelöst werden.
- Priorisierung: Nutzwertanalysen, MoSCoW-Methode.
- Verhandlungen: Konsensfindung, Win-Win-Techniken.
- Prototypen und Mockups zur Veranschaulichung spezifischer Anforderungen.
- Stakeholder-Workshops zur gemeinsamen Lösung.
- Trade-off-Analysen: Nutzen, Kosten, Risiken abwägen.
Architekturstile und -muster
Definition:
Architekturstile und -muster beschreiben bewährte Lösungen für wiederkehrende Entwurfsprobleme auf hoher Abstraktionsebene in der Softwarearchitektur.
Details:
- Architekturstile: Grundlegende Strukturansätze (z.B. Schichtenarchitektur, Client-Server, Microservices).
- Architekturmuster: Konkrete Lösungsmuster innerhalb der Architekturstile (z.B. MVC, Schichtenmuster, Pipes & Filters).
- Ziel: Erhöhung der Wartbarkeit, Wiederverwendbarkeit und Flexibilität der Software.
- Wichtige Konzepte: Separation of Concerns, Modularität, Lose Kopplung.
- Beispiele: Singleton-Muster, Factory-Methode, Observer-Muster.
Fehlermanagement und -reporting
Definition:
Prozess zur Identifikation, Analyse, Dokumentation und Kommunikation von Fehlern in Softwareprojekten.
Details:
- Fehlermanagement: Identifikation, Analyse, Kategorisierung und Priorisierung von Fehlern.
- Fehlerreporting: Dokumentation und Kommunikation von Fehlern an das Team.
- Fehlerkategorien: z.B. kritische Fehler, schwerwiegende Fehler, triviale Fehler.
- Fehleranalyse: Ursachenanalyse (Root Cause Analysis) und Einordnung der Fehler in Kategorien.
- Tools: JIRA, Bugzilla, Redmine für Reporting und Tracking.
- Prozesse: Bug-Tracking-System, regelmäßige Fehlerbesprechungen, Reviews.
- Ziel: Minimierung der Fehleranzahl und Verbesserung der Softwarequalität.