Wissenschaftliche Untersuchungen in der Software-Entwicklung

Die Software-Entwicklung hat sich seit den ersten Computern, wie dem ENIAC aus den 1940er Jahren, rasant weiterentwickelt [1]. Über die Jahrzehnte entstanden zahlreiche Programmiersprachen, Frameworks und Architekturen, begleitet von Paradigmenwechseln, die oft als revolutionär angepriesen wurden. Dabei wurden viele dieser Konzepte weniger durch wissenschaftliche Erkenntnisse als durch technologische Begeisterung und Marketing vorangetrieben. Oft wird auch von einem Hype gesprochen. Ein Beispiel hierfür sind Microservices [2;3;4].
Produktivität und Software-Qualität: Empirische Forschung in der Software-Entwicklung
In der Mathematik lassen sich Aussagen mit klar definierten Axiomen beweisen, und auch in der Informatik können Algorithmen formal auf Korrektheit überprüft werden. Doch wenn es um Software-Architekturen und Entwicklungsprinzipien wie SOLID, Microservices oder Domain-Driven Design (DDD) geht, ist eine formale Beweisführung nicht möglich [5]. Stattdessen sind empirische Untersuchungen notwendig, um die tatsächlichen Auswirkungen solcher Konzepte auf Produktivität und Software-Qualität zu bewerten.
Viele Argumente für oder gegen diese Entwicklungsprinzipien basieren auf Erfahrungsberichten und Argumentationsketten von Experten und auf erfolgreichen Praxisbeispielen. Während diese Argumentationen und Anekdoten wertvolle Erkenntnisse liefern, sind sie nicht gleichzusetzen mit systematischer wissenschaftlicher Evidenz. Ein zentrales Problem der Software-Entwicklung ist die begrenzte Anzahl an groß angelegten, reproduzierbaren Studien, die einen objektiven Vergleich verschiedener Methoden ermöglichen.
Induktivismus vs. Kritischer Rationalismus
In der Software-Entwicklung wird häufig ein induktiver Ansatz gelebt: Ein Entwickler setzt beispielsweise SOLID-Prinzipien ein, stellt fest, dass seine Software dadurch wartbarer wird und schließt daraus, dass SOLID allgemein vorteilhaft ist. Dies ist jedoch kein Beweis für eine allgemeine Gültigkeit – es bleibt möglich, dass andere Faktoren für den Erfolg verantwortlich waren oder dass SOLID in anderen Kontexten nicht die gleichen Vorteile bietet.
Im Gegensatz dazu steht der Kritische Rationalismus nach Karl Popper [6]. Dieser Ansatz formuliert Thesen und versucht, sie gezielt zu widerlegen (Falsifikation). Es werden empirische Untersuchungen verwendet, um solche Thesen zu untersuchen. Die Ergebnisse der empirischen Untersuchungen werden dabei stets aus dem Blickwinkel des Kritischen Rationalismus betrachtet. Wenn also eine signifikante Verbesserung der Wartbarkeit unter Verwendung von SOLID-Prinzipien gemessen werden konnte, dann ist die These, dass SOLID die Wartbarkeit verbessert, damit nicht belegt. Das Vertrauen in die These wird dadurch lediglich größer. Zeigt eine empirische Untersuchung allerdings, dass es keine signifikante Verbesserung der Wartbarkeit gibt, dann ist die Aussage damit widerlegt. Dieses Vorgehen ermöglicht zwar keine absoluten Wahrheiten, führt aber zu einem fundierteren Erkenntnisgewinn als rein anekdotische Erfahrungswerte.
Tests sollen das Vertrauen in die Software erhöhen.
Beim Testen von Software wird im Grunde genauso vorgegangen. Tests sollen das Vertrauen in die Software erhöhen. Dazu werden Tests darauf ausgelegt, Fehler im Code zu finden. Je länger ein Tester versucht, einen Fehler in der Software zu verursachen und je schwieriger dies ist, desto mehr Vertrauen hat der Tester in die Software. So ist es auch mit der These. Je länger ein Wissenschaftler versucht, sie zu widerlegen, desto mehr Vertrauen gewinnt er in sie.
Was sind DORA-Metriken und welche Rolle spielen sie in der Software-Entwicklung?
Die Relevanz wissenschaftlicher Untersuchungen in der Software-Entwicklung nimmt zu. Ein Beispiel hierfür ist das Buch Accelerate, welches empirische Daten zur Softwareentwicklung analysiert [7]. Die Autoren untersuchten, welche Entwicklungspraktiken mit einer höheren Unternehmensperformance korrelieren und definieren dabei die sogenannten DORA-Metriken:
- Deployment-Frequenz: Wie häufig werden Änderungen in Produktion ausgerollt?
- Durchlaufzeit von Änderungen: Wie lange dauert es vom Schreiben des Codes bis zur Produktion?
- Zeit bis zur Wiederherstellung: Wie schnell kann ein System nach einem Vorfall wiederhergestellt werden?
- Änderungsfehlerrate: Wie viele Deployments führen zu Fehlern?
Diese Metriken zeigen eine signifikante Korrelation mit Unternehmenserfolg und Teamzufriedenheit. Unternehmen, die Continuous Delivery und Lean-Prinzipien einsetzen, haben bessere DORA-Metriken und berichten von effizienteren Prozessen, geringerer Fehleranfälligkeit und zufriedeneren Mitarbeitern. Dabei gilt jedoch zu beachten, dass Korrelation nicht zwangsläufig Kausalität bedeutet – andere Faktoren können ebenfalls eine Rolle spielen.
Durchführung quantitativer Studien mittels Fragebögen
Ein zentrales Instrument zur Erhebung empirischer Daten sind standardisierte Fragebögen. Diese ermöglichen es Forschern, große Mengen an Daten von Software-Entwicklern und -Entwicklerinnen und Unternehmen zu sammeln und systematisch auszuwerten. Um verlässliche Ergebnisse zu erzielen, müssen solche Fragebögen methodisch sauber gestaltet sein. Dabei spielen mehrere Faktoren eine Rolle:
- Reliabilität: Die Ergebnisse müssen konsistent und reproduzierbar sein, das heißt, wenn dieselbe Person den Fragebogen erneut ausfüllt, sollten ähnliche Antworten resultieren.
- Validität: Der Fragebogen muss tatsächlich das messen, was er vorgibt zu erfassen. Beispielsweise sollte eine Frage zu Entwicklerzufriedenheit nicht durch andere Faktoren wie allgemeine Unternehmenspolitik verfälscht werden.
- Skalierung und Stichprobengröße: Eine zu kleine oder nicht repräsentative Stichprobe kann zu verzerrten Ergebnissen führen. Deshalb ist es wichtig, dass Studien auf einer breiten Datenbasis beruhen.
- Statistische Auswertung: Korrelationen zwischen verschiedenen Variablen werden mittels statistischer Methoden wie Regressionsanalysen untersucht, um mögliche Zusammenhänge zu identifizieren.
Durch die sorgfältige Gestaltung und Analyse solcher Fragebögen kann sichergestellt werden, dass die Ergebnisse belastbar sind und verlässliche Erkenntnisse über die Wirksamkeit von Softwareentwicklungspraktiken liefern. Die Gründe für die Verwendung von Fragebögen sind folgende:
- Schnelle Datenerhebung und -analyse: Fragebögen ermöglichen es, in kurzer Zeit eine große Menge an Daten zu sammeln und systematisch auszuwerten.
- Erfassung der gesamten Entwicklungsumgebung: Systemdaten alleine erfassen nicht alle relevanten Faktoren. Fragebögen helfen, die gesamte Software-Entwicklung umfassender zu bewerten.
- Komplexität von Systemdaten: Die ausschließliche Nutzung von Systemdaten ist schwierig, da sie oft unvollständig oder schwer zugänglich sind.
- Vertrauenswürdigkeit der Daten: Gut konzipierte und validierte Fragebögen liefern belastbare Erkenntnisse.
- Messung subjektiver Faktoren: Aspekte wie Entwicklerzufriedenheit, Teamdynamik und wahrgenommene Effizienz lassen sich nur durch direkte Befragung der Beteiligten erfassen.
Welche Praktiken verbessern die Performance?
Die Forschung von Forsgren et al. konnte bestimmte Praktiken identifizieren, die die Entwicklungsperformance positiv beeinflussen. Zu den wichtigsten Continuous-Delivery-Praktiken gehören:
- Versionskontrolle für alle Code-Artefakte
- Automatisierte Deployments
- Regelmäßige Integration von Code in den Hauptzweig (Continuous Integration)
- Trunk-based Development zur Vermeidung langer, separater Branches
- Systematische Testautomatisierung und Testdatenmanagement
- Frühzeitige Integration von Sicherheitsmaßnahmen (Shift Left Security)
- Lose gekoppelte Architekturen für unabhängige Entwicklung und Bereitstellung
- Empowered Teams mit Entscheidungsfreiheit
- Monitoring und proaktive Benachrichtigung bei Problemen
Diese Maßnahmen tragen zur Reduktion von Entwicklungsengpässen bei und verbessern sowohl die Qualität der Software als auch die Arbeitsbedingungen für Entwickler und Entwicklerinnen.
Fazit
Die Software-Entwicklung befindet sich an der Schnittstelle zwischen Handwerk, Ingenieurswissenschaft und Management. Während viele Methoden auf Erfahrungswissen basieren, wächst die Bedeutung empirischer Forschung. Studien wie die von Forsgren et al. liefern wertvolle Daten, um den Erfolg von Entwicklungspraktiken zu messen. Dennoch bleibt es eine Herausforderung, Software-Entwicklungsprinzipien isoliert zu bewerten, da viele Einflussfaktoren eine Rolle spielen.
Die Zukunft der Software-Entwicklung könnte von einer stärkeren Verknüpfung zwischen Praxis und wissenschaftlicher Forschung profitieren. Systematische Studien, datengetriebene Analysen und ein kritischer Umgang mit Trends und Best Practices sind essenziell, um fundierte Entscheidungen in der Software-Entwicklung zu treffen.
- Wikipedia: ENIAC
Informatik Aktuell: Ulrike Scheibler – Die Geschichte der ENIAC-Frauen - Tobias Flohre: Was man vom Microservice-Hype (mindestens) mitnehmen sollte
- Eberhard Wolff: Und jetzt? Microservices nach dem Hype
- GI: Microservices - mehr als ein Hype?
- Robert C. Martin: Design Principles and Design Patterns
- Wikipedia: Kritischer Rationalismus
- Forsgren et al. (2018): Accelerate