Page 121 -
P. 121

should not be out of order. However, it is unlikely that the text will be read that way. In
                          this case, all of the developers will almost certainly understand what the requirements
                          analyst meant when the text was written, and writing the extra explanation into the
                          requirement could make it more confusing.
                          The requirements analyst has a great deal of discretion about how to break requirements
                          up. For example, the example above could potentially be broken into two separate
                          requirements, with one requirement allowing for a case-sensitive search and another
                          specifying that the replacement text needs to retain the case of the original text when the
                          search is not case-sensitive. A good general rule is that requirements should only be split
                          up when that split offers more clarity. In this case, a split probably would not make the
                          requirement any clearer, so keeping these together makes sense.
                          Many requirements define behavior that the user can turn on or off (like the user’s ability
                          to specify a case-sensitive search in the example). In this case, the requirement should
                          always specify the default behavior (in the example case, the default search is case-insen-
                          sitive). Requirements often specify behavior that only occurs under certain conditions
                          (like the conditions in which the case is retained). It is also important to specify a fall-
                          through case to show what happens if none of the specified conditions are met (“In all
                          other cases…“).
                          As with the use case, the requirements should not contain any design elements. The
                          requirements analyst should avoid words like window, button, click, checkbox, radio but-
                          ton, form, etc. For example, many search-and-replace features use a checkbox to imple-
                          ment context-sensitive searching. But there is no need to require that the designer use a
                          checkbox—it’s possible that an innovative designer might come up with a better way to let
                          the user turn on case-sensitive searching (like with two separate buttons, a radio button, a
                          separate tab, or some other way that isn’t immediately obvious). Leaving the design
                          unconstrained allows the designers and programmers more freedom to implement the
                          requirements creatively. The more that the design is constrained in the SRS, the harder it
                          makes their jobs.

                          Nonfunctional requirements

                          Users have implicit expectations about how well the software will work. These character-
                          istics include how easy the software is to use, how quickly it executes, how reliable it is,
                          and how well it behaves when unexpected conditions arise. The nonfunctional requirements
                          define these aspects about the system. (The nonfunctional requirements are sometimes
                          referred to as “nonbehavioral requirements” or “software quality attributes.”)

                          The nonfunctional requirements should be defined as precisely as possible. Often, this is
                          done by quantifying them. Where possible, the nonfunctional requirements should provide
                          specific measurements that the software must meet. The maximum number of seconds it
                          must take to perform a task, the maximum size of a database on disk, the number of hours
                          per day a system must be available, and the number of concurrent users supported are
                          examples of requirements that the software must implement but do not change its behavior.


                                                                                   SOFTWARE REQUIREMENTS  113
   116   117   118   119   120   121   122   123   124   125   126