What Are Behaviour Specifications?
Behaviour Specifications conveniently and efficiently fulfil multiple purposes:
- Written in everyday business language, they comprehensively and unambiguously specify the required functionality to be delivered, as agreed by the team;
- They are the specifications that developers should refer to when they write code. The only code that should be written by a developer is code to satisfy the Behaviour Specifications. Remember this little motto: "No Behaviour Specification? No Code! No Test!";
- They also represent the complete set of test cases that are needed for the given functionality;
- They are the living, up-to-date, as-built documentation, for the entire team (and potentially other parts of the business), about the functionality of each software component; and
- When implemented as automated tests, they are the executable documentation that becomes part of a suite of test assets.
Behaviour Specifications are NOT part of a formal requirements document or legal contract — they are as-built documentation and test assets. As discussed in Prerequisites, requirements are a prerequisite input for the process of specifying behaviours.