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: * http://behaviour-driven.org/ * http://en.wikipedia.org/wiki/Behavior_driven_development Tools: * FitNesse for Java, C++, C#/.NET, Python, Ruby, Delphi, etc.: http://www.fitnesse.org/ * CppSpec for CeePlusPlus: http://www.laughingpanda.org/projects/cppspec/ * RSpec for RubyLanguage: http://rspec.rubyforge.org/ * JayBehave for JavaLanguage: http://jbehave.org/ * JsSpec for JavaScript: http://jania.pe.kr/aw/moin.cgi/JSSpec * CucumberFramework for RubyLanguage http://cukes.info/ * LettuceFramework for PythonLanguage http://lettuce.it/ * MoreliaViridis for PythonLanguage * CSpec for C: http://github.com/arnaudbrejeon/cspec/wiki * Concordion for Java, C#/.NET, Python, Ruby: http://concordion.org A lot more different tools are described here: http://en.wikipedia.org/wiki/Behavior_driven_development See also BehaviourDrivenDevelopment (which developed separately) ---- CategoryFramework