Admin note: Due to excessive spam I've removed over 10,000(!) bogus accounts and restricted account creation. If you would like an account please let me know on the BDD Google Group. Thanks --DanNorth
It brings together strands from TestDrivenDevelopment and DomainDrivenDesign into an integrated whole, making the relationship between these two powerful approaches to software development more evident.
It aims to help focus development on the delivery of prioritised, verifiable business value by providing a common vocabulary (also referred to as a UbiquitousLanguage) that spans the divide between Business and Technology.
It presents a framework of activity based on three core principles:
Business and Technology should refer to the same system in the same way - ItsAllBehaviour
Any system should have an identified, verifiable value to the business - WheresTheBusinessValue
Up-front analysis, design and planning all have a diminishing return - EnoughIsEnough
BDD relies on the use of a very specific (and small) vocabulary to minimise miscommunication and to ensure that everyone – the business, developers, testers, analysts and managers – are not only on the same page but using the same words.
It must be stressed that BDD is a rephrasing of existing good practice, it is not a radically new departure. Its aim is to bring together existing, well-established techniques under a common banner and with a consistent and unambiguous terminology. BDD is very much focused on “Getting the words right” and this focus is intended to produce a vocabulary that is accurate, accessible, descriptive and consistent.
In fact “Getting the words right” was the starting point for the development of BDD, and is still very much at its core, but the power of getting the words right has led to some insights and extrapolations that have helped us to better understand our approach and to extend it.
Feel free to edit anything you find to make it clearer or to add your opinion (and sign with YourName if you like).
Interesting starting points:
Introduction : A brief overview
The BDDProcess : A description of a development process using BDD
BehaviourDrivenAnalysis : How do we approach analysis for BDD?
BehaviourDrivenProgramming : What changes do we make to our approach to programming?
More DescriptionsOfBDD : other ways of describing the cat-skinning process
Implementations : Tools for implementing BDD.