„No one in the brief history of computing has ever written a piece of perfect software. It’s unlikely that you’ll be the first.“ – Andy Hunt
„Any fool can write code that a computer can understand. Good programmers write code that humans can understand.“ – Martin Fowler
Im Universum der Softwareentwicklung, in dem die Sprache von Bits und Bytes alles lenkt und neue Welten erschafft, machen sich viele auf, um eben jenes zu tun: Neues zu kreieren. Eine spannende Reise, die ein umwerfend breit gefächertes Repertoire zu bieten hat, von der ersten erstellten Website bis zum ersten Docker-Container oder dem ersten eigenen KI-Model. Die Möglichkeiten erscheinen heutzutage endlos. Während die Erstellung von Anwendungen und Programmen im Vordergrund steht, bleibt ein entscheidender Aspekt im Schatten verborgen: die Wartbarkeit von Software.
Viele Risiken in Softwaresystemen sind „von außen“ nicht sichtbar. Diese haben jedoch einen gravierenden Einfluss auf zukünftige Kosten und die Qualität der Software. Die Wartbarkeit ist erwiesenermaßen der wichtigste Faktor für die Gesamtkosten einer Software über den gesamten Lebenszyklus betrachtet. Bitsea hat zusammen mit der Hochschule Bonn-Rhein-Sieg (H-BRS) ein vom Bundesministerium für Wirtschaft und Klima unterstütztes Projekt verwirklicht, um die Wartbarkeit hoch automatisiert und kontinuierlich zu prüfen.
Die letzten Jahrzehnte der Software-Entwicklung haben gezeigt wie wichtig eine grundliegende Wahrung von „Coding Rules“ und „Designpatterns“ für eine gute Wartbarkeit von Software-Produkten ist. Untersuchungen bestätigen eine Korrelation zwischen Häufungen von Entwurfsmusterverletzungen (Antipatterns) und exponentiell steigenden Kosten für die Erhaltung der Software.
Um diesen Herausforderungen effektiv zu begegnen, bietet sich eine regelmäßige statische Softwareanalyse an. Bei der statischen Analyse werden verschiedene Metriken berechnet, die die Qualität der Software beschreiben. Ein paar einfache Beispiele sind LOC (Lines of Code), welche die Länge einer Klasse aufzeigt oder NOM (Number of Methods), wobei hier die Anzahl der Methoden in einer Klasse gezählt werden. Überschreitet eine Metrik einen bestimmten Schwellenwert, kann dies auf aufkommende potenzielle Probleme hinweisen. Häufen sich solche Überschreitungen, sprechen wir von Entwurfsmusterverletzungen oder „Antipatterns“. Finden wir in einem System besonders gravierende oder mehrere in einem bestimmten Bereich, wird von „Hot Spots“ gesprochen, die sich negativ auf die Zukunftsfähigkeit des gesamten Systems auswirken können. Durch sorgfältiges Refactoring können „Hot Spots“ und Antipatterns wieder aufgelöst werden, um die Qualität und Wartbarkeit zu verbessern.
Bitsea ist seit mehr als einem Jahrzehnt auf die Prüfung von Softwaresystemen spezialisiert und identifiziert versteckte Risiken. Viele Visualisierungen verdeutlichen die Ergebnisse und erleichtern das Verständnis. Dennoch ist das Optimum längst nicht erreicht: Eine vollautomatische in den Entwicklungsprozess eingebettete kontinuierlich Prüfung des Codes. Deshalb beschäftigt sich Bitsea mit der Erstellung einer geeigneten Werkzeugkette.
Im Rahmen des Zentralen Innovationsprogramm Mittelstand (ZIM), ein Förderprogramm des Bundesministeriums für Wirtschaft und Klima, konnte unser Forschungsvorhaben verwirklicht werden. Bitsea konnte vor unserem ZIM-Projekt bereits mit Bisquat1 (Bitsea Software Qualitäts Analyse Tool 1), einem hauseigenen Werkzeug zur Softwareanalyse, aufwarten. Bei dem Tag der offenen Tür des Instituts für Visual Computing der Hochschule Bonn-Rhein-Sieg entstand zunächst die Idee die statische Analyse durch immersive 3D Visualisierungen zu erweitern. Die moderne Ausstattung der Labore mit 3D-Brillen und riesigen hochauflösenden Bildschirmen lud geradezu dazu ein, dies mit der Softwareanalyse zu verbinden. Durch Bisquat1 bestand bereits die Erfahrung wie man Analysewerkzeuge implementiert. Die Erweiterung im Sinne der Verständlichkeit mit 3D Visualisierungen fügte sich gut ins Bild. Eine Ergänzung durch eine dynamische Analyse und innovative KI-Bestandteile waren weitere Teile unserer Forschungsidee. Ein performantes System mit all diesen Komponenten sollte erschaffen werden. Schnell waren Partner an der Hochschule gefunden, mit denen wir die Idee weiterentwickeln und ausbauen konnten.
Inzwischen können wir auf zwei Jahre produktive Zusammenarbeit zurückblicken, in denen es uns möglich war eine innovative hauseigene Werkzeugkette aufzubauen. Mit Bisquat2 sind wir nicht nur fähig schnellere, effiziente, statische Softwareanalysen durchzuführen, sondern es können auch dynamische Auffälligkeiten analysiert werden. Dabei werden beispielsweise die CPU-Nutzung und Memory-Leaks untersucht. Außerdem wurde eine Open-Source-Lizenzanalyse eingebaut und Auswertungen von KI unterstützt. Zusätzlich erstellt Bisquat2 2D Grafiken, die durch die immersiven 3D Visualisierungen unserer Hochschulpartner passend ergänzt wurden.
Unsere Hochschulpartner glänzten mit ihren zwei 3D Visualisierungen: Mit einer virtuell umgesetzten „City View“ kann man Software wie einen Stadtbesuch erleben und interaktiv die Beschaffenheit des Codes untersuchen. Die zweite 3D Visualisierung der H-BRS beschäftigt sich mit der anschaulichen Darstellung und Zusammensetzung der Komponenten eines Softwaresystems und ihrer Lizenzen.
Alle neuen Features hielten besondere Herausforderungen für uns bereit und wer wären wir, wenn wir diese nicht annehmen würden? Für spezielle Anforderungen braucht es spezielle Lösungen. Für jede Problematik fanden wir einen passenden Lösungsansatz, wobei wir agil und gewandt unsere ursprünglichen Spezifikationen und Use-Cases der Anwendung mit neu entstehenden Ideen kombinierten und umsetzten.
Momentan unterstütz Bisquat2 Java, in naher Zukunft wird dies mit weiteren Programmiersprachen ergänzt. Bisquat2 wird stetig erweitert und ausbaut. Tatsächlich greifen wir fortlaufend neue Ideen auf, die noch umgesetzt werden sollen.
Im Vergleich zu unserer vorherigen Werkzeugkette bietet Bisquat2 viele neue Funktionen an. Bisquat2 verarbeitet den Source Code direkt, daher ist nur eine minimale Vorbearbeitung nötig. Der gesamte Analyseablauf konnte durch Bisquat2 um mehrere Tage verkürzt werden, wobei circa 60% der vorherigen Arbeitszeit eingespart werden. Dies bedeutet natürlich eine hohe Steigerung der Effizienz.
Unsere Bisquat2-Blogreihe wird die verschiedenen Funktionen von Bisquat2 im Detail beleuchten. Unterteilen lässt sich Bisquat2 in folgende verschiedenen Komponentengruppen:
- Statische Analyse
- Dynamische Analyse
- Lizenzmanagement
- 3D Visualisierungen
- KI
- Automatischer Bericht mit Optimierungsempfehlungen
Jedes Thema wird in den nächsten Wochen näher erläutert, wobei Nutzen, Funktionsweise, Problematiken und Resultate thematisiert werden.