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[1]. Ihre Hauptanwendungen umfassen die Risikoanalyse für und die Überwachung von Codequalität, Aktivität von Entwicklungsteams oder von Vorgängen im Softwareentwicklungsprozess[2] 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[3] 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").[4]
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".[5] 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.
Weblinks
- Interactive Software Maps for Web-Based Source Code Analysis. Abgerufen am 28. April 2019 (englisch).
- Extending Recommendation Systems with Software Maps. Abgerufen am 28. April 2019 (englisch).
- A Visual Analysis Approach to Support Perfective Software Maintenance. Abgerufen am 28. April 2019 (englisch).
Einzelnachweise
- Stephan Diehl: Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software. Springer, 5, 2007, ISBN 978-3-540-46504-1
- Monitoring Code Quality and Development Activity by Software Maps Johannes Bohnet and Döllner, Jürgen. In: Proceedings of the IEEE ACM ICSE Workshop on Managing Technical Debt, pp. 9–16, 2011.
- Visualizing Software Systems as Cities. Richard Wettel, Michele Lanza. In: 4th IEEE international Workshop on Visualizing Software for Understanding and Analysis, 2007.
- Consistent Layout for Thematic Software Maps. Adrian Kuhn, Peter Loretan, Oscar Nierstrasz, 2008.
- Interactive Software Maps for Web-Based Source Code Analysis. Limberger, Daniel et al. In: Proceedings of the International Web3D Conference, ACM, pp. 8, 2013.