Link to Virginia Tech's main website
published in 1996

Software — the instructions that make up a computer program — controls many products, from automobiles and televisions to life-critical systems in aircraft and medical equipment. The complexity of software for such applications is pushing the limits of technology. The cost involved in building such software has also become prohibitive. One solution — recycle the knowledge captured by software code.

A manufacturer of auto wheels who decides to make truck wheels would not have to go back to the drawing board to design a wheel, but could concentrate on the differences. When it comes to software, however, many companies start from scratch to create programs for processes that have a great deal in common.

"Plumbers use standardized components," points out William Frakes, associate profesor of the computer-science program at Virginia Tech's National Capital Region. "Even Dr. Frankenstein had parts he could stitch together to make his monster."

But people who write software do not have pre-existing programming components for even the most common computerized tasks.

Researchers at Virginia Tech are doing the fundamental work necessary to understand how to systematically reuse existing software to create new software.

There are two approaches to reuse. One is to create chunks of code for common functions. The second approach, in cases where a type of software system is thoroughly understood, is to build an 'application generator' that will automatically create a new system based on customer specifications.

To support these approaches, Frakes is determining how to build repositories or libraries to hold reusable software in ways people can find and understand.

Frakes, who chairs the Institute of Electrical & Electronic Engineers committee on software reuse, has also researched measurement of software reuse. He and graduate student Carol Terry developed a measurement tool for software reuse called rl (reuse level).

"The rl tool evaluates what percentage of a software system is made up of reusable components," he explains. "If managment finds there is not much software reuse in the products they manufacture, they can implement incentives to encourage programmers to create and use reusable components."

In addition to software itself, design and implementation processes can be reused, Frakes points out.

— Written by Sally Harris

 

Reusable codes reduce cost of creating software