4. Detailaufgaben im Entwicklungsprozess Flashcards
Was ist Requirements Engineering?
Der Prozess zur systematischen Erhebung, Verwaltung und Umsetzung von Anforderungen über deren gesamten Lebenszyklus hinweg. Unklare Anforderungen sind ein häufiger Scheitergrund für Softwareprojekte.
Welche Phasen umfasst Requirements Engineering?
Elicitation: Sammeln von Anforderungen von Stakeholdern durch Interviews, Umfragen, Workshops usw.
Specification: Dokumentation der Anforderungen in klarer und präziser Sprache, oft mit Modellen wie UML oder SysML.
Validation: Überprüfung, ob die Anforderungen korrekt und vollständig sind.
Management: Kontinuierliche Verwaltung und Aktualisierung der Anforderungen während des gesamten Projektlebens.
Was ist Anforderungsermittlung?
Identifikation der relevanten Stakeholder und ihrer Anforderungen, um keine wichtigen Interessen zu übersehen.
Welche Methoden zur Anforderungserhebung gibt es?
Je nach Situation eignen sich Templates, Formulare, Interviews, Workshops oder Prototypen zur Erhebung und Dokumentation von Anforderungen.
Welche Dokumentationsformen gibt es?
Anforderungen können in Form von Listen, Use Cases oder User Stories festgehalten werden, je nach Vorgehensmodell.
Anforderungsermittlung - Wasserallmodell vs. Agile Methoden
Wasserfallmodell: Strebt eine vollständige Dokumentation aller Anforderungen vor Projektbeginn an.
Agile Methoden: Erfassen relevante Anforderungen in ausreichendem Detailgrad, um eine Lösung entwickeln zu können.
Welche Kategorien von Anforderungen gibt es?
- Funktionale Anforderungen: Beschreiben was die Software tun soll, d. h., sie legen die spezifischen Verhaltensweisen, Aktionen oder Funktionen fest, die die Software erfüllen muss, wie z. B. das Berechnen eines Gesamtbetrags oder das Speichern von Daten.
- Nicht-funktionale Anforderungen: Beschreiben wie gut die Software ihre Aufgaben erfüllen soll, also die Qualitäts- und Leistungsaspekte, die über die reine Funktionalität hinausgehen. Dazu gehören z. B. Anforderungen an Geschwindigkeit, Zuverlässigkeit, Benutzerfreundlichkeit sowie gesetzliche Vorgaben wie die Einhaltung der DSGVO.
- Projektanforderungen: Beziehen sich auf Zeit- und Kostenziele (z. B. Deadlines, Budgetgrenzen).
Was ist eine User Story?
kurze, informelle Beschreibung einer Softwarefunktion aus der Perspektive des Endnutzers
Was ist eine User Journey?
beschreibt den gesamten Weg, den ein Nutzer von der ersten Interaktion mit einem Produkt oder einer Dienstleistung bis zum Erreichen seines Ziels nimmt
Wie werden Anforderungen geprüft?
Initiale Anforderungen werden gegebenenfalls spezifiziert, geprüft, abgestimmt, konsolidiert und priorisiert, um Eindeutigkeit, Konsistenz und Widerspruchsfreiheit sicherzustellen.
Was ist Anforderungsmanagement?
Änderungsverwaltung und Nachverfolgbarkeit im Projektverlauf, inkl. Versionisierung und Dokumentation der Umsetzung und Testbezüge, um eine konsistente Dokumentation zu gewährleisten.
Was sind Software Design Patterns?
- Abstrakte Lösungsansätze für wiederkehrende Probleme, die eine Art Lösungsschablone bieten.
- Popularisiert durch die „Gang of Four“ in den 1990er-Jahren
- Beispiel: Das „Facade“-Pattern vereinfacht den Zugriff auf komplexe Klassenstrukturen durch eine vereinheitlichte Schnittstelle.
- Geeignet für erfahrene Entwickler, die von gemeinschaftlichen Best Practices profitieren und eine gemeinsame Sprache für die Architektur schaffen.
Welche drei Kategorien von Software Design Patterns gibt es?
- Erzeugungsmuster (Creational Patterns): Beschreiben die Objekterzeugung.
- Strukturmuster (Structural Patterns): Definieren Beziehungen zwischen Klassen.
- Verhaltensmuster (Behavioral Patterns): Beschreiben das Verhalten der Software.
Was ist ein Architekturmuster?
Muster auf höherer Abstraktionsebene, wie z. B. das Model View Controller (MVC) Muster, das die Software in Daten (Model), Benutzeroberfläche (View) und Steuerlogik (Controller) trennt. Ziel ist erhöhte Wiederverwendbarkeit und Anpassbarkeit.
Was sind Software Design Frameworks?
- Bieten eine vorgefertigte Softwarearchitektur und Klassenstruktur, die der Entwickler für die konkrete Funktionserstellung nutzen kann.
- Ermöglichen die Einbettung spezifischer Funktionen in ein vorhandenes Gerüst und enthalten oft mehrere Design Patterns.