Grundlagen des Software Engineering: Qualität, Prozesse & Anforderungen
Gesendet von Javi und eingeordnet in Informatik
Geschrieben am in Deutsch mit einer Größe von 8,97 KB
Software Engineering ist eine Disziplin, die Methoden, Werkzeuge und Verfahren für die Softwareentwicklung integriert. Ziel ist es, hochwertige Programme zu produzieren, die termingerecht entwickelt, dokumentiert und innerhalb eines Budgets bleiben.
Qualitätsmanagement in der Softwareentwicklung
Die wesentlichen Elemente der Softwarequalität sind:
- Methoden zur Analyse und Verbesserung des gesamten Prozessablaufs.
- Werkzeuge und Techniken wie Use Cases oder UML-Diagramme.
- Menschen als Hauptelemente, z.B. Entwickler und Implementierer von Software.
- Maßnahmen zur Bewertung des aktuellen Entwicklungsstands und zur Verbesserung von Schwachstellen.
Aspekte der Softwarequalität
- Intern: Messbar anhand interner Funktionen, z.B. des Quellcodes.
- Extern: Gemessen an der Leistungsfähigkeit der Produkte.
- Nutzung: Beobachtet durch Benutzer während der Anwendung.
Merkmale hochwertiger Software
- Wartbar (Maintainable): Die Software muss so konzipiert sein, dass sie an neue Bedürfnisse angepasst werden kann.
- Zuverlässig (Reliable): Die Software muss zuverlässig und sicher sein, ohne Mängel, die physischen oder wirtschaftlichen Schaden verursachen könnten.
- Effizient (Efficient): Eine optimale Nutzung der Ressourcen ist erforderlich.
- Benutzbar (Usable): Die Software sollte einfach zu bedienen sein, eine intuitive Schnittstelle und eine angemessene Dokumentation bieten.
Softwareprozesse und Prozessmodelle
Ein Softwareprozess ist eine Reihe von Aktivitäten zur Entwicklung, Wartung und zum Management der Softwareproduktion.
Die Qualität eines Produkts wird maßgeblich von der Qualität der Prozesse in Entwicklung und Wartung bestimmt.
Ein Prozessmodell ist eine strukturierte Sammlung von Praktiken, die sich als wirksam erwiesen haben. Es beschreibt, was zu tun ist und wie.
CMMI: Modell zur Prozessverbesserung
CMMI (Capability Maturity Model Integration) ist ein Modell zur Verbesserung und Bewertung von Prozessen, das wesentliche Elemente zur Erreichung effizienterer Prozesse bietet. Es besteht aus mehreren Reifegraden, die den Entwicklungsstand eines Prozesses widerspiegeln:
- Initial (Stufe 1): Keine Kontrolle über den Projektstatus; die Entwicklung ist undurchsichtig.
- Wiederholbar (Stufe 2): Das Projekt wird während der Entwicklung kontrolliert und ist wiederholbar.
- Definiert (Stufe 3): Neben der Kontrolle entspricht der Prozess den definierten Organisationsprozessen.
- Quantitativ verwaltet (Stufe 4): Zusätzlich zu einem definierten Prozess werden die Prozesse mithilfe quantitativer Techniken kontrolliert.
- Optimierung (Stufe 5): Prozesse werden routinemäßig überprüft, angepasst oder geändert, um Geschäftsziele zu erreichen. Fokus auf kontinuierliche Verbesserung.
Grundprinzipien des Software-Designs
- Abstraktion: Konzentration auf relevante Aspekte der Funktionalität, unwichtige Details werden ausgeblendet.
- Kapselung (Encapsulation): Verbergen von Details, die keine Auswirkungen auf andere Module haben.
- Modularität: Aufteilung der Lösung in separate, voneinander unabhängige Module.
- Lokalität: Ähnliche oder verwandte Elemente sollten in Gruppen zusammengefasst werden.
- Homogenität: Module sollten eine ähnliche Notation oder Struktur verwenden.
- Vollständigkeit: Alle Aspekte des Systems müssen entwickelt werden.
- Validierung: Überprüfung, ob die Entwicklung korrekt ist und den Anforderungen entspricht.
Software-Lebenszyklus
Definition und Analyse: Umfasst die Planung des Projekts, die Analyse der Machbarkeit, das Risikomanagement und die Erfassung der zu erfüllenden Anforderungen.
Entwicklung: Beinhaltet die Entwicklung der Datenstrukturen und der Benutzeroberfläche, die Codierung und das Testen des Systems.
Wartung: Umfasst die Behebung von Fehlern sowie die Anpassung an neue Anforderungen und Funktionalitäten.
Typen von Lebenszyklusmodellen
Wasserfallmodell (Cascade): Der Übergang erfolgt sequenziell von einer Phase zur nächsten. Obwohl einfach, ist dieses Modell oft unrealistisch und kann zu Fehlern führen, die erst spät erkannt werden.
V-Modell: Die Entwicklung ist in Schichten unterteilt, die geprüft und getestet werden. Dies ermöglicht die frühzeitige Erkennung von Fehlern, ohne auf ein fertiges Produkt warten zu müssen.
Manifest für agile Softwareentwicklung
- Fokus auf das Entwicklungsteam und dessen Interaktionen.
- Priorität für funktionierende Software gegenüber umfangreicher Dokumentation.
- Enge Zusammenarbeit mit dem Kunden.
- Reaktion auf Veränderungen, auch wenn dies eine Anpassung des ursprünglichen Plans bedeutet.
Ausgewählte agile Methoden
- RUP (Rational Unified Process)
- XP (Extreme Programming): Entwickelt für dynamische Umgebungen und kleine Teams.
- Betont verbale Kommunikation.
- Einfaches Design.
- Kleine Lieferzyklen (2-3 Wochen).
- Anwendung von Kodierungsstandards.
- Sehr engagierte Kundenbeteiligung.
Software-Anforderungen
Eine der Hauptursachen für das Scheitern von Projekten ist das unzureichende Verständnis der Nutzer und ihrer Bedürfnisse.
Eine Anforderung ist eine Funktion der Software, die die Bedürfnisse der Nutzer erfüllt, um ein Problem zu lösen oder ein Ziel zu erreichen.
Das Anforderungsmanagement umfasst die Erfassung, Organisation und Dokumentation der Nutzerbedürfnisse.
Techniken zur Anforderungserhebung
- Interviews: Ziel ist es, Informationen von Benutzern zu erhalten.
- Beobachtung: Beobachten Sie Benutzer bei der Erfüllung ihrer täglichen Aufgaben.
- Anforderungsworkshops: Mehrere Benutzer kommen zusammen, um gemeinsam die Anforderungen für ein Anwendungsdesign zu erarbeiten.
- Brainstorming
- Fragebögen
- Rollenspiele: Das Entwicklungsteam versetzt sich in die Rolle der Benutzer, um deren Aufgaben zu verstehen.
- Prototypen
Schritte im Anforderungsmanagement
Schritt 1: Problemdefinition
Der erste Schritt bei der Entwicklung eines Projekts ist es, das Problem zu definieren, zu vereinbaren und zu verstehen.
Schritt 2: Stakeholder identifizieren
Ein Stakeholder ist jede Person oder Gruppe, die von der Implementierung des Systems betroffen sein kann.
Schritt 3: Systemgrenzen definieren
Definieren Sie die Grenze zwischen der zu entwickelnden Software und anderen Elementen, mit denen sie interagiert.
Schritt 4: Bedarfsanalyse
Die Anforderungserhebung beginnt oft mit der Untersuchung der Anwendungsbedürfnisse. Diese Bedürfnisse müssen erfasst werden, um einen Überblick über das zu lösende Problem zu erhalten.
Schritt 5: Funktionen definieren
Dies sind die Eigenschaften und Funktionen, die ein System haben muss, ausgedrückt in einfachen und kurzen Sätzen, die von den Benutzern verstanden werden.
Schritt 6: Anforderungen spezifizieren
Aus den definierten Funktionen müssen die Anforderungen zunehmend detaillierter abgeleitet werden.
- Funktionale Anforderungen: Beschreiben die erwartete Funktionalität des Systems, seine Ein- und Ausgaben, Ausnahmen usw.
- Nichtfunktionale Anforderungen: Beziehen sich nicht auf direkt vom Benutzer angebotene Eigenschaften, sondern auf Systemeigenschaften wie Benutzerfreundlichkeit, Zuverlässigkeit, Leistung, Sicherheit etc. (oft auch als Qualitätsmerkmale bezeichnet).