The Surgeon's Assistant is a CASE tool for software maintainers and developers of ANSI C programs. It is based on the premises that maintainers need to limit the scope of changes and that most development starts from some existing, similar systems (and can therefore be classified as ``maintenance'').
The Surgeon's Assistant provides an environment that is based on a new software maintenance process model proposed in . The maintainer can perform decomposition slices on given variables. Then, a textual display of the slice's source code is displayed beside its complement2. The maintainer is permitted to edit portions of the slice that do not affect the complement. After testing the slice as an independent program, the maintainer then merges the modified slice with its complement, thus changing the original program. Note that the maintainer only needs to test the slice, not the complement, to validate the correctness of the change (i.e., under this model, no regression testing is required).
Most of the Surgeon's Assistant provides only a textual interface to view the slices and to affect changes. Textual viewers are provided to view the entire program or individual slices. These textual viewers present a complete analysis of how a change to one slice will affect the program. However, the amount of information can still be overwhelming.
Once a slice is chosen, The Surgeon's Assistant presents a context sensitive editor that only allows changes to the chosen slice. The maintainer may use this editor to change statements that are part of the chosen slice, and test the program with these changes. When finished, the maintainer uses the Surgeon's Assistant to merge the changes with the complement to again create a full program.
This textual interface, although useful, does not provide enough information to truly visualize the effects that the proposed change would have. Pictorial representations of the slices would be a better method to understand these effects. Decomposition slices of a given program form an acyclic directed graph where a node represents a decomposition slice, and an edge represents the predicate ``is contained in'' . If the maintainer can be made aware that the chosen slice is at the top of the graph (i.e. contains many of the other slices), the maintainer may reconsider the proposed change. The textual interface may provide this information by number of lines of code, but gleaning this information from the textual interface becomes impractical when large programs are sliced.
Copyright © 1994, 1995 Keith B. Gallagher, Bradley M. Kuhn, Dennis J. Smith.
Verbatim copying and distribution of this entire paper is permitted in any medium, provided this notice is preserved.