Architektur-und Codeprüfung v. Software Langfristig sauber anpassen

Produktlaufzeiten von 10 oder 20 Jahren sind im industriellen Umfeld keine Seltenheit und stellen besondere Bedürfnisse an deren Wartbarkeit der eingesetzten Software. (Bild: Phoenix Contact)

Um die Wartbarkeit und auch die Weiterentwicklung von Produktsoftware sicherzustellen, hat Axivion seine »Bauhaus Suite« entwickelt. Am Beispiel von Phoenix Contact wird gezeigt, wie Produkte mit sehr langem Lebenszyklus gepflegt und weiterentwickelt werden können.

Produktlaufzeiten von 10 oder 20 Jahren sind im industriellen Umfeld, etwa in der Bahntechnik, der Energiewirtschaft oder im Maschinenbau, keine Seltenheit. Die Wartung der Hardware ist hier eine Selbstverständlichkeit, aber auch die Embedded- und PC-Software der Produkte muss regelmäßig gewartet und eventuell auftretende Fehler im Code – beispielsweise durch das Wechselspiel mit anderen, neuen Komponenten – müssen durch entsprechende Updates eliminiert werden. Gleichzeitig müssen bestehende bewährte Komponenten und Systeme den neuen Anforderungen im Markt angepasst werden: Eine stetige Weiterentwicklung hinsichtlich so wichtiger Kriterien wie Sicherheit, aber auch in Sachen Effizienz und Bedienbarkeit sichert den Erfolg von Produkten und Unternehmen.

Für die Entwickler der Produktsoftware bedeutet das, den über Jahre hinweg gepflegten und erweiterten »Legacy Code« in den Programmiersprachen C, C++ und C# wartbar zu halten und gleichzeitig als verlässliche Grundlage für die nächsten Produktgenerationen nutzbar zu machen. Eine entscheidende Rolle spielt hier die Architektur der Software: Ist sie über viele Produktzyklen hinweg für alle Projektbeteiligten nachvollziehbar definiert und wird sie auch konsequent eingehalten?

Phoenix Contact hat sich im Zuge dessen das »Clean Code Development« auf die Fahne geschrieben, die Entwicklung eines wartbaren und »sauberen« C/C++/C#-Codes. Das Ziel sind homogene Architektur-Beschreibungen, UML-Modelle mit einheitlicher Semantik und nachvollziehbare Dokumentationen. Im Code selbst gilt es in erster Linie Stilverstöße und Klone zu eliminieren, die langfristig in den weiterentwickelten Produkten potenzielle Auslöser für Fehlfunktionen oder Ausfälle sein können. Die Axivion Bauhaus Suite vereint alle entscheidenden Funktionen für die Architektur- und Code-Analyse und ist damit ein wichtiges Instrument für ein effizientes »Clean Code Development« geworden.

Initial konzentrierten sich die Entwickler bei Phoenix Contact auf die Nutzung der Software-Architektur-Prüfung innerhalb der Axivion Bauhaus Suite. Diese zeigt schnell die Verstöße im Code auf: Prüfreports markieren die »Problemstellen« in der Programmierung und schaffen so die Grundlage für zielführende Diskussionen. Gemeinsam mit den Software-Architekten im Team werden die Subsets in den UML-Modellen exakter definiert und je nach Kontext – beispielsweise bei Safety-relevanten Funktionen – auch bis auf Klassenebene modelliert. In den nicht-sicherheitskritischen Projekten werden Komponentenmodelle erzeugt. Dadurch entstehen konsistente und homogene UML-Modelle, deren Einhaltung in der weiteren Architektur-Prüfung insbesondere für neuen Code zeitnah und kontinuierlich überwacht wird.

Die Nutzung der Axivion Bauhaus Suite für die Architektur-Prüfung hat sich bei Phoenix Contact bereits nach kurzer Zeit erfolgreich etabliert. »Die kontinuierliche Architekturprüfung stellt sicher, dass wir bei Architektur-Entscheidungen immer eine verlässliche Diskussionsgrundlage haben«, erklärt Dr. Tobias Frank, Head of Safety & Configuration, Phoenix Contact Software GmbH. »Das ermöglicht uns, auf die wichtige Frage zu fokussieren, was eine gute Architektur für unsere Produkte ist.«

Nach und nach wurden dann weitere Funktionen der Toolsuite in die tägliche Entwicklungsarbeit einbezogen. Besonderes Interesse galt von Entwicklerseite den Features zur Überprüfung des Quellcodes auf Stilverstöße. Bei der Nutzung von Metriken wird darauf geachtet, eine kleine Menge an Metriken zu betrachten, um Qualitätsausreißer aufzuspüren wie die zyklomatische Komplexität (McCabe-Metrik). Auch die statische Analyse zur Fehlererkennung ist für die Entwickler wertvoll. Durch zusätzliche Analysen wie der Zyklenerkennung lassen sich darüber hinaus sogar Fehler identifizieren und beheben, die nur sporadisch auftreten und auf andere Weise gar nicht auffindbar wären.