# Softwarekarte

Eine Softwarekarte (engl. software map) repräsentiert statische, verhaltensbezogene, dynamische und evolutionsbezogene Informationen eines Softwaresystems und seines Entwicklungsprozesses mit Mittel der karteverwandten 2-D- bzw. 3-D-Visualisierung. Softwarekarten bilden grundlegende Konzepte und Werkzeuge in der Softwarevisualisierung. Ihre Hauptanwendungen umfassen die Risikoanalyse für und die Überwachung von Codequalität, Aktivität von Entwicklungsteams oder von Vorgängen im Softwareentwicklungsprozess sowie allgemein das Gewähren von Einblick bezüglich der relevanten Implementierungsartefakte, Entwicklungsprozesse und Beteiligten während des Softwareentwicklungsprozess und der Softwarewartung (Software Maintenance).

## Motivation und Konzepte

Softwarekarten finden im Kontext der Softwaretechnik (engl. software engineering) Anwendung: Komplexe, langfristige Softwareentwicklungsprojekte sehen sich gemeinhin vielen Schwierigkeiten gegenüber wie zum Beispiel der Spannung zwischen dem Fertigstellen neuer Leistungsmerkmale bei gleichzeitigen Sicherstellen eines hohen Grads an Codequalität, um die Wartbarkeit auch zukünftig gewährleisten. Die wesentliche Idee von Softwarekarten ist es, diese Herausforderung und Optimierungsprobleme anzunehmen, in dem wirkungsvolle Kommunikationsmittel bereitgestellt werden, die die zugrunde liegende Kommunikationslücke innerhalb der beteiligten Personen und der jeweiligen Informationsbereiche schließt.
Softwarekarten nutzen erprobte kartographische Techniken auf der Grundlage der Metapher eines virtuellen 3-D-Stadtmodells zum Ausdruck der jeweiligen komplexen, abstrakten Informationsräume. Eine solche Metapher ist erforderlich, da Softwaresysteminformationen keine inhärente Gestalt besitzen ("since software has no physical shape, there is no natural mapping of software to a two-dimensional space").

## Anwendungen

Softwarekarten ermöglichen es allgemein, den Verlauf, die Kosten und die Risiken eines Softwareentwicklungsprojekts den beteiligten Personen (u. a. Management und Entwicklerteams) verständlich und wirkungsvoll zu vermitteln. Sie vermitteln "auf einem Blick" den Status von in Entwicklung bzw. Fortentwicklung befindlichen Anwendungen und Systemen der Projektleitung und dem Projektmanagement. Ein wesentlicher Aspekt bei den entsprechenden Entscheidungsprozessen liegt darin, dass "[...] software maps provide the structural context required for correct interpretation of [...] performance indicators". Als Kommunikationsinstrument erzeugen Softwarekarten unter den Beteiligten Transparenz, die es z. B. erlaubt, die Codequalität und die funktionale Weiterentwicklung gegeneinander abzuwägen und zu entscheiden, welche notwendigen Maßnahmen getroffen werden müssen, um den Softwareentwicklungsprozess entsprechend zu optimieren. Softwarekarten erleichtern zum Beispiel die Entscheidung, wo im Code die Qualität erhöht werden sollte, um einerseits die Softwareentwicklung zu beschleunigen und andererseits die Risiken für die zukünftige Softwarewartung zu senken. Aufgrund ihrer großen Ausdrucksstärke (u. a. Informationsdichte) und ihrer schnellen, automatischen Erzeugung eignen sich Softwarekarten auch, um den jeweils aktuellen Zustand von Systemen und Prozessen widerzuspiegeln und überbrücken damit eine wichtige Informationslücke zwischen Management und Entwicklungsteam, verbessern das Bewusstsein über den Entwicklungszustand und dienen als "Frühwarnsystem" zum Aufspüren von Softwarerisiken.