Social Enterprise

Laying the groundwork for a reuse environment

Everyone seems to agree that reuse in development is a good thing. However, achieving it may not be that simple. Find out what building a reuse environment really means and what it will take to get there.

A significant amount of cost and effort is wasted when documents and objects are built without leveraging similar objects that already exist. Most developers recognize this and try to recycle objects when possible. However, many companies can't fully implement a reuse environment and culture because they lack the infrastructure to support and reinforce the goal of reuse. Building a reuse environment involves major changes in how people do their jobs, so the infrastructure must include components that deal with technology, processes, and people.

A few years ago, Gartner published research supporting the notion that if the basic infrastructure elements of a reuse program are not in place, the entire effort will fail within two years. However, Gartner also found that a properly implemented reuse program would produce an ongoing annual return on investment of at least 200 percent within two years. So despite the likelihood of failure if the effort isn't properly supported, the possible payoff is compelling.

Last time, in "The reuse environment is more about culture than technology," we discussed some of the main virtues and challenges of a reuse model. In this article, we'll examine the issues you must consider if you're planning to build a reuse infrastructure.

Key deliverables
The goal of a reuse environment is to enable the reuse of development objects to decrease the cycle time of delivering solutions and to increase their overall quality. It may also be possible to reduce development costs, but this is not a given since some expense is associated with building and supporting the environment.

Before your team or department starts trying to create a reuse environment, you need address a number of areas, including:
  • Processes, procedures, and leading practices for accomplishing reuse.
  • Training curriculum and courses on how to build for reuse, both for developers and for support roles.
  • Implementation of new roles and responsibilities that support reuse.
  • Incentives to encourage individuals to build and use reusable objects.
  • A measurement process that tracks reuse and compliance to reuse processes.
  • A repository tool for storing and managing reusable objects. The tool must include a catalog that defines the objects and supports searches.

What can be reused?
In developing a plan for implanting a reuse environment, it's obviously important to understand the types of objects that can be reused. Most developers immediately assume that we're talking about reusing programming code—and in part, we are. However, much more than code can be reused in a true reuse environment. Think of all the objects in your environment in one of two categories.
  • Structured objects are those related to the development process. Structured objects are defined as objects of fixed length or predetermined content and form. Examples include programming code, entire class libraries, and data models. Basically, these objects can easily be stored and interpreted with the proper tools.
  • Unstructured objects are those that do not necessarily follow any fixed format or pattern. They are not as easy to catalog and store, although many tools and databases today handle them pretty well. Unstructured objects come in varying length, content, and form. Examples include documents, graphs, audio clips, and video images.

Many developers don't realize how broad the scope of reuse can be. In fact, that's one of the reasons that implementing reuse can be so challenging. As you continue to explore how you might be able to benefit from a reuse environment, here are some points to keep in mind:
  • Most developers understand the value of reuse, but they do not have the infrastructure needed to make reuse easily available and acceptable.
  • Establishing a reuse culture requires a balanced infrastructure that addresses technology, processes, and people motivators.
  • Two types of objects can be reused: structured objects, like program code, and unstructured objects, like documents and images.

Next time, we'll take a closer look at the benefits you can expect from reuse, the barriers to implementation, where you should start if you want to create this type of environment, and some success factors.

Project management veteran Tom Mochal is director of internal development at a software company in Atlanta. Most recently, he worked for the Coca-Cola Company, where he was responsible for deploying, training, and coaching the IS division on project management and life-cycle skills. He's also worked for Eastman Kodak and Cap Gemini America and has developed a project management methodology called TenStep.

Missing out on the promise of reuse?
Have you been part of an effort to create an environment of reuse in your shop? What problems did you encounter? How has it turned out? Send us an e-mail with your experiences and stories or post a comment below.


Editor's Picks