Software development: rethinking reuse
Some literary experts say there are only a handful of original plots, which writers retell time and again. The same could be true of software development. This is the concept behind a methodology known as adaptive reuse.
What is adaptive reuse? In software, it refers to a technique for building programs by taking a framework of existing code and "adapting" it to the new requirement. The adaptation can be done by hand or by automated tools: In the latter case, a coding rate of more than 200 lines of code per day per programmer is very possible.
If you think about it, federal agencies write the same programs over and over, particularly in the management information systems (MIS) arena. Basically, a handful of identifiable types of programs or software modules account for a substantial majority (up to 85 percent) of the code required for MIS applications, whether legacy or Web-based. The functions performed by these structurally distinct module types include:
- Transfer of control (such as a menu or home page).
- Query and browse.
- Dataset maintenance (add, delete, modify and display, or a subset thereof).
- File transform (such as transaction update or report programs).
Within those structural types or categories, programs on the same platform tend to be highly similar from one MIS application to the next, though they deal with different data internally and in the user interfaces.
For example, a dataset maintenance module allows the user to add, delete, modify and display information about objects or entities stored in the MIS system. Several styles for these programs are commonly encountered, but they all perform the same essential function.
These similarities can be used as the basis for application generation, in Java or C++ or other source languages. Some tools, such as Visual Studio, SilverStream and Visual Cafe generate application code through a wizard interface, but the generated program structures are fixed and cannot be tailored if the developers want a different style or program architecture.
A software tool can implement adaptive reuse by allowing for reuse of those portions of MIS programs that do not vary significantly from application to application. The tool must allow access to and modification of the application- invariant code, and it must use a repository to control data structures and other application information.
In the case of redeveloping existing systems (for the Web, perhaps), the tool can read the existing legacy source code and fill the repository with information about data elements, user interfaces and business rules.
Adaptive reuse is a way of achieving reuse at the requirement level. I and others have written and lectured on the subject of adaptive reuse for more than 15 years, yet today there is still a dearth of tools that fully implement the concept.
Bragg is an independent consultant and systems architect with extensive experience in the federal market. He welcomes your questions and topic suggestions at firstname.lastname@example.org.