Continuous Software Engineering.
Wilhelm Hasselbring · 2016
Continuous Software Engineering ist seit Jahrzehnten ein kontinuierlich behandeltes Thema in der Forschung und der Praxis des Software Engineering. Traditionell fokussiert die kontinuierliche Softwareentwicklung auf Reverse und Re-Engineering Aktivitaten zur Weiterentwicklung langlebiger Softwaresysteme. In den letzten Jahren hat dieses Thema in der Praxis durch die Verfugbarkeit von leistungsfahigen Werkzeugen zur Automatisierung stark an Bedeutung gewonnen. Gleichzeitig ist eine Betonung automatisierter Qualitatssicherungsmasnahmen zu beobachten. Continuous Integration und Continuous Delivery/Deployment sind dazu aktuelle Schlagworte. Fur die kontinuierliche Softwareentwicklung ist es nun auch wichtig neben der Konstruktion und Weiterentwicklung von Software auch schon in der Entwicklung den spateren Betrieb im Rechenzentrum oder in eingebetteten Systemen zu berucksichtigen. Die DevOps-Bewegung zielt darauf ab die Zusammenarbeit von Softwareentwicklung (Dev fur Development) und Betrieb (Ops fur Operations) zu optimieren und Reibungsverluste zu vermeiden. In der (agilen) Softwareentwicklung ist es das Ziel, schnell viele Features bereitzustellen. Im Betrieb ist es das Ziel, stabile Dienste bereitzustellen - haufige Anderungen werden hier traditionell als unerwunscht angesehen. DevOps verfolgt nun den Ansatz viele, stabile Releases bereitzustellen. Die dazu erforderliche Qualitatssicherung und Effizienzsteigerung wird durch die Automatisierung von Entwicklungs- und Betriebsaufgaben erreicht. Generell fuhrt die kontinuierliche Integration von Qualitatssicherungsmasnahmen zu einer kontinuierlich hohen Qualitat und damit zu vielen stabilen Releases. Zur kontinuierlichen Uberwachung der resultierenden Softwaredienste und auch der sogenannten Deployment-Pipelines muss moglichst viel automatisiert gemessen und uberwacht werden (Monitoring). Durch DevOps bekommt das Thema Softwarearchitektur auch in der agilen Softwareentwicklung eine starkere Bedeutung und Wurdigung. Fur DevOps ist es sinnvoll praskriptive und deskriptive Architektur-Modelle zu kombinieren. Praskriptive Modelle kommen aus der Softwareentwicklung (Forward Engineering). Deskriptive Modelle kommen aus der Beobachtung der im Betrieb befindlichen Softwaredienste (Reverse Engineering durch dynamische Analyse). In diesem Vortrag werde ich diskutieren, warum Softwarearchitektur ein zentrales Artefakt an der Schnittstelle zwischen Entwicklung und Betrieb ist. Speziell Microservice-Architekturen und dem kontinuierlichen Monitoring der resultierenden Systeme kommt hier eine besondere Rolle zu.