noun: (software engineering) A software development process that relies on the repetition of a minimal development cycle where the developer writes an (initially failing) automated test case that defines a desired improvement or new function, then produces the minimum amount of code to pass that test, and finally refactors the new code to acceptable standards.