JGRASP
Encyclopedia
jGRASP is a lightweight development environment
created specifically to provide automatic generation of software visualizations
to improve the comprehensibility of software
. It produces static visualizations of source code structure and visualizations of data structures at runtime.
jGRASP is implemented in Java
, and runs on all platforms with a Java Virtual Machine
(Java version 1.5 or higher). The jGRASP web site offers downloads for Windows
, Mac OS
, and as a generic ZIP
file suitable for Linux
and other systems.
For languages other than Java, jGRASP is a useful source code editor
. It can be configured to work with most free and commercial compilers for any programming language.
(CSD) is a control flow diagram that fits into the space normally taken by indentation in source code. Its purpose is to improve the readability of source code. jGRASP produces CSDs for Java, C
, C++
, Objective-C
, Ada
, and VHDL. CSDs in jGRASP are integrated into the source code editing windows, and can be regenerated on demand. They are generated at a speed that makes the process effectively instantaneous (50,000 loc per second or faster on modern hardware). The editing window provides CSD-based folding
and a "context hint" feature that displays the first line of a code structure that is off-screen when the mouse is hovered over its CSD structure.
The Java object viewers in jGRASP provide interface-based, structural, and other views of data structures and other objects and primitives during debugging and workbench operations. Often these views are more useful than the traditional tree view showing the fields of each object. For example, an interface-based view shows ArrayList and LinkedList in an identical way, as a list of elements. Structural views show the internal structure of trees
, linked lists, hash tables, etc. Structural views of linked data structures display local variable nodes and their relation to the main structure. The result is animated when changes occur, as when a node is added to a linked list. In data structure viewers, one element or sub-element, such as an element of a linked list or a key or value in a hash table, may be selected and will be displayed in a "sub viewer", or they can be dragged out as separate viewers. Common data structures are automatically identified and displayed structurally. Other viewers show, for example, a color swatch for a Color, the image for an icon, and the binary details of a double.
The Complexity Profile Graph (CPG) is a unique statement-level complexity diagram. Its purpose is to aid in identifying overly complex areas of source code. jGRASP generates CPGs for both Java and Ada. The metric includes common measures, such as reachability
and content complexity, which can be displayed individually. The CPG is integrated with the editing window in jGRASP so that highlighting a section of CPG will highlight the corresponding section of source code, and vice versa. They also scroll together, and the current visible portion of the editing window is shown in the CPG window.
jGRASP also generates UML
diagrams for Java. The UML diagrams are augmented with much interactive functionality. Clicking on a dependency edge, for example, will display all of the dependencies between two classes in a separate pane. From that pane, the source code locations of the references that cause each dependency can be listed and visited.
. It is maintained and evaluated by the jGRASP Team. The development of jGRASP has been supported by a research grant from the National Science Foundation
.
The development of previous versions of GRASP was supported by research grants from NASA
Marshall Space Flight Center
, the Department of Defense Advanced Research Projects Agency (DARPA
), and the Defense Information Systems Agency (DISA
).
Development environment
In hosted software development, a development environment refers to a server tier designated to a specific stage in a release process....
created specifically to provide automatic generation of software visualizations
Software visualization
Software visualization is the static or animated 2-D or 3-D visual representation of information about software systems based on their structure, size, history, or behavior....
to improve the comprehensibility of software
Computer software
Computer software, or just software, is a collection of computer programs and related data that provide the instructions for telling a computer what to do and how to do it....
. It produces static visualizations of source code structure and visualizations of data structures at runtime.
jGRASP is implemented in Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
, and runs on all platforms with a Java Virtual Machine
Java Virtual Machine
A Java virtual machine is a virtual machine capable of executing Java bytecode. It is the code execution component of the Java software platform. Sun Microsystems stated that there are over 4.5 billion JVM-enabled devices.-Overview:...
(Java version 1.5 or higher). The jGRASP web site offers downloads for Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
, Mac OS
Mac OS
Mac OS is a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems. The Macintosh user experience is credited with popularizing the graphical user interface...
, and as a generic ZIP
ZIP (file format)
Zip is a file format used for data compression and archiving. A zip file contains one or more files that have been compressed, to reduce file size, or stored as is...
file suitable for Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
and other systems.
For languages other than Java, jGRASP is a useful source code editor
Source code editor
A source code editor is a text editor program designed specifically for editing source code of computer programs by programmers. It may be a standalone application or it may be built into an integrated development environment ....
. It can be configured to work with most free and commercial compilers for any programming language.
Visualizations
The Control Structure DiagramControl Structure Diagram
The Control Structure Diagram automatically documents the program flow within the source code and adds indentation with graphical symbols. Thereby the source code becomes visibly structured without sacrificing space.-See also:* Diagram...
(CSD) is a control flow diagram that fits into the space normally taken by indentation in source code. Its purpose is to improve the readability of source code. jGRASP produces CSDs for Java, C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
, C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
, Objective-C
Objective-C
Objective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.Today, it is used primarily on Apple's Mac OS X and iOS: two environments derived from the OpenStep standard, though not compliant with it...
, Ada
Ada (programming language)
Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages...
, and VHDL. CSDs in jGRASP are integrated into the source code editing windows, and can be regenerated on demand. They are generated at a speed that makes the process effectively instantaneous (50,000 loc per second or faster on modern hardware). The editing window provides CSD-based folding
Code folding
Code folding is a feature of some text editors, source code editors and IDEs that allows the user to selectively hide and display sections of a currently-edited file as a part of routine edit operations...
and a "context hint" feature that displays the first line of a code structure that is off-screen when the mouse is hovered over its CSD structure.
The Java object viewers in jGRASP provide interface-based, structural, and other views of data structures and other objects and primitives during debugging and workbench operations. Often these views are more useful than the traditional tree view showing the fields of each object. For example, an interface-based view shows ArrayList and LinkedList in an identical way, as a list of elements. Structural views show the internal structure of trees
Tree (data structure)
In computer science, a tree is a widely-used data structure that emulates a hierarchical tree structure with a set of linked nodes.Mathematically, it is an ordered directed tree, more specifically an arborescence: an acyclic connected graph where each node has zero or more children nodes and at...
, linked lists, hash tables, etc. Structural views of linked data structures display local variable nodes and their relation to the main structure. The result is animated when changes occur, as when a node is added to a linked list. In data structure viewers, one element or sub-element, such as an element of a linked list or a key or value in a hash table, may be selected and will be displayed in a "sub viewer", or they can be dragged out as separate viewers. Common data structures are automatically identified and displayed structurally. Other viewers show, for example, a color swatch for a Color, the image for an icon, and the binary details of a double.
The Complexity Profile Graph (CPG) is a unique statement-level complexity diagram. Its purpose is to aid in identifying overly complex areas of source code. jGRASP generates CPGs for both Java and Ada. The metric includes common measures, such as reachability
Reachability
In graph theory, reachability is the notion of being able to get from one vertex in a directed graph to some other vertex. Note that reachability in undirected graphs is trivial — it is sufficient to find the connected components in the graph, which can be done in linear time.- Definition :For a...
and content complexity, which can be displayed individually. The CPG is integrated with the editing window in jGRASP so that highlighting a section of CPG will highlight the corresponding section of source code, and vice versa. They also scroll together, and the current visible portion of the editing window is shown in the CPG window.
jGRASP also generates UML
Unified Modeling Language
Unified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...
diagrams for Java. The UML diagrams are augmented with much interactive functionality. Clicking on a dependency edge, for example, will display all of the dependencies between two classes in a separate pane. From that pane, the source code locations of the references that cause each dependency can be listed and visited.
History
jGRASP was created by James Cross and Larry Barowski at the Department of Computer Science and Software Engineering in the Samuel Ginn College of Engineering at Auburn UniversityAuburn University
Auburn University is a public university located in Auburn, Alabama, United States. With more than 25,000 students and 1,200 faculty members, it is one of the largest universities in the state. Auburn was chartered on February 7, 1856, as the East Alabama Male College, a private liberal arts...
. It is maintained and evaluated by the jGRASP Team. The development of jGRASP has been supported by a research grant from the National Science Foundation
National Science Foundation
The National Science Foundation is a United States government agency that supports fundamental research and education in all the non-medical fields of science and engineering. Its medical counterpart is the National Institutes of Health...
.
The development of previous versions of GRASP was supported by research grants from NASA
NASA
The National Aeronautics and Space Administration is the agency of the United States government that is responsible for the nation's civilian space program and for aeronautics and aerospace research...
Marshall Space Flight Center
Marshall Space Flight Center
The George C. Marshall Space Flight Center is the U.S. government's civilian rocketry and spacecraft propulsion research center. The largest center of NASA, MSFC's first mission was developing the Saturn launch vehicles for the Apollo moon program...
, the Department of Defense Advanced Research Projects Agency (DARPA
Defense Advanced Research Projects Agency
The Defense Advanced Research Projects Agency is an agency of the United States Department of Defense responsible for the development of new technology for use by the military...
), and the Defense Information Systems Agency (DISA
Defense Information Systems Agency
The Defense Information Systems Agency is a United States Department of Defense agency that provides information technology and communications support to the President, Vice President, Secretary of Defense, the military Services, and the Combatant Commands.As part of the Base Realignment and...
).
See also
- Comparison of integrated development environments