mini|Zwei Softwareentwickler bei der Arbeit. Gemeinsam versuchen sie, ein komplexes Programm im Rahmen der Methode der Paarprogrammierung zu schreiben. Softwareentwicklungsprozesse sind Methoden oder Verfahren zur Planung, Steuerung und Kontrolle der Softwareentwicklung sowie des Designs, der Programmierung und des Tests von Software. Sie werden innerhalb eines Entwicklungsteams angewendet und können beispielsweise von einer Führungsperson, wie dem Projektleiter oder Scrum Master angeregt werden.
Dabei handelt es sich um Ideen, Konzepte oder Methodiken für den Einsatz im Prototyping oder im operativen Entwicklungsgeschäft. Die Prozesse bauen teilweise auf Vorgehensmodellen auf, die seit der Entwicklung von Computern (Rechnertechnik) existieren. Im Rahmen des System Engineerings wird übergeordnet eine Softwarearchitektur entwickelt. Des Weiteren gelten die Methoden für die Herstellung von Softwaresystemen und werden auch in angepasster Weise in der Entwicklung von Elektronik oder Mikroelektronik (Chipdesign) verwendet. Elektronische Hardware unterscheidet sich jedoch hinsichtlich ihrer physikalischen Gesetzmäßigkeiten bzw. technischen Rahmenbedingungen von Software und umgekehrt. Die Hardware-Software-Schnittstelle ist daher zu beachten.
Die Anwendbarkeit der Konzepte ist teilweise von der verwendeten Programmiersprache oder Computerhardware abhängig. Einige Methoden werden für hardware-nahe Geräte (Embedded Systems) bevorzugt, andere für Anwendersoftware, Computerspiele, Onlineservices oder zur Herstellung von Software im Bereich der Informationstechnik (IT), beispielsweise für das Cloud Computing.
Barry Boehm unternahm einen historischen Rückblick einiger Softwareentwicklungsmethoden bis in die 2000er Jahre und stellte dabei die Aussage „Wer sich nicht an die Vergangenheit erinnert, ist dazu verdammt, sie zu wiederholen“ infrage. Er antwortete: „In Zeiten des rasanten Wandels sind diejenigen, die die Vergangenheit wiederholen, zu einer düsteren Zukunft verdammt.“
Liste der Entwicklungsprozesse für Software In der folgenden Liste werden ausgewählte und bekannte Methoden, Verfahren, Konzepte und weitere Themen aufgeführt. Die Liste erhebt keinen Anspruch auf Vollständigkeit, bietet jedoch einen Einblick in die Welt der Softwareentwicklungsmethoden, Taxonomien und Fachbegriffe.mini|272x272px|In der Softwareentwicklung möchte man sogenannten Spaghetticode vermeiden. Entwickler lieben jedoch Pizza. Jeff Bezos brachte es auf den Punkt: „Wenn man ein Team nicht mit zwei Pizzen satt bekommt, ist es zu groß.“ Genau solche Überlegungen sollen auch in der Entwicklung helfen: Prozesse schaffen Klarheit und bringen Ordnung in dieses komplexe Zusammenspiel aus Anforderungen, Code und Änderungen. Foto: Toney's Pizza & Spaghetti House, New Orleans, c. 1960
Konventionelle Methoden
Process Patterns Prototyping Rational Unified Process (RUP), geht auf Rational Software (heute IBM) zurück Spiralmodell V-Modell Wasserfallmodell (Stage-Gate-Modell)
Behörden und Industrie
Automotive SPICE Capability Maturity Model (CMM) bzw. Capability Maturity Model Integration (CMMI) Bundesvorgehensmodell (Österreich) Hermes: Das (IT-)Projektführungsmodell der Schweizer Bundesbehörden V-Modell (Entwicklungsstandard) (IT-Entwicklungsstandard der öffentlichen Hand in Deutschland – Modell der deutschen Bundesverwaltung)
Moderne Konzepte Catalysis Approach, siehe UML Clean Code Enterprise Unified Process (EUP), Weiterentwicklung von RUP Extreme Programming (XP) Feature Driven Development (FDD) Modellgetriebene Softwareentwicklung Open Unified Process (OUP) Paarprogrammierung Plastic Interface for Collaborative Technology Initiatives through Video Exploration Rapid Object-oriented Process for Embedded Systems (ROPES)Frühe 2000er Jahre, von I-Logix, welches von Telelogic übernommen wurde. Der Prozess wurde von dem Werkzeug IBM Rhapsody adoptiert, siehe auch RUP. Test Driven Development (TDD) Unified Modeling Language (UML) UI/UX für Webservices und GUI-Design W-Modell (eine Weiterentwicklung des V-Modells mit vorgezogener Testphase)
Agile Methoden
Adaptive Software Development (ASD) Agile Softwareentwicklung (Manifesto for Agile Software Development) Agile Unified Process (AUP), Weiterentwicklung von RUP Crystal Family Dynamic Systems Development Method (DSDM) Kanban Rapid Application Development (RAD) Scaled Agile Framework (SAFe) Scrum
Normen
ISO 12207, Rahmen für Prozesse im Lebenszyklus von Software ISO 13407, Benutzer-orientierte Gestaltung interaktiver Systeme
Regeln oder Beobachtungen
Siehe unter Anti-Pattern Amdahlsches Gesetz Brooks’sches Gesetz Gustafsons Gesetz
Gesetz von Conway Lehmans-Gesetze der Software-Evolution Metcalfesches Gesetz Moore'sches Gesetz
Weitere Konzepte und Themen
Änderungsanforderung Akzeptanztest (Softwaretechnik) Altsystem (Legacy)
Best Practice CI/CD Constructive Cost Model (COCOMO) Debugging DevOps Don’t repeat yourself (DRY) FAIR-Prinzip für Software in/aus/für die Forschung Generische Programmierung KISS-Prinzip Komponentenbasierte Entwicklung Konvention vor Konfiguration Microsoft Solutions Framework (MSF), unterstützt bis in die 2000er Jahre Minimum Viable Product (MVP)
MoSCoW-Priorisierung Peopleware
Personal Software Process (PSP) und Team Software Process (TSP) Programmierparadigma
Prozesse, die für Open Source Software (OSS) genutzt werden, z. B. Open Unified Process (OpenUP) Quietscheentchen-Debugging Releasemanagement Softwarequalität Stilllegung Szenariobasierte Architekturbewertung Verifizierung und Validierung (V&V)
Angrenzende Themen
Bluescreen CAx Innovationsmanagement Industrie 4.0 Object Management Group (OMG) mit Modellen wie Unified Modeling Language (UML) u. a. Produktlebenszyklus Project Management Institute (PMI) Rechnergestützte Entwicklung Silicon Valley Software Engineering Body of Knowledge (SWEBOK) Technologiemanagement
Literatur
Einzelnachweise
! Softwareentwicklungsprozesse Kategorie:Techniktheorie Kategorie:Softwaretechnik Kategorie:Methoden, Techniken und Verfahren