Lebenszyklus Softwareentwicklung
Software Life Cycle – Zyklus eines Softwaresystems oder Softwareprodukts, der durch ein Benutzerbedürfnis oder ein wahrgenommenes Kundenbedürfnis eingeleitet wird und durch die Einstellung der Nutzung des Produkts oder die Nichtverfügbarkeit der Software beendet wird.
Software Development Process – Prozess, bei dem Benutzeranforderungen in ein Softwareprodukt umgesetzt werden. Der Prozess umfasst die Umsetzung der Benutzerbedürfnisse in Softwareanforderungen, die Umwandlung der Softwareanforderungen in ein Design, die Implementierung des Designs in Code, das Testen des Codes und manchmal auch die Installation und das Testen der Software für den betrieblichen Einsatz. Diese Aktivitäten können sich überschneiden oder iterativ durchgeführt werden.
Phasen der Softwareentwicklung
Requirements Analysis – Prozess der Untersuchung der Benutzerbedürfnisse, um zu einer Definition der System-, Hardware- oder Softwareanforderungen zu gelangen.
Design – Prozess der Definition der Softwarearchitektur, der Komponenten, Module, Schnittstellen und Daten für ein Softwaresystem, um bestimmte Anforderungen zu erfüllen.
Implementation –Prozess der Umsetzung eines Entwurfs in Hardwarekomponenten, Softwarekomponenten oder beides.
Unit Testing – Prüfung einzelner Routinen und Module durch den Entwickler oder einen unabhängigen Prüfer.
Integration –Prozess der Kombination von Softwarekomponenten, Hardwarekomponenten oder beidem zu einem Gesamtsystem.
Integration Testing – Tests, bei denen Software-Komponenten, Hardware-Komponenten oder beides kombiniert und getestet werden, um die Interaktion zwischen ihnen zu bewerten.
Deployment – Phase eines Projekts, in der ein System in Betrieb genommen wird und Umstellungsprobleme gelöst werden.
Acceptance Testing – Tests, die durchgeführt werden, um festzustellen, ob ein System die Abnahmekriterien erfüllt, und um den Kunden in die Lage zu versetzen, zu entscheiden, ob er das System abnehmen soll.
Operation –Betrieb eines Computersystems in seiner vorgesehenen Umgebung, um seine vorgesehenen Funktionen auszuführen.
Maintenance –Prozess der Modifizierung eines Softwaresystems oder einer Komponente nach der Auslieferung, um Fehler zu beheben, die Leistung oder andere Eigenschaften zu verbessern oder sich an eine veränderte Umgebung anzupassen.
Retirement – Einstellung der aktiven Unterstützung durch die Betriebs- und Wartungsorganisation, teilweiser oder vollständiger Ersatz durch ein neues System oder Installation eines verbesserten Systems.
Rollen Softwareentwicklung
requirements engineer
Softwaerearchitekt
Softwareentwickler
software tester
Systemadministrator
Gründe und Ziele der Softwareentwicklung
Software Engineering
▪ … ist eine defensive Aufgabe, analog zur »Hygiene« in der Medizin: die Disziplin »erschafft« nichts, sondern sie verhindert Schäden
▪ … ist keine Technologie, sondern eine »Verhaltenskodex« für alle Personen, die am Entwurf, Entwicklung und Betrieb von Software beteiligt sind
▪ … setzt effektiv Standards und etablierte Werkzeuge, Methoden und Vorgehensmodelle für die Softwareentwicklung ein
▪ … sorgt für eine bedarfsgerechte Dokumentation der Software
Systematische Anwendung von wissenschaftlichen
und technologischer Kenntnisse, Methoden und Erfahrungen bei der
Entwurf, Implementierung, Test und Dokumentation von Software.
(2) Anwendung eines systematischen, disziplinierten, quantifizierbaren Ansatzes
für die Entwicklung, den Betrieb und die Wartung von Software, d.h.
d. h. die Anwendung von Ingenieurwissenschaften auf Software.
Standard oder Individualsoftware
▪ Standardsoftware (Off-the-Shelf Software)
▪ Mit Konfiguration der spezifischen Kundenbedürfnisse (Customizing)
▪ Beispiele: Microsoft Office, SAP etc.
▪ Hierzu zählt auch Software as a Service (SaaS) beim Cloud Computing
▪ Individualsoftware (Custom Software)
▪ Auf Grundlage spezifischer Anforderungen des Kunden individuell entwickelte Software
Make or buy??
Vor und Nachteile bei standardsoftware
▪ Schnellerer Einsatz
▪ Kosten von Individualsoftware wird unterschätzt
▪ Qualitätsverbesserung durch viele Kunden
▪ Entwicklungskosten werden von vielen Kunden getragen
▪ Höhere Planungssicherheit
▪ Total Cost of Ownership (TCO) geringer
▪ Abhängigkeit von Lieferanten
▪ Kundenspezifische Anpassungen kaum möglich
▪ Kein »Alleinstellungsmerkmal« im Wettbewerb
▪ Weiterentwicklung muss mit allen Kunden abgestimmt werden
▪ Insolvenz des Lieferanten
Softwarequalität
Fähigkeit eines Softwareprodukts zur Erfüllung
angegebene und implizite Bedürfnisse zu erfüllen, wenn es unter bestimmten Bedingungen verwendet wird.
(2) Grad, in dem ein Softwareprodukt die angegebenen und
und implizite Bedürfnisse bei Verwendung unter bestimmten Bedingungen erfüllt.
Qualitätsmerkmale
▪ Funktionale Eignung (Functional Suitability)
▪ Besitzt die Software ausreichend Funktionen, um die angegebenen und vorausgesetzten Erfordernisse zu erfüllen?
▪ Leistungseffizienz (Performance Efficiency)
▪ Wie sparsam ist die Software zur Lösung eines festgelegten Problems bezüglich Ressourcen, des Zeitverhaltens bei Anfragen und der Bearbeitungen sowie des Speicherplatzes?
▪ Kompatibilität (Compatibility) ▪ Können zwei oder mehr Systeme oder Komponenten Informationen untereinander austauschen bzw. ihre erforderlichen Funktionen ausführen bei Nutzung der gleichen Hardware- oder Softwareumgebung? ▪
Benutzbarkeit (Usability)
▪ Lässt sich das Programm leicht bedienen und erlernen? Wie attraktiv und benutzerfreundlich ist die Software für den Benutzer?
▪ Zuverlässigkeit (Reliability)
▪ Kann die Software ihr Leistungsniveau unter festgelegten Bedingungen über einen bestimmten Zeitraum aufrechterhalten?
▪ Sicherheit (Security)
▪ Wie gut ist der Datenschutz? Können nicht autorisierte Personen oder Systeme die Daten lesen oder verändern? Wird autorisierten Personen oder Systemen der Zugang zu den Daten auch nicht verwehrt?
▪ Wartbarkeit (Maintainability)
▪ Wie hoch ist der Aufwand zur Fehlerbeseitigung, zur Umsetzung von Verbesserungen oder zur Anpassung an Umgebungsveränderungen? Wie gut ist die Wiederverwendbarkeit? Wie stabil ist die Software gegenüber Änderungen zur Vermeidung ungewollter Seiteneffekte?
▪ Übertragbarkeit (Portability) ▪ Ist die Software auch auf anderen Systemen (Hard- und Software) einsetzbar?
Softwarefehler
Phasen der »Verursachung« und »Entdeckung« von Softwarefehlern korrespondieren typischerweise
User Needs Operation & Maintenance
Requirements Analysis Deployment & Acceptance Testing
Design Integration Testing
Implementation Unit Testing
Codeeingabe IDE & Compiler
Last changeda month ago