Don't Think in Dialogs, Interactions and Features! Use Models Instead!

For some days I read an article in ObjectSpektrum by Ralf Westphal about his understanding of an agile architecture. As we know, there is no clear definition for that term, so the interpretation field is quite big, from design process up to continuous delivery. I was interesting what Ralf would like to say about agile architecture as I knew some of his interesting projects before (e.g. http://www.clean-code-developer.de/).

He rightly claims that there is a gap between requirements and, what he calls, logic (understood as implementation). Agile architecture should help to reduce this gap. This requirements are defined with the help of User-Stories, that mostly do not have direct mapping in the software structure. They have to be transformed into containers with logic, called modules. He reasons that these modules exist in various forms, from small functions, throw-out classes and libraries, up to services. This is however a quite technical view on a software system, so Ralf created another model that is defined as follows (with respect to the first one):
  • Software system
  • Applications of a software system (map to services)
  • Dialogs of an application (map to classes)
  • Interactions of a dialog (map to functions)
  • Features of a interaction (map to functions as well)
This second model is used to correlate User-Stories with its "module-oriented increments" which can be in turn, as described above, mapped into modules:

Pic. Correlation between User-Stories and module-oriented increments by Ralf Westphal

I have seen lot of systems built like this, and in my opinion it is not a proper way for designing a software system where an agile architecture is used in context of closing the gap between requirements and logic.