  A new workflow for software development (proof-driven development) is
presented. An extension of test-driven development, the new workflow utilizes
the paradigm of dependently typed programming. The differences in design,
complexity and provability of software are discussed, based on the technique
used to create the system. Furthermore, the difference in what properties can
be expressed in a proof-driven development workflow versus a traditional
test-driven development workflow or using test-last development.
