Although they might have many of their own special features, the products you build are not completely unique. Someone, somewhere, has already built a product containing some requirements that are germane to your current work. When you take advantage of work that has already been done, your efficiency as a requirements gatherer increases significantly. Early in your requirements projects look for reusable requirements that have already been written, and incorporate these "free" requirements into your own project. See Figure 13.1. Figure 13.1.Reusing requirements entails making use of requirements written for other projects. They can come from a number of sources: a reuse library of specifications, other requirements specifications that are similar or in the same domain, or informally from other people's experience.
But these requirements are not exactly free: You have to do something for them. Successful reuse starts with having an organizational culture that consciously encourages reuse rather than reinvention. If you have this attitude, then you are in a position to include requirements reuse in your requirements process.
Successful reuse starts with having an organizational culture that consciously encourages reuse rather than reinvention. Naturally, to determine whether you have any relevant reusable requirements, you need to know something about the work that you are investigating. When you run a project blastoff meeting, pay particular attention to the first seven sections of the requirements specification:
When you are looking for potentially reusable requirements, don't be too quick to say your project is different from everything that has gone before it. Yes, the subject matter is different, but if you look past the names, how much of the underlying functionality is substantially the same? How many requirements specifications have already been written that contain material that you can use unaltered, or at least adapted, in your own specification? See Figure 13.2. Figure 13.2.At project blastoff time the subject matter of the context, together with its adjacent systems and boundary data flows, should indicate the potential for reusing requirements from previous projects.
We have found that significant amounts of specifications can be assembled from existing components rather than having to be invented from the ground up.
The blastoff deliverables provide a focus for identifying reusable knowledge that might not otherwise be found. The stakeholders who participate in the blastoff meeting are wonderful sources of reusable components. Ask them about other documents that contain knowledge relevant to the work of the project. Consider whether someone else has already investigated subject matter domains that overlap with your project. Closely examine the blastoff deliverables. They provide a focus for identifying reusable knowledge that might not otherwise be found. When you are trawling for requirements, continue to look for reusable requirements by asking the people you interview about them: "Have you answered these questions, or questions like them, before? Do you know of documents that might already contain the answers to these questions?" This fairly informal approach means that you encounter potentially reusable requirements in many different forms. Some are precisely stated and hence directly reusable; others merely provide clues or pointers to sources of knowledge. One of the benefits of using a disciplined process for writing requirements specifications is that you naturally produce requirements that are more easily reusable by future projects.
One of the benefits of using a disciplined process for writing requirements specifications is that you naturally produce requirements that are more easily reusable by future projects. |