jGRASP is a
development environment
In software deployment, an environment or tier is a computer system or set of systems in which a computer program or software component is deployed and executed. In simple cases, such as developing and immediately executing a program on the same m ...
that includes the automatic creation of
software visualization
Software visualization or software visualisation refers to the visualization of information of and related to software systems—either the architecture of its source code or metrics of their runtime behavior—and their development process by mea ...
s. It produces static visualizations of source code structure and visualizations of
data structures
In computer science, a data structure is a data organization, management, and storage format that is usually chosen for efficient access to data. More precisely, a data structure is a collection of data values, the relationships among them, a ...
at runtime.
The runtime data structure visualizations are also available as plugins for IntelliJ IDEA, Android Studio, and Eclipse.
jGRASP is implemented in
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
, and runs on all platforms with a
Java Virtual Machine
A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describ ...
(Java version 1.8 or higher). GRASP (Linux, UNIX) and pcGRASP (Windows) are written in C/C++, whereas jGRASP is written in Java (the "j" in jGRASP means it runs on the JVM). The jGRASP web site offers downloads for
Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ...
,
Mac OS
Two major famlies of Mac operating systems were developed by Apple Inc.
In 1984, Apple debuted the operating system that is now known as the "Classic" Mac OS with its release of the original Macintosh System Software. The system, rebranded " ...
, and as a generic
ZIP
Zip, Zips or ZIP may refer to:
Common uses
* ZIP Code, USPS postal code
* Zipper or zip, clothing fastener
Science and technology Computing
* ZIP (file format), a compressed archive file format
** zip, a command-line program from Info-ZIP
* Zi ...
file suitable for
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
and other systems.
For languages other than Java, jGRASP is a
source code editor
A source-code editor is a text editor program designed specifically for editing source code of computer programs. It may be a standalone application or it may be built into an integrated development environment (IDE) or web browser. Source-code ed ...
. It can be configured to work with most free and commercial compilers for any programming language.
Visualizations
The
Control 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
* Entity-re ...
(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
Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was selected by NeXT for its N ...
,
Ada
Ada may refer to:
Places
Africa
* Ada Foah, a town in Ghana
* Ada (Ghana parliament constituency)
* Ada, Osun, a town in Nigeria
Asia
* Ada, Urmia, a village in West Azerbaijan Province, Iran
* Ada, Karaman, a village in Karaman Province, Tu ...
, and
VHDL
The VHSIC Hardware Description Language (VHDL) is a hardware description language (HDL) that can model the behavior and structure of digital systems at multiple levels of abstraction, ranging from the system level down to that of logic gat ...
. The editing window provides CSD-based
folding
Fold, folding or foldable may refer to:
Arts, entertainment, and media
* ''Fold'' (album), the debut release by Australian rock band Epicure
* Fold (poker), in the game of poker, to discard one's hand and forfeit interest in the current pot
*Abov ...
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
In computer science, a data structure is a data organization, management, and storage format that is usually chosen for efficient access to data. More precisely, a data structure is a collection of data values, the relationships among them, a ...
and other objects and primitives during debugging and workbench operations. For example, a content-based view shows ArrayList and LinkedList in an identical way, as a list of elements. Structural views show the internal structure of
trees
In botany, a tree is a perennial plant with an elongated stem, or trunk, usually supporting branches and leaves. In some usages, the definition of a tree may be narrower, including only woody plants with secondary growth, plants that are ...
,
linked lists
In computer science, a linked list is a linear collection of data elements whose order is not given by their physical placement in memory. Instead, each element points to the next. It is a data structure consisting of a collection of nodes whic ...
,
hash tables
In computing, a hash table, also known as hash map, is a data structure that implements an associative array or dictionary. It is an abstract data type that maps keys to values. A hash table uses a hash function to compute an ''index'', ...
, 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. 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. Multiple viewers can be combined on a single viewer canvas window and the contents can be saved to file.
The Complexity Profile Graph
[Visualization and Measurement of Source Code]
(CPG) is a 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
In graph theory, reachability refers to the ability to get from one vertex to another within a graph. A vertex s can reach a vertex t (and t is reachable from s) if there exists a sequence of adjacent vertices (i.e. a walk) which starts with s ...
and content complexity, which can be displayed individually.
jGRASP also generates
UML
The Unified Modeling Language (UML) is a general-purpose, developmental modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system.
The creation of UML was originally ...
diagrams for Java, with interactive dependency information.
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 University. It is maintained and evaluated by th
jGRASP Team The development of jGRASP has been supported by a research grant from the
National Science Foundation
The National Science Foundation (NSF) is an independent agency of the United States government that supports fundamental research and education in all the non-medical fields of science and engineering. Its medical counterpart is the National ...
.
The development of previous versions of GRASP was supported by research grants from
NASA
The National Aeronautics and Space Administration (NASA ) is an independent agency of the US federal government responsible for the civil space program, aeronautics research, and space research.
NASA was established in 1958, succeedi ...
Marshall Space Flight Center
The George C. Marshall Space Flight Center (MSFC), located in Redstone Arsenal, Alabama ( Huntsville postal address), is the U.S. government's civilian rocketry and spacecraft propulsion research center. As the largest NASA center, MSFC's first ...
, the Department of Defense Advanced Research Projects Agency (
DARPA
The Defense Advanced Research Projects Agency (DARPA) is a research and development agency of the United States Department of Defense responsible for the development of emerging technologies for use by the military.
Originally known as the Ad ...
), and the Defense Information Systems Agency (
DISA
Disa is the heroine of a Swedish legendary saga, which was documented by Olaus Magnus, in 1555. It is believed to be from the Middle Ages, but includes Old Norse themes.
It was elaborated by Johannes Messenius in his drama ''Disa'', which was t ...
).
See also
*
Comparison of integrated development environments
The following tables list notable software packages that are nominal IDEs; standalone tools such as source code editors and GUI builders are not included. These IDEs are listed in alphabetical order of the supported language.
ActionScript
...
References
External links
Official websiteVideos about Java jGrasp on MrBool.com
{{Integrated development environments
Integrated development environments
Java development tools
Freeware