Two major, interconnected tasks essential to the value and quality of a software application are
• Helping to think about and communicate through concrete examples what is needed in a software application
• Automatically testing, from a business perspective, that the application is doing what is expected and that it continues to do so as it grows in functionality
Often, however, these two tasks are carried out poorly, leading to breakdowns in each step along the way from an identified business need to a running application.
• The business needs are not well understood by those who want the system, owing to a lack of a clear way of thinking about these needs and, more generally, of communicating ...