|
|
||||||||||||||||||||
| Home > Software Quality News > The importance of testing software requirements | |
| Software Quality News: |
|
||
Software that performs well is useless if it ultimately fails to meet business user requirements. But while research study after research study shows that requirements errors are the number one cause of software project failures (costing U.S. companies approximately $30 billion a year in total1), many organizations continue to deliver requirements that are unclear, ambiguous or incomplete. These erroneous requirements then go on to be tracked, traced and perfectly executed, resulting in a system that "does what was required" but unfortunately doesn't do what business users thought they asked for. The problem is that organizations fail to apply the same rigorous testing processes to requirements development as they do to software development. This is a mistake, as the cost of identifying critical errors during requirements development is exponentially less than errors that are uncovered after coding begins.2 Why is it so difficult to get requirements right? How often have stakeholders in your organization signed off on use cases they haven't read because there was simply no time to delve into a document the size of an average phone book? What about those marathon meetings where everybody hammers out requirements definitions in one room only to come out even more confused about what's really needed because developers see the world one way and business users another? For too long now, rigid, disjointed and time-consuming processes for requirements development have left little room for effective collaboration between business and IT stakeholders, or to accommodate the inevitable changes that crop up. The body of best practices associated with software testing is comprehensive -- there's even an ISO standard associated with software evaluation. In contrast, requirements testing is often carried out in an ad-hoc manner, using outdated or impractical methods that leave a lot of room for error and miscommunication. That has to change. Following are some key "best practices" for ensuring that requirements are as complete and accurate as possible, at all stages of development: Know where your problem is
Furthermore, validation is also frequently misunderstood. For example, a number of organizations confuse the idea of requirements "management" with validation. A recent Forrester report cogently noted that the focus on -- and availability of -- tools that manage requirements during the software development process is detracting attention from the far larger problem of whether or not requirements are accurate in the first place. Simply managing requirements -- no matter how well this is done -- will still result in the age-old problem of "garbage in -- garbage out."3 The same goes for UI prototyping and simulation tools. Also mistaken for methods of requirements validation, these tools help stakeholders "see" the finished user interface, serving up a visual preview of how users will navigate the system. While prototyping addresses the question of "How will this look once we get it done?" true requirements validation answers the question: "What do we want the software to do?" An iterative process is best That is problematic because most development today is iterative -- i.e., based on the idea of building software incrementally. Lessons learned during development are thus integrated into the project during the beginning of every new "iteration," with the goal being an end product that is more stable and resilient. As a result, it is wise to assume that requirements will change as the project moves through development, for at least two reasons: one, the process of doing iterative development allows us to learn about the system as we built it, thereby refining our notion of what the requirements should have been, and, two, the outside world is changing concurrently, imposing adjustments that can not be ignored. Thus, a continuous and cumulative cycle of ongoing requirements validation is critical to maintaining quality. Bridge the communication gap Use visualization to "see what was said" As a result, a relatively small number of use cases are actually translated into models, for reasons of cost, convenience and time. That is a shame because the translation of textual use cases into visual models, properly done, is an excellent way to bridge the communication gaps that are inherent in requirements validation. Automation can play an important role in this respect, serving as a "neutral" and consistent translator of words into visuals. The ability to automatically generate visual models from English use cases can help bring all stakeholders into the process -- from the domain expert on through to the software engineer -- while still allowing them to work in a language that is most comfortable to each. Visual representations, for example, can help business analysts "see" errors and inconsistencies that are difficult to spot in text form. At the same time, automation relieves software engineers of having to slog through hundreds of pages of textual requirements. Linking text to the visual is key here, allowing words and pictures work with, rather than against, each other. Respect the business analyst But validating requirements is just a small part of the business analyst's job. It is important to recognize that the business analyst is a highly valuable, yet highly constrained, resource. Accordingly, this individual must be armed with tools that make the validation process less cumbersome, more efficient and easier to track. Track all communication and feedback Imagine a "My Space"-style application that brings business stakeholders and developers together, providing a single place where everyone involved in requirements validation can go to review and comment on the specification draft. Now imagine that every comment, change and requirement iteration is tracked and archived in this single repository. It is easy to see the enormous improvements to accuracy, transparency and efficiency that this can bring to the requirements process, as everybody can easily see the entire history, who had a finger on which part, and where various comments rate in importance on the requirements "food chain." The last thing anyone wants to have to do when the project clock is ticking is rummage around in vain for that critical Post-It that was attached to page 326 of a 500-page document or search through thousands of emails to find the change suggested by a key business stakeholder. Furthermore, the right collaboration tool can also help project teams maximize the time of constrained resources like subject matter experts (SMEs). For instance, if the vice president of customer service can devote only six hours to a specific IT project, it is important that this contributor is able to provide his input quickly and easily and that other project stakeholders can call up this input just as quickly and easily when they need to refer back to it. Requirements errors cost organizations a great deal in terms of dollars, resources and time. To mitigate these costs, requirements should be tested for precision and accuracy both before coding begins and as part of an iterative process that runs parallel with ongoing development. Requirements validation is critical to achieving better software quality, but all too often it is a process that gets rushed or overlooked. Taking the time to "get it right" -- by addressing communication issues, involving all stakeholders and applying consistent, reliable best practices for validation -- should not be viewed as an unwelcome delay, but rather as a necessary part of development that will ultimately offer the best chance for improving time-to-market and end results. ----------------------------------------- End notes
'); // --> |
|
||||||||||||||||||||||||||||||||||||||||||||
| About Us | Contact Us | For Advertisers | For Business Partners | Site Index | RSS |
|
|
|
|||||||