Projekt angewandte Systemsoftwaretechnik - Cheatsheet
Anforderungsanalyse und -spezifikation
Definition:
Prozess zur Erhebung, Dokumentation und Verwaltung von Anforderungen an ein Softwareprodukt
Details:
- Ziele: Klare, vollständige und überprüfbare Anforderungen
- Techniken: Interviews, Fragebögen, Beobachtungen, Workshops
- Dokument: Lastenheft (Wünsche des Auftraggebers) und Pflichtenheft (konkrete Umsetzungsvorgaben)
- Vermeidung von Missverständnissen mittels präziser und eindeutiger Formulierungen
- Anforderungsarten: Funktionale Anforderungen (was das System tun soll), Nicht-funktionale Anforderungen (wie das System es tun soll; z.B. Performance, Sicherheit)
- Validierung: Überprüfung der Anforderungen auf Vollständigkeit und Konsistenz
- Priorisierung: Festlegung der Wichtigkeit einzelner Anforderungen
Scrum-Framework und Rollen
Definition:
Scrum ist ein agiles Framework zur Entwicklung und Lieferung von Produkten in iterativen Zyklen.
Details:
- Product Owner: Verantwortlich für das Produkt-Backlog und die Maximierung des Produktwerts.
- Scrum Master: Unterstützt das Team, Hindernisse zu überwinden und stellt sicher, dass Scrum-Praktiken eingehalten werden.
- Development Team: Selbstorganisierte Experten, die die eigentliche Entwicklung durchführen.
- Artefakte: Product Backlog, Sprint Backlog, Inkrement.
- Ereignisse: Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective.
Architekturmuster und -stile
Definition:
Architekturmuster und -stile sind wiederverwendbare Lösungen für häufig auftretende Probleme in der Softwarearchitektur.
Details:
- Schichtenarchitektur: Trennung von Verantwortlichkeiten in verschiedene Schichten (Präsentation, Logik, Daten).
- Client-Server: Verteilung von Aufgaben zwischen einem Dienstleister (Server) und Dienstnutzer (Client).
- Microservices: Modularisierung von Anwendungen in kleine, unabhängige Dienste.
- Event-Driven: Kommunikation über Ereignisse zwischen losgekoppelten Komponenten.
- REST: Architekturstil für verteilte Hypermedia-Systeme basierend auf HTTP-Methoden.
- Model-View-Controller (MVC): Trennung von Datenmodell, Benutzeroberfläche und Steuerlogik.
- Publisher-Subscriber: Nachrichtenverteilung an unterschiedliche Empfänger ohne direkte Kopplung.
Automatisierte Tests und Testskripte
Definition:
Automatisierte Tests und Testskripte: Automatisierte Durchführung und Auswertung von Softwaretests mittels Skripten, um die Testeffizienz zu steigern.
Details:
- Reduzieren manuellen Testaufwand
- Verwenden von Testframeworks wie JUnit, Selenium
- Unterstützen kontinuierliche Integration (CI/CD)
- Testskripte in verschiedenen Programmiersprachen schreibbar
- Wiederholbarkeit und Konsistenz
- Beispiel: \texttt{@Test public void testMethod() { ... }}
Modellierung und Design von Software-Systemen
Definition:
Modellierung und Design von Software-Systemen bezieht sich auf die Erstellung abstrakter Darstellungen und systematischer Entwürfe zur Entwicklung von Softwaresystemen.
Details:
- Modellierung nutzt UML-Diagramme wie Klassendiagramme, Sequenzdiagramme usw.
- Design-Prinzipien: Kapselung, Modularität, Abstraktion
- Entwurfsmuster: Singleton, Observer, Factory, etc.
- Verwendung von CASE-Tools zur Unterstützung des Modells und Designs
- Erstellung von Architekturen: Schichtarchitektur, Client-Server, Mikroservices
- Wichtige Rollen: Software-Architekt, Designer
Microservices und serviceorientierte Architekturen
Definition:
Microservices und SOA sind Architekturstile, die die Entwicklung verteilter Systeme unterstützen.
Details:
- Microservices: Kleine, unabhängige Dienste, die jeweils einen bestimmten Geschäftsvorfall abbilden.
- SOA: Gröbere Dienste, die oft mehrere Geschäftsvorgänge abdecken und über Enterprise Service Bus (ESB) kommunizieren.
- Vorteile Microservices: Hohe Skalierbarkeit, einfache Wartung, technologische Diversität.
- Nachteile Microservices: Komplexität im Management, höhere Anforderungen an die Infrastruktur.
- Vorteile SOA: Wiederverwendbarkeit, Integration von Altsystemen, zentralisierte Steuerung.
- Nachteile SOA: Monolithische Tendenzen, schwerfälliger in der Implementierung und Anpassung.
Iterative Entwicklungsprozesse
Definition:
Wiederholte Phasen des Planens, Implementierens und Evaluierens, um schrittweise zum Ziel zu gelangen.
Details:
- User Feedback regelmäßig integrieren
- Verbessert schrittweise das Produkt
- Flexibel gegenüber Änderungen
- Beispiel: Scrum, RUP (Rational Unified Process)
- Risiken frühzeitig erkennen und minimieren
Versionskontrollsysteme und Code-Management
Definition:
Verwaltung von Änderungen an Quellcode in Softwareprojekten; ermöglicht Zusammenarbeit und Historiennachverfolgung.
Details:
- Git und SVN häufig verwendete Systeme
- Ermöglicht Branching, Merging und Reversion
- Verwendung von Commit, Push, Pull Befehlen
- Erleichtert Teamarbeit und Konfliktbewältigung
- Integration in CI/CD-Pipelines möglich
- Remote Repositories zur Datenzentralisierung