We explore how software can help address a business problem by asking, what are known as, PowerfulQuestions. This technique is intended to develop insight, and allows us to explore new avenues and better understand existing ones.

We approach BehaviourDrivenAnalysis in a structured way to minimise the risk of missing anything useful. Use Cases are a useful tool for establishing the boundaries of a system, in the sense of understanding what the system is (and more importantly is not) responsible for. A UseCase in this context describes an Actor (someone or something in a Role) interacting with some exposed interface to our system.

The important distinction between behaviour-driven Use Cases and the traditional Rational version is that the Use Case must specify the business value of the interaction. At this level the description of the value can be quite broad or vague, but it must be there (because we will drill down into it later). We use Use Cases as a launching point to understand the value at a finer level of granularity, which in turn allows us to prioritise the delivery of functionality as we go along. We talk about prioritising later on, when we discuss BehaviourDrivenPlanning.