Software-Entwurf

Softwarearchitektur bewerten und pflegen

Seite: 4/4

Anbieter zum Thema

Toolgestützte Analyse der Softwarearchitektur

Um die Analyse der Softwarearechitektur zu automatisieren, können Tools hilfreiche Unterstützung. Der Coverity Architecture Analyzer z.B ermöglicht die automatische Analyse und Visualisierung der architektonischen Struktur und der Abhängigkeiten in großen C/C++ und Java Codebasen. Indem er die Definition, Kommunikation und Kontrolle der Softwarearchitektur erleichtert, ermöglicht er Entwicklern, die strukturelle Komplexität ihres Codes einzuschränken, sie auf jedem Level zu erfassen und besonders komplexe Codeblocks hervorzuheben. Ermöglicht man Entwicklern die Definition der Anwendungsarchitektur und der Codestruktur, verstehen Teams eher die beabsichtigte Architektur einer Anwendung, ihren entsprechenden Aufbau und die erforderliche effiziente Pflege.

Mit dem Coverity Architecture Analyzer können Entwickler die Lücke zwischen tatsächlicher und geplanter Struktur überbrücken, so dass die Teams den Code in Übereinstimmung mit der ursprünglich beabsichtigen Architektur entwickeln. Durch die grafische Darstellung der Komponenten innerhalb des Softwaresystems ermöglicht der Coverity Architecture Analyzer den Entwicklern, mehrere architektonische Regeln in einem kurzen und bündigen Format zu vermitteln.

Der Coverity Architecture Analyzer nutzt das von Coverity patentierte Software DNA Map Analysesystem. Die Software DNA Map spiegelt eine bit-genaue Repräsentation des gesamten Softwaresystems wider und ermöglicht so eine tiefgehende Analyse des Softwaresystems noch vor der eigentlichen Ausführung.

Zu den Eigenschaften und Einsatzmöglichkeiten des Werkzeugs zählen:

Automatische Einsehbarkeit der Anwendungsarchitektur und Abhängigkeiten:

  • Betrachtung der Abhängigkeitsgraphen als Diagramme oder Matrizen auf Funktions-, Methoden-, Typ- und variablen Levels.
  • Auffinden und Analyse der Quelle von jeder Abhängigkeit, Tangle oder ungenutzten Codeclustern auf jedem Anwendungslevel: Method to Method, Function to Type, Class to Class, Package to Class und weitere.
  • Betrachtung der strukturellen Unterschiede im Zeitablauf und Analyse der Abhängigkeiten auf spezifischen Codebasis-Levels, wie Klassen, Ordner oder Design.
  • Automatisches Auffinden der versteckten Struktur in großen Graphen und Isolierung der Tangled Elemente und natürlichen Cluster durch automatische Aufteilung.
  • Aufdeckung von allem, was ein Element nutzt (oder durch das es genutzt wird) auf jedem Level.

Definition und automatisches Durchsetzen der Anwendungsarchitektur:

  • Design und Veröffentlichung architektonischer Blockdiagramme in gemeinsamen Aufbewahrungsorten zur Distribution via Web und IDE-Plugins.
  • Anwendung struktureller Veränderungen mit einfachen Mapping Expressions zur Umsetzung der Modell-Hierarchie, z.B. durch Isolation von Testcode oder Kombination der APIs.
  • Beschränkung der strukturellen Komplexität auf jedem Anwendungslevel und Überwachung hoher Komplexität über Projekte und Zeitablauf.
  • Akkurate Vorhersage der Auswirkungen von Codeveränderungen, wie der Ersatz eines Verzeichnisses, vor Veränderung auch nur einer einzigen Codezeile.
  • Versenden von IDE-Warnungen direkt an die Programmierer, sobald Codeveränderungen die beabsichtigte Architektur verletzen.
  • Benachrichtigung der Entwickler über RSS, wenn neue Verletzungen auftreten, die in ein Software-Build gelangen.

*Seth Hallem ist CEO und Co-Founder von Coverity

(ID:331782)