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