Each of the approaches has supporters and adherents because each works (at least in specific circumstances). From this, we can derive our most important lesson about Requirements Engineering; that there is not One Right Way to engineer requirements.
The One Right Way to achieve high-quality requirements is to start by identifying the requirements challenges that you will face on the specific project, and then to choose the technique that best addresses those specific challenges. In this column, we will explore three representative approaches: The PMBOK® approach, the CMMI® approach, and the Agile approach.
This approach is predicated on the assumption that the Customer has a clear understanding of his or her needs and is able to articulate those needs to the project team. It goes on to assume that when scope-related conflicts occur, resolving them is a matter of reconciling the perspectives of the project's key stakeholders.
When you are embarking on a project with a well-versed Customer who is both willing and able to fully articulate the project requirements, the PMBOK approach can work quite well.
The CMMI includes Process Areas (PA) for both Requirements Engineering (RE) and Requirements Management (RM). The RE Process Area assumes that the Customer needs help in fully articulating their requirements. For this reason it includes a variety of practices that are designed to help the Customer and the Technical Team to collaboratively converge on a clear and complete statement of requirements.
In spite of the challenges in defining requirements, the CMMI assumes that a relatively complete and accurate set of requirements can be achieved early in the project. The RM Process Area expects that as the project moves forward, changes to the requirements could be necessary. So, in addition to actively managing the project requirements, RM also includes practices for controlling change and incorporating changes into the project.
In engineering projects, or any other projects in which the complete requirements are not immediately apparent but can be determined, and in which requirements changes are likely, the CMMI's approach can make sense. It involves a significant up-front investment of time and effort in an attempt to achieve better stability as the project moves forward.
The Agile methods are structured to be tolerant of requirements changes, and to encourage change. ("Welcome Change" is a principle on which these methods are based!) The idea is that as the customer and the technical team progress through the project, they will learn about what they are trying to achieve, and that learning will result in changes. So, change is good! It is a symptom of learning, and it means that we are nearer to the best solution than we were before!
The Agile methods work best in projects with many unknowns. They were designed to discover the Customer's requirements as the project progresses, but they also can make other unknowns more tractable. For example, technical unknowns or business practice uncertainty can be accommodated more comfortably in the Agile methods than in the more traditional approaches.
Success in managing projects is a matter of choosing an approach that is suited to your project, then using that approach to its greatest effect. Garbage in = Garbage out. But appropriate requirements methods will being success.
®PMBOK and Project Management Body of Knowledge are registered trademarks of the Project Management Institute.
®Capability Maturity Model, CMM, Capability Maturity Model Integration, and CMMI are registered in the U.S. Patent and Trademark Office.