Analyzing Feature Implementation by Visual Exploration of Architecturally

Analyzing Feature Implementation by Visual Exploration of Architecturally

Analyzing Feature Implementation by Visual Exploration of Architecturally-Embedded Call-Graphs Johannes Bohnet Jürgen Döllner University of Potsdam University of Potsdam Hasso-Plattner-Institute Hasso-Plattner-Institute Prof.-Dr.-Helmert-Str. 2-3 Prof.-Dr.-Helmert-Str. 2-3 14482 Potsdam, Germany 14482 Potsdam, Germany [email protected] [email protected] ABSTRACT 1. INTRODUCTION Maintenance, reengineering, and refactoring of large and complex As stated in [32] “year after year the lion's share of effort goes software systems are commonly based on modifications and into modifying and extending preexisting systems, about which enhancements related to features. Before developers can modify we know very little”. Requests for software changes are often feature functionality they have to locate the relevant code expressed by end users in terms of features, i.e. an observable components and understand the components’ interaction. In this behavior that is triggered by user interaction. Requesting feature paper, we present a prototype tool for analyzing feature changes concerns bug fixes or enhancements of feature functiona- implementation of large C/C++ software systems by visual lity and is a key concept for maintaining, reengineering, and exploration of dynamically extracted call relations between code refactoring large and complex software systems. To implement components. The component interaction can be analyzed on these new requirements, software developers have to translate the various abstraction levels ranging from function interaction up to feature change requests to changes in code components and their interaction of the system with shared libraries of the operating interaction behavior. The term component is used here in a more system. The user visually explores the component interaction general way than that defined by the Unified Modeling Language within a multiview visualization system consisting of various (UML) [31] which describes it as an autonomous, modular unit textual and a graphical 3D landscape view. During exploration the within a system or subsystem that has well-defined interfaces and 3D landscape view supports the user firstly in deciding early is replaceable within its environment. Here the term refers to a whether a call relation is essential for understanding the feature structural unit of source code of any level of abstraction and and, secondly, in finding starting points for fine-grained feature includes functions, classes, subsystems, and systems. analysis using a top-down approach. Before converting feature change requests to code changes, first Categories and Subject Descriptors developers have to identify the components that implement the D.2.5 [Software Engineering]: Testing and Debugging – feature functionality. Subsequently, they need to understand how Tracing, D.2.7 [Software Engineering]: Distribution, these components interact. After that, they can finally modify the Maintenance, and Enhancement – Restructuring, reverse code and implement new functionality. Analyzing feature engineering, and reengineering, H.5.2 [Information Interfaces implementation is particularly difficult where legacy systems are and Presentation]: User Interfaces – Graphical user interfaces concerned, as the existing documentation often differs (GUI), I.5.3 [Pattern Recognition]: Clustering – Algorithms substantially from the as-is system design due to the long evolution period [7]. Hence, in many cases the only reliable General Terms documentation on a legacy system is the source code itself which Design, Experimentation, Human Factors, Measurement, may consist of more than 1.000.000 lines of code (LOC). Verification Program slicing [34] is a common approach for reducing the search space the user has to inspect in order to be able to Keywords understand a specific functionality. Static slicing reduces a soft- Dynamic Analysis, Dynamic Slicing, Feature Analysis, Program ware system implementation to all statements that may directly or Comprehension, Reverse Engineering, Software Visualization indirectly influence a set of variables at a specific code position (backward slice) or to all statements that may be influenced by a specific code statement (forward slice) [10]. Dynamic slicing Permission to make digital or hard copies of all or part of this work for further narrows the search space by only taking into account the personal or classroom use is granted without fee provided that copies are statements that actually do affect a specific program state based not made or distributed for profit or commercial advantage and that on a given input [1]. Profiling techniques can extract dynamic call copies bear this notice and the full citation on the first page. To copy relationship among functions. These light-weight slices do not otherwise, or republish, to post on servers or to redistribute to lists, cover variable accesses as static slicing techniques typically do requires prior specific permission and/or a fee. [7]. However, dynamic call-graph extraction techniques can WODA’06, May 23, 2006, Shanghai, China. reveal some call relations that are difficult to identify by static Copyright 2006 ACM 1-59593-085-X/06/0005…$5.00. 41 analysis as they are defined at runtime [4]. Event driven systems, structure is given. Eisenbarth et al. [7] first compare dynamic for instance, often used for graphical user interfaces (GUI) or execution traces, which depend on a set of features, by applying network communications, are based on dynamic callback concept analysis to find out to which feature a computational unit mechanisms. Furthermore, object-oriented programming contributes. Later the user identifies additional feature specific paradigms such as polymorphism and dynamic binding make the units by exploring the statically extracted dependency graph. Our understanding of static call sequences more difficult. approach, which suggests the embedding of functions into the system architecture, is orthogonal to the described techniques Along with the technique of extracting analysis data, an important above and can, accordingly, be combined with them. Furthermore, usability aspect for an analysis tool is how to communicate the our user-supporting visualization technique may be used as results to the user. Established visualization techniques for call- visualization front-end. graph exploration are simple 2D graph drawings or just the user guidance through the textual representation of the source code. A variety of visualization techniques are used to facilitate reverse Some approaches abstract from the function level and visualize engineering tasks. Some are based on the SeeSoft technique [5] of the interaction of selected classes, e.g. by creating UML sequence displaying LOC metrics as color encoded miniaturized source diagrams [9, 18, 29]. A prerequisite for this technique is that the code lines, e.g. Tarantula [14], Gammatella [25], Bee/Hive [28]. user has a basic understanding of the feature implementation and sv3D [19] extends the technique to 3 dimensions. Other knows the classes of interest. Additionally, UML sequence techniques, such as ours, are based on graph visualization. The diagrams are limited to a small number of interacting classes. Rigi [21] reverse engineering environment displays the hierarchical software architecture as a 2D layout of nested boxes In this paper we present a prototype tool for analyzing feature with connecting straight lines. SHriMP [20] enhances Rigi views implementation by abstracting a dynamically extracted function by means of elaborate navigation and exploration techniques and call graph to call-graphs of higher-level components of the is used for visualizing statically analyzed Java programs. hierarchical software architecture, i.e. class, subsystem, and CodeCrawler [6] calculates various software metrics and encodes system components. The user explores this architecturally- them in box shapes of simple graphs. Several graph visualizing embedded call-graph within an interactive multiview visualization techniques use virtual reality techniques: NV3D [27] displays system. Prerequisites for the analysis of a software system are nested cubes connected by tubes and can be used to visualize firstly, the availability of the source code written in C/C++ and, execution traces with animated arrows moving along the tubes. secondly, an executable file that is compiled with debug CrocoCosmos [16] creates a universe-like visualization of information and can be executed under a GNU/Linux operating software components by a force-directed layout technique based system (OS). The tool has been tested with software systems on static software metrics. Similarly, JST [12] creates a software consisting of over a million LOC. component universe by parsing Java source code and applying The tool guides the user during the call-graph exploration task. metrics. In the case of both approaches, the user explores the data The user can analyze the call relations on different levels of by applying standard navigation techniques of a VRML browser. abstractions, i.e. function interaction, class interaction, subsystem As our approach proposes, some visualization techniques use the interaction, and interaction of the system with shared libraries of landscape metaphor for presenting software systems structure and the OS. Provided with the opportunity of switching between behavior. Zhou et al. [37] visualizes message flows in massively abstraction levels, the user receives (a) support with finding parallel supercomputers.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    7 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us