Software Visualisation Conundrums (original) (raw)
Related papers
A gentle overview of software visualisation
2006
Software design is a realm of messy or “wicked” problems that are often too big, too ill-defined, and too complex for easy comprehension and solution (DeGrace and Stahl, 1998). Software itself is created, complex, abstract, and difficult to observe. Software is different from created physical artefacts, because it lacks their tangibility and visibility (eg, What does a compiler look like? What is the size, weight and shape of an operating system?). Code may be manifest, but how code works must be discovered and understood.
Innovations in Systems and Software Engineering, 2005
The field of software visualization (SV) investigates approaches and techniques for static and dynamic graphical representations of algorithms, programs (code), and processed data. SV is concerned primarily with the analysis of programs and their development. The goal is to improve our understanding of inherently invisible and intangible software, particularly when dealing with large information spaces that characterize domains like software maintenance, reverse engineering, and collaborative development. The main challenge is to find effective mappings from different software aspects to graphical representations using visual metaphors. This paper provides an overview of the SV research, describes current research directions, and includes an extensive list of recommended readings.
Visualization in Systems Software Engineering
The perception capabilities of the human visual system are effectively essential in systems software engineering. For successful career in computer graphics software engineers need to develop a visual sense in the performance of the systems and programs they develop. There is very little theory explaining software engineering. In most cases detailed qualitative analysis happens to be difficult and time consuming, especially for strenuous tasks as software development. The qualitative analysis could be automated but is in most cases difficult to interpret. A visual presentation of a systems software reveals to its developer some of the most sensitive hidden parts and processes that are pivotal to its effective performance.
Past, Present, and Future of and in Software Visualization
Communications in Computer and Information Science
In a selective retrospective of the history of software visualization we discuss examples of applying visualization techniques to analyze the past and present state of software. Based on this retrospective, we make various suggestions for future research. In particular, we argue that the prediction of future aspects of a software system is an important task, but that software visualization research has only scratched the surface of it and that speculative visualization will be one of the major future challenges.
A taxonomy of software visualization
System Sciences, 1992. …, 1992
Software visualization is the use of interactive computer graphics, typography, graphic design, animation, and cinematography to enhance the interface between the software engineer or the computer science student and their programs. Although several taxonomies of software visualization have been proposed, they use few dimensions and do not span the space of important distinctions between systems. We attempt to fill this gap in the literature by proposing a novel and systematic taxonomy of six areas making up thirty characteristic features of software visualization technology. The taxonomy is presented and illustrated in terms of its application to seven systems of historic importance and technical interest.
Aspects and Taxonomy of Program Visualisation
Software Visualisation, 1996
Program visualisation focuses on the graphical representation of an executing program and its data. The information is presented in a form designed to enhance both the understanding and productivity of the programmer through the e cient use of the human visual system. The programmer is able to observe patterns of behaviour within the executing code and rapidly detect a departure from the expected behaviour pattern. However, depending on the programming paradigms and architectural platforms utilized, the variety and manner in which information is best presented varies. This chapter attempts to discuss the general aspects of program visualisation, including the variety of purposes, the general steps needed to provide such visualisation, and the ideals that a program visualisation tool can achieve. The requirements for visualization systems also vary across architectural platforms, and software systems, which include programming paradigms and the system environment. Some representative visualisation systems are also presented and examined, providing an overall view of the practice and the achievements made to date in program visualisation.
A systematic literature review of modern software visualization
Journal of Visualization, 2020
We report on the state-of-the-art of software visualization. To ensure reproducibility, we adopted the Systematic Literature Review methodology. That is, we analyzed 1440 entries from IEEE Xplore and ACM Digital Library databases. We selected 105 relevant full papers published in 2013-2019, which we classified based on the aspect of the software system that is supported (i.e., structure, behavior, and evolution). For each paper, we extracted main dimensions that characterize software visualizations, such as software engineering tasks, roles of users, information visualization techniques, and media used to display visualizations. We provide researchers in the field an overview of the state-of-the-art in software visualization and highlight research opportunities. We also help developers to identify suitable visualizations for their particular context by matching software visualizations to development concerns and concrete details to obtain available visualization tools.
Magnify - A new tool for software visualization
Modern software systems are inherently complex. Their maintenance is hardly possible without precise up-to-date documentation. It is often tricky to document dependencies among software components by only looking at the raw source code. We address these issues by researching new software analysis and visualization tools. In this paper we focus on software visualisation. Magnify is our new tool that performs static analysis and visualization of software. It parses the source code, identifies dependencies between code units and records all the collected information in a repository based on a language-independent graph-based data model. Nodes of the graph correspond to program entities of disparate granularity: methods, classes, packages etc. Edges represent dependencies and hierarchical structure. We use colours to reflect the quality, sizes to display the importance of artefacts, density of connections to portray the coupling. This kind of visualization gives bird's-eye view of t...
Information Visualization in Software Maintenance and Evolution
2019
Software visualization is concerned with the static visualization as well as the animation of software artifacts, such as source code, executable programs, and the data they manipulate, and their attributes, such as size, complexity, or dependencies. Software visualization techniques are widely used in the areas of software maintenance and evolution, where typically large amounts of complex data need to be understood and a high degree of interaction between software engineers and automatic analyses is required. The present work provides a survey of 23 software visualization systems in the field of software maintenance and evolution and infers a categorization based on 5 main classes including task, data, data processing, representation and availability. The results of this survey help to ascertain the current role of software visualization in software engineering from the perspective of researchers in these domains and give hints on future research avenues.
Software visualization as a pedagogical tool
Instructional Science, 1993
The teaching of computer programming can benefit from looking ahead towards the needs of experienced programmers, who routinely use 'industrial strength' programming environments. Two of the main attributes of such environments are (a) their ability to scale up to handle large examples and (b) the way they facilitate visualization of program execution. We describe our approach to software visualization, a collection of techniques which allows beginners to see the innards of program execution clearly and at the same time allows experts to view high level program abstraetious which help them home in quickly on buggy code. This approach can be combined with recent developments in Intelligent Tntoring Systems (ITSs) and has tile added benefit of allowing students to explore on their own using a discovery-based paradigm. We re-work some well known examples from the ITS community and show how our approach scales up to lmndle a more sophisticated problem involving a 7,500 fine operating sy.qtem.