A merging of the concepts of TestDrivenDevelopment and DomainDrivenDesign. It aims to solve some of the barriers to acceptance and entry into TDD by using concepts that more accurately reflect the intent of the process. For instance, although TDD makes your code very well tested, this is really just a nice side effect. What we're primarily after is to design incrementally, by "specifying" the "behaviors" the code should have, and do so in a manner that can be automatically verified to show that the specification has been implemented.
Reading:
Tools:See also BehaviourDrivenDevelopment (which developed separately)