This site supports a repository for commonly-used boilerplates for requirements statements. Users are encouraged to copy-and-paste boilerplates they would like to use, and to submit new ones to the site. The use of boilerplates helps in knowing how to express certain kinds of requirement in a consistent language. By always referring to existing boilerplates first, a uniformity of expression can be achieved. With the right tool support, the way whole groups of requirements are expressed can be changed in a single step.







   Webmaster: jeremy.dick @ (Images courtesy of Toon-a-day)


The concept of using boilerplates for writing statements of requirement is quite simple: choose an appropriate predefined template, and fill in the gaps. Each statement of requirement then becomes a generic boilerplate plus the specific values of selected attributes.

Example boilerplate:

    The <user> shall be able to <capability>
    at a maximum rate of at least <quantity> times per <time unit>.
Example instantiation:
    <user> = order entry clerk
    <capability> = raise an invoice
    <quantity> = 10
    <time unit> = hour
    "The order entry clerk shall be able to raise an invoice
    at a maximum rate of at least 10 times per hour."

Using this approach, an organisation can gradually refine a repertoire of ways of expressing all the kinds of requirement it needs. By encouraging engineers always to choose from the repertoire, a uniformity of style can be achieved in the organisation.

Goto Top


  • An aid in articulation. Being able to draw upon a palette of classified boilerplates helps in finding effective ways of expressing particular kinds of requirement or constraint.
  • Uniformity of language. By always considering the reuse of existing boilerplates, the same kinds of requirement will always be expressed in the same kinds of way, leading to a consistent use of language in expressing requirements. Collecting key values in attributes can also encourage consistent use of expression.
  • Abstraction of key values. When expressed as a boilerplate plus attribute values, each attribute that participates in the boilerplates becomes an enumeration, for instance, of all the "modes of operation", or all the "functions" of the system. This can help considerably in processing and modelling the requirements.
  • One-stop control over expression. With effective tool support, global changes in the way requirements are expressed can be effected by just changing the boilerplate in one place. e.g. changing "will" to "shall".
  • Protecting classified information. Often the only part of a classified requirement is the quantity associated with it – e.g. the speed of the vessel, the rate of fire. Using boilerplates, the classification can be focussed on just the secret attributes, allowing the rest of the requirement to be viewed for non-restricted use.

Goto Top


The major function of this website is to act as a resource to those wishing to use requirements boilerplates. It contains a list of boilerplates that can be copied for use in projects, and encourages you to submit new boilerplates for inclusion in the respository.

To view the repository, click here: VIEW BOILERPLATE REPOSITORY

Goto Top


For DOORS users, there is a set of scripts that provide support for the use of boilerplates. These scripts allow requirements to be constructed from boilerplates by:
  • linking to an object in a document containing boilerplates;
  • using a special editor to fill out the attribute values;
  • viewing the complete requirement in a special view.

Download the instructions
Download the scripts
Download the example DOORS project archive

If for some reason these downloads do not work, then please email: jeremy.dick @ me.

Goto Top