Software Requirements “Bills of Rights”
Welcome! This site specializes in providing tips and tools for Business Analysts and systems development in general. If you're new here, you may want to subscribe to my RSS feed. If you'd prefer, you can also receive my posts directly to your e-mail. Thanks for visiting!
Karl Wiegers’ Requirements Bills of Rights and Responsibilities of Software Customers are great in helping business stakeholders that are new to the requirements gathering process understand what the requirements analyst needs from them, and what they, as the customer should expect of the analyst. I’ve listed the bills of rights below:
Requirements Bill of Rights for Software Customers
As the customer, you have the right to:
- Expect analysts to speak your language.
- Expect analysts to learn about your business and your objectives for the system.
- Expect analysts to structure the information you present during requirements elicitation into a written software requirements specification.
- Have analysts explain all work products created from the requirements process.
- Expect analysts and developers to treat you with respect and to maintain a collaborative and professional attitude throughout your interactions.
- Have analysts and developers provide ideas and alternatives both for your requirements and for implementation of the product.
- Describe characteristics of the product that will make it easy and enjoyable to use.
- Be given opportunities to adjust your requirements to permit reuse of existing software components.
- Receive good-faith estimates of the costs, impacts, and trade-offs when you request a change in the requirements.
- Receive a system that meets your functional and quality needs, to the extent that those needs have been communicated to the developers and agreed upon.
Requirements Bill of Responsibilities for Software Customers
As the customer, you have the responsibility to:
- Educate analysts and developers about your business and define business jargon.
- Spend the time that it takes to provide requirements, clarify them, and iteratively flesh them out.
- Be specific and precise when providing input about the system’s requirements.
- Make timely decisions about requirements when requested to do so.
- Respect a developer’s assessment of the cost and feasibility of requirements.
- In collaboration with the developers, set priorities for functional requirements, system features, or use cases.
- Review requirements documents and evaluate prototypes.
- Communicate changes to the requirements as soon as you know about them.
- Follow the development organization’s process for requesting requirements changes.
- Respect the process the analysts use for requirements engineering.
Reference: Wiegers, Karl E, Software Requirements, Second Edition, 2003, Microsoft Press, page 32.
If you found the bills of rights helpful, I’d certainly recommend grabbing a copy and perusing the rest of the book. He just does a good job of defining and breaking down process.
There are lots of other more theoretical and “heavier reads” available on requirements engineering - and I probably have most of them. They all have their value, and their place. I typically refer to the Wiegers book, though, for quick reference and practical, intuitive breakdowns of the steps of the requirements engineering process.
While I’m stuck on Wiegers, you may also want to check out his Website, Process Impact, where he provides lots of software process tips and tricks, including some free “goodies” as he refers to them.








