Definition: Static Requirements Analysis is the automated testing of software requirements for quality and measurement.
Software requirements, or user stories, are written statements describing the functional need and purpose of software to be developed; what brings value to users. The authors of user stories will typically write them from the perspective of a business user. It is then the job of the developer to read the requirements, and design and code to meet these needs. The written requirements or user stories are therefore a means of communication. In agile teams the user story is a placeholder for a conversation, nevertheless it needs to convey sufficient meaning that the reader can adequately understand, without ambiguity, what functionality is needed. If poor choices are made in the wording of the stories, then communication can become mis-communication. Poor wording leads to misunderstandings that lead to design and coding mistakes. These mistakes lead to rework and/or bugs. Bugs that are not found until later in the development cycle can cause a lot of extra work and therefore are very costly.
Static Requirements Analyser
ScopeMaster® is a text analyser tool that has been designed to test written requirements for quality and insight. It may sound strange that a machine can test requirements, but it can. (That is precisely what ScopeMaster® has been designed to do.)
Back in the 1990’s Nasa created the ARM tool that was recreated, for basic requirements text testing. Nowadays we have more computing power available and are able to perform more advanced testing of requirements. IBM has recently 2018 released the IBM Requirements Quality Assistant for Doors This is a trainable extension to their requirements management tool that tests for common language errors in written requirements. ScopeMaster® goes far beyond these early tools and combines Natural Language Processing (a detailed analysis of the wording and sentence structure) together with 15 other levels of analysis, in order to give insight into the quality and size of written requirements.
Insight from Static Analysis of Requirements
The insight achievable by analysing Individual Requirements includes:
- Identify types of words (nouns, verbs, adjectives)
- Links between words (dependency chain)
- Intent from a data manipulation perspective.
- Ambiguity caused by failure to use language appropriate to software construction.
- Size Measurement by detecting the data movement intent
- Patterns of usage of words
- use and misuse of word types
Insight achievable by analysing Sets of Requirements
- Consistency in naming of nouns
- Duplication of intent
- Potential missing requirements
- Data dictionary
Static Code Analysis and Static Requirements Analysis
More and more developers include static code analysis as a technique for testing code early. This testing becomes part of the daily activity of preparing software for deployment. Static code analysis helps to identify potential causes of problems before they are exposed to anyone else (testers, users) so that they can be resolved quickly and efficiently. The same is true of static requirements analysis, it is a very useful technique to find and fix problems before they are exposed to others in the team.
Most static code analysis becomes part of a continuous build process. This idea can also apply to requirements except that every time a requirements statement changes, it should be re-checked for being unambiguous and (compared with other user stories) for consistency, duplication and omissions across the set of requirements.
One of the most powerful features of automated requirements analysis is the dynamic auto-creation of use case model diagrams that are a visual means of interpreting the meaning of your set of user stories.