Page 100 -
P. 100

Chapter 4   Requirements engineering  83


                                       The requirements for a system are the descriptions of what the system should do—
                                       the services that it provides and the constraints on its operation. These requirements
                                       reflect the needs of customers for a system that serves a certain purpose such as con-
                                       trolling a device, placing an order, or finding information. The process of finding
                                       out, analyzing, documenting and checking these services and constraints is called
                                       requirements engineering (RE).
                                         The term ‘requirement’ is not used consistently in the software industry. In some
                                       cases, a requirement is simply a high-level, abstract statement of a service that a sys-
                                       tem should provide or a constraint on a system. At the other extreme, it is a detailed,
                                       formal definition of a system function. Davis (1993) explains why these differences
                                       exist:

                                         If a company wishes to let a contract for a large software development project,
                                         it must define its needs in a sufficiently abstract way that a solution is not pre-
                                         defined. The requirements must be written so that several contractors can bid
                                         for the contract, offering, perhaps, different ways of meeting the client organi-
                                         zation’s needs. Once a contract has been awarded, the contractor must write a
                                         system definition for the client in more detail so that the client understands and
                                         can validate what the software will do. Both of these documents may be called
                                         the requirements document for the system.

                                         Some of the problems that arise during the requirements engineering process are
                                       a result of failing to make a clear separation between these different levels of
                                       description. I distinguish between them by using the term ‘user requirements’ to
                                       mean the high-level abstract requirements and ‘system requirements’ to mean the
                                       detailed description of what the system should do. User requirements and system
                                       requirements may be defined as follows:

                                       1.  User requirements are statements, in a natural language plus diagrams, of what
                                          services the system is expected to provide to system users and the constraints
                                          under which it must operate.

                                       2.  System requirements are more detailed descriptions of the software system’s
                                          functions, services, and operational constraints. The system requirements docu-
                                          ment (sometimes called a functional specification) should define exactly what is
                                          to be implemented. It may be part of the contract between the system buyer and
                                          the software developers.

                                         Different levels of requirements are useful because they communicate informa-
                                       tion about the system to different types of reader. Figure 4.1 illustrates the distinction
                                       between user and system requirements. This example from a mental health care
                                       patient management system (MHC-PMS) shows how a user requirement may be
                                       expanded into several system requirements. You can see from Figure 4.1 that the
                                       user requirement is quite general. The system requirements provide more specific
                                       information about the services and functions of the system that is to be implemented.
   95   96   97   98   99   100   101   102   103   104   105