Softwareprozesse und -methodologien
Softwareprozesse und -methodologien sind die strukturierten Rahmenwerke von Aktivitäten, Meilensteinen und Praktiken, die die Spezifikation, das Design, die Entwicklung, die Validierung und die Weiterentwicklung von Software über ihren Lebenszyklus hinweg organisieren.
Definition
Ein Softwareprozess ist eine Menge zusammenhängender Aktivitäten und deren Reihenfolge, die zur Produktion eines Softwareprodukts führt, und eine Softwaremethodologie ist ein dokumentierter Ansatz, der diese Aktivitäten, Rollen, Artefakte und Praktiken für eine Klasse von Projekten vorschreibt.
Scope
Dieser Bereich umfasst präskriptive Prozessmodelle wie das Wasserfall-, inkrementelle und Spiralmodell; iterative und evolutionäre Ansätze; agile Methodologien sowie deren Werte und Zeremonien; Lean- und DevOps-Praktiken für kontinuierliche Integration und Bereitstellung; und Prozessverbesserungsrahmenwerke wie CMMI und ISO/IEC 12207. Er behandelt sowohl die abstrakte Struktur von Prozessen als auch die menschlichen und organisatorischen Faktoren, die ihre Einführung bestimmen.
Sub-topics
Core questions
- Wie sollten die Aktivitäten Spezifikation, Design, Implementierung und Validierung geordnet und iteriert werden?
- Wann sind planungsgesteuerte (prädiktive) Prozesse agilen (adaptiven) vorzuziehen?
- Wie kann ein Prozess gemessen, bewertet und inkrementell verbessert werden?
- Wie beeinflussen Teamstruktur, Kommunikation und Werkzeuge die Effektivität eines Prozesses?
Key theories
- Wasserfallmodell (planungsgesteuert)
- Ein sequenzielles Modell, bei dem Anforderungen, Design, Implementierung, Verifizierung und Wartung als diskrete Phasen mit formeller Abnahme aufeinanderfolgen, gut geeignet für stabile, gut verstandene Anforderungen, aber kritisiert für die schlechte Anpassung an Änderungen.
- Spiral- und risikogesteuerte Modelle
- Boehms Spiralmodell organisiert die Entwicklung als wiederholte Zyklen, wobei jeder Zyklus durch die Identifizierung und Lösung der höchsten Projektrisiken gesteuert wird, wodurch iterative Entwicklung mit explizitem Risikomanagement vereint wird.
- Agile und iterative-inkrementelle Entwicklung
- Agile Methoden liefern funktionierende Software in kurzen Iterationen, wobei sie die Zusammenarbeit mit dem Kunden, die Reaktion auf Änderungen und häufiges Feedback gegenüber umfangreicher Vorabplanung und Dokumentation bevorzugen.
Clinical relevance
Die Wahl des Prozesses beeinflusst direkt die Vorhersagbarkeit der Lieferung, die Fehlerraten, die Fähigkeit, sich ändernde Anforderungen aufzunehmen, und die Teamproduktivität; die moderne Praxis kombiniert agile Iteration mit DevOps-Automatisierung, um Feedbackschleifen zu verkürzen und gleichzeitig Qualität und Compliance zu wahren.
Evidence & guidelines
Der Standard ISO/IEC/IEEE 12207 standardisiert Software-Lebenszyklusprozesse, und der SWEBOK Software Engineering Process Wissensbereich sowie CMMI bieten weit verbreitete Referenzrahmenwerke für die Prozessdefinition und -verbesserung.
History
Die Entwicklung großer Systeme in den 1970er Jahren popularisierte phasenorientierte, dokumentengesteuerte Modelle. Boehm führte 1988 eine explizite risikogesteuerte Iteration ein, der Rational Unified Process formalisierte die iterative Entwicklung in den 1990er Jahren, und das Agile Manifest von 2001 kristallisierte leichtgewichtige, veränderungstolerante Methoden heraus, die zusammen mit DevOps in den 2010er Jahren zum Mainstream wurden.
Debates
- Planungsgesteuerte versus agile Prozesse
- Eine langjährige Debatte betrifft die Frage, wann prädiktive, dokumentationsintensive Prozesse adaptiven agilen Prozessen überlegen sind; der Konsens ist, dass die richtige Balance von der Stabilität der Anforderungen, regulatorischen Einschränkungen, der Teamgröße und den Kosten später Änderungen abhängt.
Key figures
- Winston W. Royce
- Barry Boehm
- Kent Beck
- Watts Humphrey
Related topics
Seminal works
- royce1970
- boehm1988
- sommerville2015
Frequently asked questions
- Ist das Wasserfallmodell obsolet?
- Das rein sequenzielle Wasserfallmodell ist selten ideal für Projekte mit sich entwickelnden Anforderungen, aber seine phasenweise Struktur prägt immer noch regulierte und sicherheitskritische Bereiche und liegt hybriden Modellen zugrunde; die meisten modernen Projekte verwenden iterative oder agile Varianten, die eine disziplinierte Spezifikation und Validierung beibehalten.
- Was ist der Unterschied zwischen einem Prozess und einer Methodologie?
- Ein Prozess beschreibt die Aktivitäten und deren Reihenfolge, während eine Methodologie eine vollständigere, benannte Vorschrift ist, die auch Rollen, Artefakte, Zeremonien und Praktiken festlegt; Scrum und der Rational Unified Process sind Methodologien, die iterative oder agile Prozesse instanziieren.