Extracted from: STSC (Software Technology Support Center) CrossTalk
1. Write and iterate a project vision and scope document.
2. Initiate a project glossary that provides definitions of words that are acceptable to and used by customers/users and the developers, and a list of acronyms to facilitate effective communication.
3. Evolve the real requirements via a "joint" customer/user and developer effort. Focus on product benefits (necessary requirements), not features. Address the minimum and highest priority requirements needed to meet real customer and user needs.
4. Document the rationale for each requirement (why it is needed).
5. Provide training for requirements analysts and selected customer/user representatives that explains the following:
- The role of the requirements analyst.
e.g. to evolve real requirements working with customers & users, not to invent requirements independently or to "gold plate".
- How to write good requirements.
- The types of requirements errors and how these can be reduced.
- The value of investing more in the requirements process.
- The project and/or organization's requirements process.
- Overview of the methods and techniques that will be used.
- How to use the project's automated requirements tool.
- The role of validation and verification during requirements definition.
6. Establish a mechanism to control changes to requirements and new requirements.
7. Prioritize the real requirements to determine those that should be met in the first release or product and those that can be addressed subsequently.
8. When the requirements are volatile (and perhaps even when they are not), consider an incremental development approach. This acknowledges that some of the requirements are "unknowable" until customers and users start using system.
9. Use peer reviews and inspections of all requirements work products.
10. Use an industry-strength automated requirements tool.
- Assign attributes to each requirement.
- Provide traceability.
- Maintain the history of each requirement.
11. Use requirements gathering techniques that are known, familiar, and proven in the organization such as requirements workshops, prototyping, and storyboards.
12. Provide members of the project team (including requirements analysts) who are domain/subject matter experts.
13. Evolve a project and organizational approach based on successful use of policy, process, methods, techniques and tools. Provide a mechanism such as working groups to share information and "best practices" among projects.
14. Establish a continuous improvement ethic, teamwork approach, and a quality culture.
15. Involve customers and users throughout the development effort.
16. Perform requirements validation and verification activities in the requirements gathering process to ensure that each requirement is testable.