Software map
A software map visually represents software system information by means of map-oriented visualization and aims at giving insight into the static, dynamic, and evolutionary status of software systems and related software engineering processes such as monitoring code quality or development progress [1].
Software maps are a type of Software visualization, which were developed at the Hasso Plattner Institute. Software maps allow costs and risks in software development projects to be presented to management and developer teams in a user-friendly manner.
Software development projects are difficult to manage, in general, due to the friction between completing system features and, at the same time, obtaining a high degree of code quality to ensure maintainability of the system in the future.
A major challenge of this optimization problem is that code quality is less visible to stakeholders in the development process, particularly to management.
Software maps offer a solution to this issue. They communicate the status of applications currently being developed or further developed to project leaders and management at a glance. The representations are based on objective, hard facts as determined by the KPI driven code analysis.
As an instrument of communication, software maps create transparency which enables priorities of code quality and the creation of new functions to be balanced against one another and to decide upon and implement necessary measures to improve the software development process.
For example, they facilitate decisions as to where in the code an increase of quality would be beneficial both for speeding up current development activities and for reducing risks of future maintenance problems.
Hence, a software map represents an adaptive, hierarchical representation of software implementation artifacts such as source code files being organized in a modular hierarchy. The maps can express and combine information about software development, software quality, and system dynamics; they can systematically be specified, automatically generated, and organized by templates.
Due to their high degree of expressiveness and their instantaneous generation, the maps additionally serve as up-to-date information tools, bridging an essential information gap between management and development, improve awareness, and serve as early risk detection instrument.
A software map resembles somewhat the city map of New York. The individual modules and classes are displayed as rectangular buildings.
The height, surface area, and color of the building also give conclusions on the nature of the source code.
- The height of the building specifies the complexity of the code unit and whether the condition of the code has been improved or not.
- The ground area of the building shows how many lines of code in the module or class have been implemented.
- And finally, the color indicates whether the developers are currently in the code unit. Therefore, if there is an acute risk, because the developer are only slowly working through the difficult to understand code.
In this way, it is visible at a glance where the critical points in the source code are. In other words, it becomes obvious at a glance what to change in order to:
- implement changes quickly.
- evaluate quickly the impact of changes in one place on functionality elsewhere.
- reduce entanglements that lead to uncontrolled processes in the application.
- find errors faster.
- discover and eliminate bad programming style.
Software Maps can be used, in particular, as a presentation form for business intelligence systems, which are specialized in the analysis of software related data.
- ^ Monitoring Code Quality and Development Activity by Software Maps Johannes Bohnet and Döllner, Jürgen Proceedings of the IEEE ACM ICSE Workshop on Managing Technical Debt, pp. 9-16, 2011.
External links
- Interactive Rendering of Complex 3D-Treemaps
- Multiscale Visual Comparison of Execution Traces
- Interactive Software Maps for Web-Based Source Code Analysis
- Extending Recommendation Systems with Software Maps
- A Visual Analysis Approach to Support Perfective Software Maintenance
- ViewFusion: Correlating Structure and Activity Views for Execution Traces
- A Visual Analysis and Design Tool for Planning Software Reengineerings
- Interactive Areal Annotations for 3D Treemaps of Large-Scale Software Systems
- Visualization of Execution Traces and its Application to Software Maintenance
- Understanding Complex Multithreaded Software Systems by Using Trace Visualization
- Visualization of Multithreaded Behavior to Facilitate Maintenance of Complex Software Systems
- Visualizing Massively Pruned Execution Traces to Facilitate Trace Exploration
- Projecting Code Changes onto Execution Traces to Support Localization of Recently Introduced Bugs
- SyncTrace: Visual Thread-Interplay Analysis