HOME

TheInfoList



OR:

A software map represents static, dynamic, and evolutionary information of
software system A software system is a system of intercommunicating components based on software forming part of a computer system (a combination of hardware and software). It "consists of a number of separate programs, configuration files, which are used to se ...
s and their
software development process In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design, product management. It is also known as a software devel ...
es by means of 2D or 3D map-oriented information visualization. It constitutes a fundamental concept and tool in
software visualization Software visualization or software visualisation refers to the visualization of information of and related to software systems—either the architecture of its source code or metrics of their runtime behavior—and their development process by mea ...
, software analytics, and software diagnosis. Its primary applications include risk analysis for and monitoring of code quality, team activity, or software development progress and, generally, improving effectiveness of software engineering with respect to all related artifacts, processes, and stakeholders throughout the
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
process and
software maintenance Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes. A common perception of maintenance is that it merely involves fixing defects. H ...
.


Motivation and concepts

Software maps are applied in the context of
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
: Complex, long-term
software development Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development invol ...
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 and
software quality In the context of software engineering, software quality refers to two related but distinct notions: * Software functional quality reflects how well it complies with or conforms to a given design, based on functional requirements or specification ...
to ensure
software maintenance Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes. A common perception of maintenance is that it merely involves fixing defects. H ...
of the system in the future. In particular, "Maintaining complex software systems tends to be costly because developers spend a significant part of their time with trying to understand the system’s structure and behavior." The key idea of software maps is to cope with that challenge and optimization problems by providing effective communication means to close the communication gap among the various stakeholders and information domains within software development projects and obtaining insights in the sense of information visualization. Software maps take advantage of well-defined cartographic map techniques using the virtual
3D city model A 3D city model is digital model of urban areas that represent terrain surfaces, sites, buildings, vegetation, infrastructure and landscape elements in three-dimensional scale as well as related objects (e.g., city furniture) belonging to urban a ...
metaphor 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". Software maps are non-spatial maps that have to convert the hierarchy data and its attributes into a spatial representation.


Applications

Software maps generally allow for comprehensible and effective communication of course, risks, and costs of software development projects to various stakeholders such as management and development teams. 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". As an instrument of communication, software maps act as open, transparent information spaces which enable 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 In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design, product management. It is also known as a software devel ...
. For example, they facilitate decisions as to where in the code an increase in 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 (e.g., information density) and their instantaneous, automated generation, the maps additionally serve to reflect the current status of system and development processes, bridging an essential information gap between management and development teams, improve awareness about the status, and serve as early risk detection instrument.


Contents

Software maps are based on objective information as determined by the
KPI driven code analysis {{unreferenced, date=January 2014 KPI driven code analysis (KPI = Key Performance Indicator) is a method of analyzing software source code and source code related IT systems to gain insight into business critical aspects of the development of a so ...
as well as by imported information from software repository systems, information from the
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
s, or
software development tool A programming tool or software development tool is a computer program that software developers use to create, debug, maintain, or otherwise support other programs and applications. The term usually refers to relatively simple programs, that can ...
s and programming tools. In particular, software maps are not bound to a specific
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
,
modeling language A modeling language is any artificial language that can be used to express information or knowledge or systems in a structure that is defined by a consistent set of rules. The rules are used for interpretation of the meaning of components in the st ...
, or
software development process In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design, product management. It is also known as a software devel ...
model. Software maps use the hierarchy of the software implementation artifacts such as
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
files as a 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 A 3D city model is digital model of urban areas that represent terrain surfaces, sites, buildings, vegetation, infrastructure and landscape elements in three-dimensional scale as well as related objects (e.g., city furniture) belonging to urban a ...
, 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 elements such as footprint size, height, color or texture. They can systematically be specified, automatically generated, and organized by templates.


Mapping software system example

Software maps "combine thematic information about software development processes (evolution), software quality, structure, and dynamics and display that information in a cartographic manner". For example: * The height of a virtual building can be proportional to the complexity of the code unit (e.g., single or combined
software metric In software engineering and development, a software metric is a standard of measure of a degree to which a software system or process possesses some property. Even if a metric is not a measurement (metrics are functions, while measurements are t ...
s). * The ground area of a virtual 3D building can be proportional to the number of lines of code in the module or (e.g., non-comment lines-of-code NCLOC). * The color can express the current development status, i.e., how many developers are changing/editing the code unit. With this exemplary configuration, the software map shows crucial points in the source code with relations to aspects of the software development process. For example, 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 represent key tools in the scope of automated software diagnosi
software diagnostics


As business intelligence tools and recommendation systems

Software maps can be used, in particular, as analysis and presentation tool of
business intelligence Business intelligence (BI) comprises the strategies and technologies used by enterprises for the data analysis and management of business information. Common functions of business intelligence technologies include reporting, online analytical pr ...
systems, specialized in the analysis of software related data. Furthermore, software maps "serve as recommendation systems for software engineering". Software maps are not limited by software-related information: They can include any hierarchical system information as well, for example, maintenance information about complex technical artifacts.


Visualization techniques

Software maps are investigated in the domain of
software visualization Software visualization or software visualisation refers to the visualization of information of and related to software systems—either the architecture of its source code or metrics of their runtime behavior—and their development process by mea ...
. The visualization of software maps is commonly based on tree mapping, "a space-filling approach to the visualization of hierarchical information structures" or other hierarchy mapping approaches.


Layout algorithms

To construct software maps, different layout approaches are used to generate the basic spatial mapping of components, such as: * Tree-map algorithms that initially map the software hierarchy into a recursively nested rectangular area. * Voronoi-map algorithms that initially map the software hierarchy by generating a Voronoi map.


Layout stability

The spatial arrangement computed by layouts such as defined by tree maps strictly depends on the hierarchy. If software maps have to be generated frequently for an evolving or changing system, the usability of software maps is affected by non-stable layouts, that is, minor changes to the hierarchy may cause significant changes to the layout. In contrast to regular Voronoi treemap algorithms, which do not provide deterministic layouts, the layout algorithm for Voronoi treemaps can be extended to provides a high degree of layout similarity for varying hierarchies. Similar approaches exist for the tree-map based case.


History

Software maps methods and techniques belong to the scientific displine of
Software visualization Software visualization or software visualisation refers to the visualization of information of and related to software systems—either the architecture of its source code or metrics of their runtime behavior—and their development process by mea ...
and information visualization. They form a key concept and technique within the fields of software diagnosis. They also have applications in
software mining Software mining is an application of knowledge discovery in the area of software modernization which involves understanding existing software artifacts. This process is related to a concept of reverse engineering. Usually the knowledge obtained fr ...
and software analytics. Software maps have been extensively developed and researched by, e.g., at the
Hasso Plattner Institute The Hasso Plattner Institute (Hasso-Plattner-Institut für Digital Engineering gGmbH), abbreviated HPI, is a German information technology Information technology (IT) is the use of computers to create, process, store, retrieve, an ...
for IT systems engineering, in particular for large-scale, complex IT systems and applications.


References

{{reflist


External links

* Scientific conference VISSOFT (IEEE Working Conference on Software Visualization


Interactive Rendering of Complex 3D-Treemaps








* ttp://www.hpi.uni-potsdam.de/doellner/publications/year/2012/2126/TTD2012.html ViewFusion: Correlating Structure and Activity Views for Execution Traces
A Visual Analysis and Design Tool for Planning Software Reengineerings


* ttp://www.hpi.uni-potsdam.de/doellner/publications/year/2011/2048/BOH11.html Visualization of Execution Traces and its Application to Software Maintenance
Understanding Complex Multithreaded Software Systems by Using Trace Visualization


* ttp://www.hpi.uni-potsdam.de/doellner/publications/year/2009/812/BKD09.html Visualizing Massively Pruned Execution Traces to Facilitate Trace Exploration
Projecting Code Changes onto Execution Traces to Support Localization of Recently Introduced Bugs


Software maintenance Software metrics Software development process Software development Software quality Quality Infographics Visualization (graphics)