The Surgeon's Assistant Home Page
WATCH THIS SPACE.
Get tarball here
The Surgeon's Assistant is a tool for
software maintainers and developers of ANSI C programs. It is based on
the premises that maintainers need to be able to limit the scope of
changes and that (most) development starts from some existing, similar
system (and can therefore be classified as ``maintenance'').
Using the Surgeon's Assistant, a software engineer
can isolate program components for change or adaptation; assess the
impact of changes or additions on the changing components and the
unchanging components; design, code and test so that all effects have
no impact on the unchanged components. The changed parts still need
to be tested, but the need for regression testing on unchanging parts
is obviated. The Surgery is done in four parts. The standard
unix/emacs environment is used for compiling and testing. A
preprocessor builds collections of unit decompositions. A graphical
interface allows combining and inspecting decompositions. A
special-purpose editor (implemented as an extension to emacs) enables
the engineer to modify the code while avoiding unexpected
side-effects, validate that the changes are consistent, and merge
these changes back into the component. The graphical browser displays
the code under consideration, decomposition variables, the
decomposition slice, the complement slice, and the lattice of all
decomposition slices. The engineer selects decomposition variables and
the current decomposition is displayed.
The Surgeon's Assistant partitions programs into a
changing part and a unchanging part, each of which is executable. The
changing partition is created and presented in such a way that no
modifications to it can have any effect on the unchanging part. The
variables of the program are also partitioned into changeable and
unchangeable sets. The engineer has sufficient information on the
interactions of the components so that adaptations can be made
consistently. The advantage of this method is that the engineer can
start from reliable, working code and not worry about additions or
changes corrupting the working part. The Surgeon's
Assistant also validates that no unintentional interactions
are made between the parts. This is the way the need for regression
testing is eliminated.
When the engineer is extending the function of a system, the changing
part may be empty. The new system is composed of the old system plus
the extensions. Alternatively, the fixed part may be selected
components of the old system; the new system is these selected parts
plus any changes. This way new systems may be quickly produced.
The implementation of the model is based on decomposition slicing.
Slicing is a technique for determining the subset of program
statements that affect the value of a particular variable (or set of
variables) at a particular statement. Decomposition slicing captures
all the computation on a given variable.
The Surgeon's Assistant also produces executable
decomposition slices that may be used as candidates for reuse
libraries; as skeletons, for the construction of new code; for
functional program abstraction and understanding; and for
re-engineering and reverse engineering.
started: 19 Nov 96
last change: 8 March 04