GileadGreene writes: Test-Driven Development is widely accepted as practice that can lead to better software that's more likely to meet its requirements. Some people like to talk about test suites as "executable specifications", and the recent buzz about Behavior-Driven Development largely seems to be about making tests focus more on specification rather than implementation details. The logical progression is to what might be termed Specification-Driven Development, in which formal verification techniques such as extended static-checkers and theorem-provers are combined with design-by-contract tools and test-driven development to provide much more comprehensive validation and verification suites. Shades of this approach can be seen in MS Research's Spec# project, as well as some of the work by the JML and ESC/Java2 teams. Meanwhile, the ESpec project at York University is developing tools that will allow developers to write testable specifications at all stages of software development process, and create specification items such as unit tests, contracts and acceptance tests as early as possible. Will the momentum surrounding TDD and BDD allow Specification-Driven Development to gain acceptance with the wider developer community? Will the use of more rigorous analyses during software development finally allow software engineering to gain broad acceptance as a "real" engineering discipline?