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 Templates, Formulare, Interviews, Workshops.
Specification: Dokumentation der Anforderungen in klarer und präziser Sprache, oft mit Modellen wie UML oder SysML - in Form von Listen, Use Cases, User Stories.
Validation: Überprüfung, ob die Anforderungen korrekt und vollständig sind.
Management: Kontinuierliche Verwaltung und Aktualisierung der Anforderungen, sowie Versionisierung und Dokumentation während des gesamten Projektlebens.
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
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.
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.
Welche Vorteile und Nachteile bei Software Design Frameworks gibt es?
- Vorteil: Zeitsparend und kosteneffizient, da Basisfunktionen und Bibliotheken integriert sind.
- Nachteil: Reduzierte Flexibilität und mögliche Sicherheitslücken oder Fehler im Framework selbst.
Welche Arten von Frameworks gibt es?
- Application Frameworks: Übergreifende Funktionen für eine Programmiersprache, z. B. Django (Python) oder Angular (JavaScript).
- Test-Frameworks: Bieten Testfunktionalitäten, z. B. JUnit (Java), und unterstützen den Testprozess.
Was ist der Unterschied zwischen Patterns und Frameworks?
- Patterns bieten abstrahierte Lösungen
- Frameworks sind implementierte Strukturen, die mehrere Patterns enthalten
- Frameworks erleichtern die Entwicklung, aber Patterns bieten die konzeptionellen Grundlagen.
Was ist eine integrierten Entwicklungsumgebung (IDE)?
Definition: Kombinieren verschiedene Entwicklungswerkzeuge in einer Umgebung.
Beispiele: Eclipse, Visual Studio, NetBeans.
Typische Funktionen von IDEs
- Texteditoren
- Compiler/Interpreter
- Debugger
- Refactoring-Tools
- Versionsverwaltungssysteme
- Build Automation Tools
- GUI-Builder
- Codegeneratoren
- Testautomatisierung