Introduction
Software applications should satisfy the requirements. To put it in reverse, requirements drive the development. Every requirement should have a test for it that checks that the requirement is implemented properly. Any code that does not satisfy a requirement (functional or non-functional) is not needed.