specification language providing a formal grammar to specify behaviour and interfaces for computer software