Als Bereitstellungsumgebung ( oder ) bezeichnet man in der Informatik ein oder mehrere Computersysteme, um ein Computerprogramm für Anwender und andere Beteiligte auszuführen und bereitzustellen.

Unterscheidung Abhängig vom Entwicklungsfortschritt des Programms unterscheidet man zwischen unterschiedlichen Umgebungen:

Entwicklungsumgebung In der Entwicklungsumgebung (), oft kurz als DEV bezeichnet, werden die Softwareanforderungen umgesetzt und durch automatisierte Tests abgesichert. Um Fehlentwicklungen zu vermeiden, muss die Entwicklungsumgebung der Produktivumgebung nachempfunden sein. Typischerweise werden alle Dienste, von denen das Programm abhängig ist, lokal ausgeführt.

Build-Umgebung In der Build-Umgebung, oft kurz als BUILD bezeichnet, wird der Quelltext der Anwendung zentral kompiliert, jedoch nicht ausgeführt. Die Build-Umgebung muss hierbei nicht der Produktivumgebung ähneln, sondern lediglich die für das Kompilieren nötigen Abhängigkeiten bereitstellen.

Testumgebung In der Testumgebung (), oft kurz als TEST bezeichnet, werden automatisierte Softwaretests ausgeführt.Antonia Bertolino, Andrea Polini: A framework for component deployment testing. In: Proceedings of the 25th International Conference on Software Engineering (ICSE 2003). May 3-10, 2003, Portland, Oregon. IEEE Computer Society 2003, S. 221–231.Christian Murphy et al.: Automatic detection of previously-unseen application states for deployment environment testing and analysis. In: Proceedings of the 5th International Workshop on Automation of Software Test (AST). May 3-4, 2010, Cape Town, South Africa. 2010, S. 16–23. Unittests werden hierbei typischerweise nach jedem Check-In in der Versionsverwaltung ausgeführt, während lang laufende Integrationstests je nach Laufzeit teilweise nur auf täglicher () bis wöchentlicher Basis ausgeführt werden.

Qualitätssicherungsumgebung In der Qualitätssicherungsumgebung (), oft kurz als QS oder QA bezeichnet, wird die Anwendung für die Qualitätssicherung bereitgestellt, in der Tester explorativ nach Fehlern in der Anwendung suchen und zusätzliche Tests implementieren. Die Qualitätssicherungsumgebung muss möglichst der Produktivumgebung entsprechen.

Staging-Umgebung (auch Integrationsumgebung und Konsolidierungsumgebung) Die Staging-Umgebung (), oft kurz als STAGE bezeichnet, stellt das Programm für den Product Owner und den Kunden für die Abnahme bereit. Die Stagingumgebung muss möglichst der Produktivumgebung entsprechen.

Produktivumgebung

in dieser Umgebung, oft kurz als PROD bezeichnet, wird das Programm für den eigentlichen Einsatzzweck des Kunden verwendet und generiert hierbei einen Geschäftswert. Die Funktion des Programms wird hierbei laufend mittels Logging, Monitoring und Auditing überwacht.

Bedeutung Je später ein Programmfehler gefunden wird, desto teurer ist es, den Fehler zu beheben und desto höher sind die durch den Fehler verursachten Kosten. Insbesondere können Fehler in Finanzanwendungen innerhalb kurzer Zeit zu massiven Geldverlusten führen und Fehler in sicherheitskritischen Anwendungen zu einer Lebensgefahr werden. Deshalb durchläuft die Entwicklung unterschiedliche Phasen um Fehler zu finden, bevor das Programm in die Produktion geht.

+ Relative Kosten durch Programmfehler Projektstatus Kostenfaktor für Fehlerbehebung Anforderung 1 Entwurf 3–6 Entwicklung 10 Testumgebung 14-15 Qualitätssicherung 30–70 Produktion 40–1000

Es ist daher wichtig, Fehler durch geeignete Maßnahmen zu vermeiden und möglichst früh zu finden. Maßnahmen umfassen hierbei:

Verfassen der Softwareanforderung in einer automatisch verifizierbaren Sprache wie Gherkin oder Attempto Controlled English Checklisten, etwa die Definition of Ready (DoR) und Definition of Done (DoD) in Scrum Anforderungen an die Codequalität, wie SOLID-Prinzipien und Clean Code Automatisierte Softwaretests, insbesondere Unittests und Integrationstests Code-Reviews und Paarprogrammierung statische Code-Analyse

Siehe auch Continuous Delivery#Continuous Deployment Anwendungsmanagement Releasemanagement Systemumgebung

Weblinks

Einzelnachweise

Kategorie:IT-Management