4 Principles for Effective Requirements Lifecycle Management

IBM Innovate 2010 happened in Bangalore on August 17 & 18. I attended an interesting session on "Ensuring Project Success: Four Principles for Effective Requirements Life cycle Management" by the IBM Rational Expert Dr. Keith Collyer. A small excerpt from the talk:

ps: The excerpt is based on my understanding of the session. It may or may not be what the speaker intended to.

Since this was an IBM Rational Product/Development Conference, his thrust in the beginning itself was on the use of tools for effective requirements management, which I also agree to an extend. The software and the systems are becoming more complex than ever day by day. So is the time frame of projects. Effective requirements management is as important as the effective development or testing or project management. The four principles that Dr Keith stressed on were:

1. Recognize the needs of all stakeholders
2. Use structure to manage complexity
3. Encourage collaboration across the life cycle
4. Promote the use of a consistent process

How can we identify what all are the needs of the entire stakeholder community? - Usually a very lengthy, complex essay format explaining the requirements in a short will not help to identify the requirements properly. An exercise in clear and concise descriptive writing is the key.

Whether we are working on the problem or the solution we have to analyze the gist of:

The best ways to identify the answers is to explore & use the various approaches. Requirements understanding is not merely technical, but its more about understanding people. We have to understand the problem as much as we do the solution.

Recognizing the stakeholders need starts with understanding, whether we are working on the problem ( state what stake holder's want to be able to do - capabilities)  or the solution (state what the system must do - function) . The three things to be aware of are:

1. Defining the problem  - What are we trying to do? (WHY?)
2. Defining the solution   - What our solution will/can be for this? (WHAT?)
3. Designing the solution -  How are going to do it? (HOW?)

A proper structure for requirements helps us to:

1. Understand context
2. Assess completeness
3. Identify repetitiveness / conflict
4. Navigate / Search requirements

Creating templates is the next level which can include document structure, boiler plate text, requirements template & project templates.

Another useful way of improving the identification/usefulness/navigation of requirements is using attributes. Some of the examples are identifiers, types, priority, status, performance etc

The underlying idea behind the principle of using structure to manage complexity is to use abstraction levels. Define the problem at different levels - we should first discuss in the stakeholder's language rather than developer's language. The general rule of thumb is to provide as much information as needed - but not more & avoid design at early stages. We have to ask, why you want to do this until we reach the root of the problem.

How can we move from one level into another - decompose the requirements according to the level. The decomposition can be into for example, high level requirement, system requirement, design requirement, components requirement and so on. Efficient use of UML diagrams and use cases can be used in complement. Next is the allocation of various sub system of requirements to high level system requirements. This will help us to understand the questions we asked, why are we building this -> where is it implemented? -> how do I test this component? This traceability is important to show the answers to the management/governing body.

The next principle, encourage collaboration across life cycle is essentially requirements management across the enterprise :  Starting with the Board - setting the vision to the Developers - Using the lowest level requirements & tools. The next important thing is requirements definition & management should be integrated into the product life cycle.

The final principle - promote the use of consistent process is essentially, automate the requirements process. The key is that we should be able to measure the requirement process. A typical benefit the traceability can be easily achieved using a tool. Also, many of the quality standards & processes like CMMI requires measurement. Effective requirements realizes quantifiable savings and with a tool you are able to measure it. Using a requirements tool, the whole flow is possible - document structure, attributes, filter to focus, view related information & view historical background information

Thus the benefits of effective requirements life cycle management are:

1. Greater Confidence (For all stakeholders)
2. Ability to manage change
3. Improved customer / supplier relations
4. Visibility of progress / status
5. Improved cost / benefit decisions

Post a Comment