Software Requirements - The Missing Link? Whether you are working in a traditional or Agile manner; developing a small software system or a multi-year effort with a large budget, all software projects begin with software requirements. Specifying software requirements not only provides a framework for the design but is the most valuable documentation produced during the lifetime of the project. Even in Agile projects, well-written story requirements promote collaboration and accuracy across all stakeholders including development, testing, and product management. Why focus on Software Requirements? In many projects and clients that we work with, delays and subsequent problems are impacted by requirements in some way. Changing software requirements are supposed to be welcome in Agile, but the changes often generate problems due to poor communications, lack of clarity, and completeness. Rework, many hours of overtime, and late-cycle discoveries in software testing can all be avoided with an improved focus on software requirements. Using an Agile methodology can help improve timelines and reduce development costs by including QA earlier in the process. Testing each phase, ensuring requirements are measurable and well-defined, and testable, followed by tracking their progress across systems and phases/time ensures traceability to business objectives. The CHAOS Reports from The Standish Group report that three of the biggest reasons for project failure are: \tLack of user input \tIncomplete requirements and specifications \tChanging requirements and specifications In one survey, 78% of respondents feel that the business is out of sync with project requirements and that business stakeholders need to be more involved in the software requirements process. Creating useful and valuable quality software that delights customers begins with the software requirements. Additionally, providing a solid foundation of requirements documentation on a new project will save money and increase efficiency when building the next project. Why are software requirements hard? "The most difficult part of requirements gathering is not the act of recording what the user wants, it is the exploratory development activity of helping users figure out what they want." -- Steve McConnell Figuring out what users want is the hard part. And as discovered using the Waterfall development process, sometimes users don’t know or can’t express what they want. Hence Agile was born to iterate working software so that users can determine what they want. “Users” is a broad term and could involve real end users, but really involves any stakeholder involved in developing the software. Hence, requirements are the intersection of many parts and roles of a project. Each of these has its own priorities and champions. Sometimes conflicting priorities combined with different communication techniques and methods can lead to chaos. As we’ve seen with several clients, the root of their software development and quality assurance issues oftentimes starts with requirements. Software Requirements Management Hence, there is an entire industry in both services and software built on the need to effectively manage requirements. At XBOSoft, our focus is on providing services that improve software quality. Of course, one of the core services is software testing. However, another service that we provide is requirements management. As such, we work with clients to improve their requirements and thus REDUCE THE NEED FOR SOFTWARE TESTING! As such, we work with and are quite familiar with several tools in requirements management. Managing software requirements requires a framework applied consistently throughout the organization. Some of the tasks in requirements management include: \tDefining Business Requirements \tIdentifying Project Stakeholders & User Classes \tEliciting Requirements \tAnalyzing Requirements for unstated, vague, or inconsistencies \tWriting requirements specifications \tModeling Requirements \tLeading Requirements Validation \tFacilitating Requirements Prioritization \tManaging Requirements Change A good requirements analyst has experience with the following skills: Listening Interviewing Analytical Skills Facilitation Observation Writing Organization Modeling Creativity Collaboration Influencing Cultural Understanding A requirements analyst is a role that may vary from project to project. So, it is important for the organization to have a standard requirements analysis process and for all involved to understand requirements management. Benefits of Well-Structured Software Requirements Processes Combined with Proficient Skills \tWays to use QA to provide more testable requirements \tMethods for finding the right stakeholders & user roles \tProcesses for eliciting requirements \tMethods to model and analyze written documents for missing or incorrect requirements \tCreating a requirements management plan \tImproved management and traceability of requirements \tReducing time spent discovering problems in UAT So, when you’re driving down the Agile road at full speed, don’t forget the importance of requirements. Focusing on quality requirements can reduce the cost of development, improve project timelines, reduce the need for software testing, and ultimately lead to happier and more satisfied users.