Domain requirements are derived from the application of the system rather than from the specific needs of system users. They usually include specialized domain terminology or reference to domain concepts.
They may be new functional requirements in their own right, constrain existing functional requirements, or set out how particular computations must be carried out. Because these requirements are specialized, software engineers often find it difficult to understand how they are related
to other system requirements.
Domain requirements are important because they often reflect the fundamentals of the application domain. If these requirements are not satisfied, it may be impossible to make the system work satisfactorily. The LIBSYS system includes a number of domain requirements:
- There shall be a standard user interface to all databases that shall be based on the Z39.50 standard.
- Because of copyright restrictions ns, some documents must be deleted immediately on arrival. Depending on the user’s requirements, these documents will either be printed locally on the system server for manual forwarding to the user or routed to a network printer.
The first requirement is a design constraint. It specifies that the user interface to the database must be implemented according to a specific library standard. The developers, therefore, have to find out about that standard before starting the interface design. The second requirement has been introduced because of copyright laws that apply
To illustrate domain requirements that specify how computation is carried out, taken from the requirements specification for an automated train protection system. This system automatically stops a train if it goes through a red signal. This requirement states how the train deceleration is computed by the system. uses domain-specific terminology. To understand it, you need some understanding of the operation of railway systems and train characteristics.
The requirement for the train system illustrates a major problem with domain requirements. They are written in the language of the application domain (mathematical equations in this case), and it is often difficult for software engineers to understand them. Domain experts may leave information out of a requirement simply because it is so obvious to them. However, it may not be obvious to the developers of the system, and they may therefore implement the requirement in the wrong way.