Jump to content

Software map

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Juergen.doellner (talk | contribs) at 14:57, 8 April 2014. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

A software map visually represents static, dynamic, and evolutionary information of software system implementations and development processes by means of 2D or 3D map-oriented visualization. It is a fundamental concept and tool in software visualization. Its primary applications include risk analysis, monitoring code quality , team activity, or software development progress [1] and, generally, providing transparency for related artifacts, processes, and stakeholders throughout the software engineering process.

Motivation and Concepts

Software maps are applied in the context of software engineering. Here, complex, long-term software development projects are commonly faced by manifold difficulties such as the friction between completing system features and, at the same time, obtaining a high degree of code quality to ensure software maintenance of the system in the future. The key idea of software maps is to cope with that challenge and optimization problems by providing effective communication means to close the underlying communication gap among the stakeholders and information domains within software development projects.

Software maps take advantage of well-defined cartographic map techniques using the virtual 3D city metaphor[2] to express the underlying complex, abstract information space. The metaphor is required "since software has no physical shape, there is no natural mapping of software to a two-dimensional space" [3].

Applications

Software maps generally allow costs and risks in software development projects to be presented to management and developer teams in a user-friendly manner. They communicate the status of applications and systems currently being developed or further developed to project leaders and management at a glance. "A key aspect for this decision making is that software maps provide the structural context required for correct interpretation of these performance indicators" [4]. 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.

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.


Contents of Software Maps

Software maps are based on objective information as determined by the KPI driven code analysis as well as by imported information from software repository systems, information from the source codes, or software development tools. In particular, software maps are not bound to a specific programming language, modeling language, or development process model.

Software maps use the hierarchy of the software implementation artifacts such as source code files as base to build a tree mapping, i.e., a rectangular area that represents the whole hierarchy, subdividing the area into rectangular sub-areas. A software map, informally speaking, looks similar to a virtual 3D city model, whereby artifacts of the software system appear as virtual, rectangular 3D buildings or towers, which are placed according to their position in the software implementation hierarchy.

Software maps can express and combine information about software development, software quality, and system dynamics by mapping that information onto visual variables of the tree map such as footprint size, height, color or texture. They can systematically be specified, automatically generated, and organized by templates.

Example of Mapping Software System Information

Software maps "combine thematic information about software development processes (evolution), software quality, structure, and dynamics and display that information in a cartographic manner" [5]. For example:

  • The height of a virtual building can specify the complexity of the code unit and whether the condition of the code has been improved or not.
  • The ground area of the virtual 3D building can show how many lines of code in the module or class have been implemented.
  • The color can indicate 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 as Business Intelligence Tools and Recommendation Systems

Software Maps can be used, in particular, as analysis and presentation tool of business intelligence systems, specialized in the analysis of software related data. Furthermore, software maps "serve as recommendation systems for software engineering" [6].


History

Software maps methods and techniques belong the scientific displine of Software visualization. Software maps can be based on tree mapping, "a space-filling approach to the visualization of hierarchical information structures"[7] or other hierarchy mapping approaches. Software maps have been extensively developed at the Hasso Plattner Institute for IT systems engineering.


References

  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.
  2. ^ Visualizing Software Systems as Cities. Richard Wettel , Michele Lanza. In: 4th IEEE international Workshop on Visualizing Software for Understanding and Analysis, 2007.
  3. ^ Consistent Layout for Thematic Software Maps. Adrian Kuhn , Peter Loretan , Oscar Nierstrasz, 2008.
  4. ^ Interactive Software Maps for Web-Based Source Code Analysis. Limberger, Daniel et al. In: Proceedings of the International Web3D Conference, ACM, pp. 8, 2013.
  5. ^ Extending Recommendation Systems with Software Maps. Jonas Trümper and Jürgen Döllner. In: Proceedings of the 3rd International ICSE Workshop on Recommendation Systems for Software Engineering (RSSE), IEEE Computer Society, pp. 92-96, 2012.
  6. ^ Extending Recommendation Systems with Software Maps. Jonas Trümper and Jürgen Döllner. In: Proceedings of the 3rd International ICSE Workshop on Recommendation Systems for Software Engineering (RSSE), IEEE Computer Society, pp. 92-96, 2012.
  7. ^ Tree-maps: a space-filling approach to the visualization of hierarchical information structures. B. Johnson and B. Sneiderman. In Proc. of IEEE VIS, 284–291, 1991