# Softwarevisualisierung

Softwarevisualisierung beschäftigt sich mit der Visualisierung von Informationen über Softwaresysteme. Es kommen vorrangig statische, interaktive und animierte 2-D- und 3-D-Visualisierungsverfahren zum Einsatz.

## Aufgaben und Ziele

Softwarevisualisierung bildet im Allgemeinen Informationen wie zum Beispiel die Implementierungsstruktur, den Entwicklungsverlauf oder das dynamische Systemverhalten ab. Typischerweise werden in der Visualisierung Softwaremetrik-Informationen einbezogen, wie zum Beispiel die Größe oder Komplexität einer Systemkomponente (z. B. abgeleitet aus Quellcode-Analysen).
Softwarevisualisierung stellt grundlegende Konzepte und Werkzeuge für den Softwareentwicklungsprozess bereit, zum Beispiel in Form von Softwarekarten, die innerhalb von entscheidungsunterstützenden Systemen eingesetzt werden. Softwarevisualisierung richtet sich nicht nur an die initiale Phase einer neuen Systementwicklung (z. B. graphisches Programmieren), sondern vor allem an die (zeitlich meist unbefristete) Maintenance-Phase.
Softwarevisualisierung ist von Natur aus keine Methode zur Software-Qualitätssicherung, kann aber dazu verwendet werden manuell Anomalien (z. B. Zyklen) aufzuspüren oder Defekte zu erkennen. Dieser Prozess wird auch „visuelles Data Mining“ genannt.
Die Ziele der Softwarevisualisierung beinhalten das Verstehen von Softwaresystemen (z. B. Aufbau und Struktur) und Algorithmen (z. B. die Animation von Suchalgorithmen), die Analyse von Softwaresystemen zur Entdeckung von Anomalien (z. B. durch Darstellung von Klassen mit (zu) hoher Kopplung) sowie das Überwachen von Code-Qualität in Verbindung mit Aktivitäten des Entwicklungsteams.

## Klassifizierung

Die Softwarevisualisierung bildet einen Themenbereich zwischen der Softwaretechnik und der Informationsvisualisierung. In den meisten Arbeiten, die sich damit beschäftigen, stehen weniger neue Visualisierungsmethoden oder neue Softwareanalyseverfahren im Mittelpunkt, sondern die Anwendung bereits bekannter Darstellungsformen auf bestimmte Eigenschaften einer Software. Das Gegenstück zur Softwarevisualisierung ist das sogenannte visuelle Programmieren, bei dem aus einer Visualisierung erst die Software generiert wird. Dieser Ansatz kommt etwa bei Lernprogrammen für Kinder oder beim Rapid Prototyping zum Tragen.

## Arten der Softwarevisualisierung
### Visualisierung einzelner Klassen und Komponenten

Werkzeuge für die Softwarevisualisierung können eingesetzt werden um einen Entwickler direkt während der Softwareentwicklung und -wartung zu unterstützen. Ziel dabei ist die automatische Entdeckung und Visualisierung von Qualitätsdefekten in objektorientierten Systemen oder Diensten. Als Plugin in Entwicklungsumgebungen wie Eclipse visualisieren sie die Beziehungen einer Klasse mit anderen Klassen im Softwaresystem und markieren potentielle Probleme. Ein Nebeneffekt stellt die visuelle Navigation durch das Softwaresystem dar.

### Werkzeuge

SoftVis-Werkzeuge visualisieren Softwaresysteme oder größere Gruppen von Klassenverbänden, um Architekturen zu analysieren oder die Einhaltung von Architekturvorgaben oder der Codequalität zu überprüfen. Beispiele solcher Werkzeuge sind:
* NDepend
* Lattix LDM
* CodeCrawler
* SeeSoft
* Getaviz
* SonarGraph
* CodeCharta