Despite the advances in software engineering since 1968, current methods for going from a set of functional requirements to a design are not as direct, repeatable and constructive as we would like. Progress with this fundamental problem is possible once we recognize that individual functional requirements represent fragments of behaviour, while a design that satisfies a set of functional requirements represents integrated behaviour. This perspective admits the prospect of constructing a design out of its requirements. A formal representation for individual functional requirements, called behavior trees makes this possible. Behaviour trees of individual functional requirements may be composed, one at a time, to create an integrated design behaviour tree. From this problem domain representation it is then possible to transition directly and systematically to a solution domain representation of the component architecture of the system and the behaviour designs of the individual component...
R. Geoff Dromey