http://ftp.reasoning.com/pub/mosaic/Software-Refinery.html (World Wide Web Directory, ~04/1995)
Software Refinery
The first integrated development environment for building automated
software reengineering, reverse engineering and quality assurance tools
Why Software Refinery?
Software reengineering projects require detailed analysis of source
code and systematic conversion to meet new requirements. The Software
Refinery product family provides the essential capabilities for
automating analysis and conversion of source code. You can use
Software Refinery to build tools that---
- analyze and redocument old systems,
- convert software to new languages, databases, and hardware platforms,
- check source code against coding standards, and
- generate test cases from source code.
And with Software Refinery's open architecture, the reengineering
tools you build can be customized to work in your environment -- with
your languages, your databases, and your CASE tools.
The Key Idea
Software Refinery captures the detailed structure of source code in an
object base (object-oriented database), and provides tools that
operate on code in this form. The object base makes it easy to
analyze and convert programs, because you can operate directly on the
structure of the program instead of its source text.
How It Works
Software Refinery divides a reengineering application into three parts:
- loading source code into the object base,
- selecting code to operate on and an analysis or conversion operation to perform, and
- automatically executing the selected analysis or conversion operation.
For example, a user loads a FORTRAN program into the object base,
browses it and selects a module for analysis, and then chooses an
operation that automatically creates a dataflow diagram.
Software Refinery provides three products for building these three
parts: REFINE, DIALECT, and INTERVISTA. The figure below shows how
they work together.
DIALECT handles parsing and printing
DIALECT is used to produce parsers and printers for programming languages. Parsers read source code and create a tree of objects in the REFINE object base that captures the full detail of the code down to the statement level. DIALECT's input is a grammar for a programming language. Printers generate source code from the tree representation in the object base.
DIALECT is unique in providing these important features:
- Automatic creation of a detailed model of source code in REFINE's object base.
- A high-level grammar language that significantly reduces the size and complexity of grammars.
- Intelligent compile- and run-time diagnostics that pinpoint syntax problems.
- Automatic creation of language-specific pattern matchers.
- LALR parsing with escapes to handle non-LALR language features.
REFINE speeds development of reengineering tools
The core of a Software Refinery reengineering application is the part
that analyzes and modifies the object base representation of the
software. This part is written in the REFINE specification language.
Software reengineering involves symbolic computations such as
constructing control flow graphs for programs. These computations are
best expressed using mathematical operations such as set operations,
tree-traversal algorithms and pattern matching. REFINE's key features
that accelerate development of reengineering tools include:
- Support for symbolic mathematical operations including logic and set operations.
- A library of tree operations such as copy, compare, traverse, and substitute.
- A flexible object base that provides versioning, inheritance, and constraints.
- Program templates for pattern matching against program trees.
- A transformation operator for specifying modifications to source code.
REFINE is the only system that provides a fully programmable program
transformation capability. Transformations enable a tool to go beyond
passive analysis of source code to provide automatic modification
capabilities such as language translation and code cleanup.
INTERVISTA makes reengineering tools easy to use
The user interface requirements on software reengineering tools are
unique and demanding. The tools must actively help the user to
navigate through large programs, keeping track of non-local
interactions and selectively applying reengineering operations.
INTERVISTA provides the building blocks to satisfy these requirements,
including:
- Multiple independent overlapping windows.
- A full-featured diagram system (layout, nested diagrams, automatic layout).
- Hypertext interface to program source code.
- Menus, text editing, and screen management.
Applications
Example Applications contains a list of typical
Software Refinery applications.
Selected Papers contains a bibliography of technical papers
that describe Software Refinery applications.
Putting Software Refinery to work for you
Call us to find out how Software Refinery and
Reasoning Systems can solve your reengineering problems.
Technical Specifications
Hardware Platforms: SPARC, IBM RS/6000, and HP 9000/7xx
RAM: 28 Mbytes minimum, 32 Mbytes or more recommended
File Space: 47 Mbytes
Swap Space: 70 Mbytes minimum, 120 Mbytes or more recommended
Window System: X Window System or OpenWindows