3.5 Advantages and Disadvantages of These Methods
3.5.2 External Validity
The presented Micro-Productivity Profile related experiment is conducted on a single project; thus, it is appropriate for introducing the advantages and usefulness of the pro-
posed method, and not for modeling productivity or drawing general conclusions on pro- ductivity factors for other systems. Likewise, the measurement strongly relied on the fact that the investigated application was developed in Java programming language with Eclipse IDE.
The success of the productivity measurement depends on the active and proper use of our tools by the developers. The amount of extra effort due to measurements is critical. Although the task information is only a small plus, we experienced that some programmers did not use the plug-in properly, which caused a significant data loss in the third devel- opment phase. Based on the analysis of the experiences of the team after the project, the reason for improper use of the tool was not the high amount of extra effort, but insufficient motivation by the management and also some technical issues.
Based on the analysis of factors affecting productivity, we conclude that the compar- ison of students and professional developers’ non-functional source code metrics suggests some exciting ideas. However, we are aware that this is just a stepping stone for further research.
Chapter 4
Providing Immersive Methods for
Software and (Unit) Test
Visualization
The main topic of this chapter is the visualization of software systems and their connected items. The structure of the related thesis point and its connections to various stakeholders and topics are shown in fig. 4.1.
Figure 4.1: Structure of thesis points
The rapid developments in computer technology have made it possible to handle a large amount of data. New algorithms have been invented to process data, and new ways have emerged to store their results. However, the final recipients of these are still the users themselves, so we have to present the information in such a way that human beings can easily understand it. One of the many possibilities is to express that data in a graphical form. This conversion is called visualization.
The importance of visualization techniques is undeniable. Diagrams, charts, and other 45
graphical elements are often used to present quantitative and qualitative properties and their relations. These tools use simple and abstract graphical primitives that could not be found in the real world like straight lines, points, and circles. They can express some attributes of the software successfully, but are less useful in presenting more complex many-dimensional contexts. To address this issue, in this chapter, we introduce our novel software visualization tool and its related research. It utilizes an enhanced version of the city metaphor, which provides higher expressive power by allowing the user to display several abstract concepts simultaneously.
Data visualization with high expressive power plays an important role in several soft- ware development-related activities. Recent visualization tools try to fulfill the expecta- tions of the users by using various analogies. For example, in a city metaphor, each class is represented by a building. Buildings are grouped into districts according to the structure of the namespaces. We think that these unique ways of code representation have great potential. However, in our opinion, they use very simple graphical techniques (shapes, figures, low resolution) to visualize the structure of the source code.
On the other hand, computer games use high-quality graphics and have a good expres- sive power. A good example is Minecraft, a popular sand-box or role-playing game with high extensibility and interactivity from another (third party) software. It supports both the high definition, photo-realistic textures, and long-range 3D scene displaying.
Furthermore, software systems could reach virtually infinite complexity by their nature. In theory, there is no limit of control flow embedding, or the number of methods, attributes, and other source code elements. In practice, these are only bound to computational power, time, and storage capacities. To comprehend these systems, developers have to construct a detailed mental image. These images are gradually built during the implementation of the system. Often, these mental images are realized as physical graphics with the aid of data visualization software. For example, different kinds of charts are used to emphasize the difference among various measurable quantities of the source code or UML diagrams, which can visualize complex relations and connections among various entities in the system. However, there are certain situations when developers do not have sufficient time to construct this mental landscape, for example, when they are not present during the early stages of the software’s life cycle. The issues and solutions discussed in this chapter are related to challenge 1.
4.1
Enhancing the City Metaphor with Game-based Visu-
alization
To address these issues while taking into account the considerations as mentioned earlier, we enhanced the already known city metaphor, by connecting data visualization with high end-user graphics capabilities. To achieve this, a visualization tool was implemented. It processes structured data related to the source code (for example, product metrics) as
4.1 Enhancing the City Metaphor with Game-based Visualization 47
input and generates a Minecraft [2] world with buildings, districts, and gardens to provide a detailed representation of the mental landscape populated with abstract concepts and their underlying connections. The tool is called CodeMetropolis. We used it to investigate the possibilities of this kind of data visualization. Works, detailed in this section and summarized in sub-thesis point 2.1, provide a solid base for further investigation.
CodeMetropolis is a set of the command line and GUI tools written in Java. It can generate a playable Minecraft world, which represents the properties of the original data set. The current version supports SourceMeter [61] or SonarQube server [76] directly as a data source, but end-users are encouraged to integrate other output types. The generated world uses the city metaphor, which means that the source code metrics are represented with the various properties of the different kinds of buildings. For example, Figure 4.2 shows an example world, which represents a small Java program.
Figure 4.2: JUnit project visualized by CodeMetropolis
We used two main levels to represent data and entities of our visualization process. On the data level, each item has its own property set – for example, metrics. These data are displayed on the metaphor level. All buildings in the metropolis belong to this level. The buildings and the world (city) itself has a couple of attributes which control its visual appearance. The properties are mapped to the attributes in order to visualize the data with a sophisticated mapping language.
As a visualization tool, CodeMetropolis executes the common steps of constructing such a graphical representation.