WAS HAUSBAU UND SOFTWARE-ENTWICKLUNG GEMEINSAM HABEN

„Was Hausbau und Software-Entwicklung gemeinsam haben.“

Ein Haus zu bauen ist keine leichte Aufgabe. Man muss dabei gegensätzliche Anforderungen unter einen Hut bringen und gleichzeitig Fertigstellungstermine und vorhandene Kostengrenzen einhalten. Entscheidungen, die man in der Planung trifft, wirken sich über Jahrzehnte auf Komfort und Werterhaltung aus.

Ganz ähnlich sieht die Situation bei größeren Softwareprojekten aus. Man muss Anforderungen präzisieren und eingrenzen, weil das Budget knapp und die Zeit bis zur Inbetriebnahme tendenziell zu kurz ist.

Ein eklatanter Unterschied wird beim Vergleich von Hausbau und Software-Entwicklung aber auch deutlich:

Während die Verantwortlichen beim Hausbau vielen gesetzlichen Normen, der lokalen Bauordnung und satten Haftungen bei Fehlern unterworfen sind, werden Softwareprojekte im Blindflug auf ihre Codequalität getestet. Bei der Abnahme solcher Systeme testet der Empfänger oft nur oberflächlich Performance, Lastverhalten und Funktionalität gemäß den fachlichen Anforderungen. Dabei vergisst er, dass die interne Codequalität ein wesentlicher Faktor für die Werterhaltung von Software ist. Nur wenn der Quellcode schon vom Start weg gut strukturiert und qualitativ hochwertig ist, können im Nachhinein hinzukommende Anforderungen einfach und gefahrlos integriert werden. Hohe interne Qualität verlängert also den Lebenszyklus einer Software. Software von schlechter Codequalität ist dagegen kurzlebig, da sie rasch den Punkt der Unwartbarkeit erreicht. Zudem ist minderwertige Software ein Kostentreiber, da jede fachliche Änderung zu immensem Aufwand bei Implementierung und Test führt.

Wenngleich niemand ein Haus ohne Normen, Bauordnung und tiefgreifende Kontrolle der Arbeiten bauen lassen würde, werden Softwareprojekte jedoch meist ohne oder mit nur sehr schwachen Vorgaben an die interne Codequalität abgewickelt. Haftungen betreffen, wenn überhaupt welche vereinbart sind, lediglich die fachlich-funktionalen Anforderungen. Da es für die meisten Bereiche der Softwareentwicklung noch keine Normen oder gesetzliche Standards gibt, ist dieses Vorgehen aus rechtlicher Sicht vollkommen legal, aus Kundensicht jedoch überaus fatal.

Kann der Auftraggeber selbst die interne Codequalität messen? Er kann. Hierzu gibt es glücklicherweise sehr gute Unterstützung aus der Open-Source-Gemeinde:

Mit Sonar (sonarqube.org) steht ein überaus mächtiges Werkzeug zur Qualitätssicherung in Softwareprojekten zur Verfügung. In den Continuous-Integration-Prozess aufgenommen, kann Sonar Leaks, also fehlerhafte Codestellen, frühzeitig erkennen. Neben statischer Codeanalyse bietet es über PlugIns die Möglichkeit, die Testabdeckung zu messen, den Aufwand zur Behebung von Qualitätsmängeln zu schätzen usw. Aus der Analyse lassen sich objektive Qualitätsmetriken ableiten, die zwingend einzuhalten sind. Diese Kriterien sollten folglich auch eine notwendige Bedingung für die Abnahme durch den Kunden darstellen.

Der volle Nutzen von Sonar ergibt sich in Kombination mit einem Continuous-Integration-Server wie z.B. Jenkins (jenkins-ci.org). Damit lassen sich Build, Tests sowie Sonaranalyse automatisiert durchführen und Qualitätsreports erstellen sowie gleich per Mail verschicken.

Analog zum Hausbau bedeutet dies, dass man mit besagtem Setup bei jedem Bauschritt prüfen kann, ob die gültigen Normen eingehalten werden.

Fazit: Vertrauen Sie nicht nur auf funktionale Tests bei der Abnahme von Softwareprojekten! Achten Sie auf Transparenz und lassen Sie sich nicht von bunten Icons und animieren User-Interfaces blenden, sondern gehen Sie mit Sonar unter die Oberfläche. Prüfen Sie die Qualität der abgelieferten Arbeit, bevor es zu spät ist. Ein qualitätsorientierter Lieferant wird Sie dabei stets unterstützen.

Top