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 tbragg@acm.org.

Featured

  • Telecommunications
    Stock photo ID: 658810513 By asharkyu

    GSA extends EIS deadline to 2023

    Agencies are getting up to three more years on existing telecom contracts before having to shift to the $50 billion Enterprise Infrastructure Solutions vehicle.

  • Workforce
    Shutterstock image ID: 569172169 By Zenzen

    OMB looks to retrain feds to fill cyber needs

    The federal government is taking steps to fill high-demand, skills-gap positions in tech by retraining employees already working within agencies without a cyber or IT background.

  • Acquisition
    GSA Headquarters (Photo by Rena Schild/Shutterstock)

    GSA to consolidate multiple award schedules

    The General Services Administration plans to consolidate dozens of its buying schedules across product areas including IT and services to reduce duplication.

Stay Connected

FCW Update

Sign up for our newsletter.

I agree to this site's Privacy Policy.