Computer
Science and Information Systems Reports, Technical Report TR-17.
Final technical report/ HyperSoft project phase II.
Abstract
This report describes the technical implementation of
the back-end components of the HyperSoft
system, which has been designed and
implemented during the HyperSoft
project. HyperSoft is an experimental
tool for software maintenance support. HyperSoft
generates and visualizes various access structures over the source
programs. The access structures are generated based on the program analysis
techniques and are represented to the user as transient hypertext through a
language-independent, generic graphical user interface (Interface-component).
The implementation of the system is based on the HyperSoft model developed related to the project1. The
project has been funded mainly by Technology Development Center of Finland
(TEKES), and partially by
HyperSoft works as follows. The static
program analyzer component (Analyzer) parses and statically analyzes the source
programs as a batch process. The relevant static information is stored into a
database. The user navigates through the source files and passes requests for
access structure generations and for other information through the Interface.
The requested access structures are generated by the access structure generator
(Generator) based on the static information stored into the program database
and on the application of various program analysis techniques. The access
structures are graphs or hypergraphs. Finally access structures are shown to
the user through the Interface as hypertext. Changing and browsing of the
sources is also supported through the integrated Editor-component (PFE,
Programmer's File Editor).
This report
describes the operation of the back-end components of the HyperSoft system, version 1.0 released in January 1997. The
back-end consists of the Analyzer and Generator components. Program database is
the central information repository used to pass information between the
components. HyperSoft supports ANSI-C
language and is mainly implemented by using C and C++ languages. HyperSoft also includes an extension
implemented within KT-Tietokeskus to support embedded SQL language. The
Analyzer components are implemented by using a LALR(1) parser generator. Six access structure types are supported:
occurrence lists (of variables, functions and user-defined types), instance
lists (of syntactical constructs based on their type), calling dependency
structures (both to forward and backward directions), intra-procedural backward
slices, and inter-procedural forward slices. The access structures are
represented to the user as a set of highlighted nodes and graphical links on
top of the original program text. Slicing is based on traversals of parse trees
and static iterative solving of data-flow equations. The main limitations, the
most prominent areas of possible further investigation and possible extensions
are discussed in the last chapter. Technical implementation is detailed in the
appendices.
Keywords: CASE (Computer Assisted/Aided Software Engineering), hypertext, program
dependencies, reverse engineering, slicing, software maintenance
Computing Reviews Categories: D.2.2, D.2.5, D.2.7, D.3.4, E.1, H.3.3, H.5.1
1
The HyperSoft system
has been implemented as a part of the TEKES-project #4429/94.
Updated:
Sept. 30, 2004, Aug. 10, 2010 by Jussi Koskinen.