Fork me on GitHub


Type in Requs is a creature similar to a class in object-oriented programming. Type has slots and parent types:

Image is File.
Image has:
width as "pixels",
height as "pixels", and
format as "PNG, GIF, JPEG, etc".

Type names are in CamelCase Notation. For example, these words are valid type names: Image, ImageFile, ImageInCustomFormat, GIFImage, PNG.


A type may have a number of slots. A slot is something similar to a private property of a Java class, for example. The syntax is simple, in BNF:

<type> ::= <camel> ( "has" | "needs" | "requires" | "includes" ) ":" <slots> "."
<slots> ::= <slot> (  ( "," | ";" | "and" ) <slot> )*
<slot> ::= <name> ( "as" <informal> )?

Good and Bad Types

Very often we make mistakes when declaring a new type or modifying an existing one. Read them carefully and try to avoid in your SRS documents.