TL;DR: This paper describes an approach for automated software analysis and monitoring of both quality-related code metrics and development activities by means of software maps, an adaptive, hierarchical representation of software implementation artifacts such as source code files being organized in a modular hierarchy.
Abstract: 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 the management. In this paper, we describe an approach for automated software analysis and monitoring of both quality-related code metrics and development activities by means of software maps. 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. The maps aim at supporting decision-making processes. For example, they facilitate to decide 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. The software map concept and its tool implementation are evaluated by means of two case studies on large industrially developed software systems.
TL;DR: In this paper, the authors apply Lotka's Law to metadata on open source software development and find that it predicts the proportion of authors at different levels of productivity, which can be used to understand software development productivity patterns and offer promise in predicting aggregate behavior of open source developers.
Abstract: This research applies Lotka's Law to metadata on open source software development. Lotka's Law predicts the proportion of authors at different levels of productivity. Open source software development harnesses the creativity of thousands of programmers worldwide, is important to the progress of the Internet and many other computing environments, and yet has not been widely researched. We examine metadata from the Linux Software Map (LSM), which documents many open source projects, and Sourceforge, one of the largest resources for open source developers. Authoring patterns found are comparable to prior studies of Lotka's Law for scientific and scholarly publishing. Lotka's Law was found to be effective in understanding software development productivity patterns, and offer promise in predicting aggregate behavior of open source developers.
TL;DR: In this paper, a software program can be represented as a map depicting respective software components of the software program, and a technique for building the map can rely on a metric of a software component when generating a corresponding map element in the software map.
Abstract: A software program can be represented as a map depicting respective software components of the software program. A grid system can be used, and map elements can be contiguous geometric shapes. Affinity between the software components can be represented in the map, such as by placing corresponding map elements close to one other in the map. During navigation through source code, an indication of where within the source code the navigation has occurred can be displayed on the map. Paths can be shown on the map. A technique for building the map can rely on a metric of a software component when generating a corresponding map element in the software map. The map can be depicted as a geographic map to help developers locate components.
TL;DR: This paper systematically introduces and classifies software maps as a treemap-based technique for software cartography and provides an overview of advanced visual metaphors and techniques, each suitable for interactive visual analytics tasks, that can be used to enhance the expressiveness of software maps.
Abstract: Software maps provide a general-purpose interactive user interface and information display for software analytics tools. This paper systematically introduces and classifies software maps as a treemap-based technique for software cartography. It provides an overview of advanced visual metaphors and techniques, each suitable for interactive visual analytics tasks, that can be used to enhance the expressiveness of software maps. Thereto, the metaphors and techniques are briefly described, located within a visualization pipeline model, and considered within the software map design space. Consequent applications and use cases w.r.t. different types of software system data and software engineering data are discussed, arguing for a versatile use of software maps in visual software analytics.
TL;DR: Memory cities is presented, a technique to visualize an application’s heap memory evolution over time using the software city metaphor, and how it can be used to detect and analyze memory leaks, i.e., to search for suspicious growth behavior.
Abstract: Tool support is essential to help developers in understanding the memory behavior of complex software systems. Anomalies such as memory leaks can dramatically impact application performance and can even lead to crashes. Unfortunately, most memory analysis tools lack advanced visualizations (especially of the memory evolution over time) that could facilitate developers in analyzing suspicious memory behavior.In this paper, we present Memory Cities, a technique to visualize an application’s heap memory evolution over time using the software city metaphor. While this metaphor is typically used to visualize static artifacts of a software system such as class hierarchies, we use it to visualize the dynamic memory behavior of an application. In our approach, heap objects can be grouped by multiple properties such as their types or their allocation sites. The resulting object groups are visualized as buildings arranged in districts, where the size of a building corresponds to the number of heap objects or bytes it represents. Continuously updating the city over time creates the immersive feeling of an evolving city. This can be used to detect and analyze memory leaks, i.e., to search for suspicious growth behavior. Memory cities further utilize various visual attributes to ease this task. For example, they highlight strongly growing buildings using color, while making less suspicious buildings semi-transparent.We implemented memory cities as a standalone application developed in Unity, with a JSON-based interface to ensure easy data import from external tools. We show how memory cites can use data provided by AntTracks, a trace-based memory monitoring tool, and present case studies on different applications to demonstrate the tool’s applicability and feasibility.