In this blog post, Ralf Westphal explains how functional design and test-driven development (TDD) are the techniques that allows to bridge the gap between requirement and code in Agile.
He defines a three phase process:
1. Analyzing the requirements but not only to understand what the customer wants, but also to slice the user’s needs into finer increments.
2. Using functional design that emphasizes the technical side of data flows, their building blocks, which are functions.
3. Coding the list of functions that have to be implemented.
Its conclusion is that “Considering all the details of an implementation of required behavior is a daunting task. That´s why we need a systematic way to approach it starting from requirements and leading to logic. To me that´s a three phase process starting with an agile analysis resulting in fine grained increments meaningful to customers and developers alike. Then moving on to designing a solution from the increment “powder” in the form of data flows, since they allow us to reason about it on a pretty high level of abstraction. And finally coding individual functional units of those data flows in a test-first manner to get high test coverage for the myriad of details.”
Read the complete blog post on http://geekswithblogs.net/theArchitectsNapkin/archive/2014/09/27/how-agility-leads-to-functional-design-and-even-tdd.aspx