@ (1)
http://alistair.cockburn.us/Hexagonal+architectureI came across this years ago on the c2 wiki, and feel the same about it today that I do now.
@ They advocate a separate layer between the GUI and the domain
All this stuff has a common theme. No code. No proof of clear thinking, At least drawing out a collaboration diagram, class diagram, etc. Discussing things in terms of variations of canonical GoF diagrams would help, as well.
Furthermore, none of these "architectures" actually give guidance on partitioning your development team and therefore choosing how to split up the gross application structure such that the end-results of multiple teams can be seamlessly integrated.
They also don't reflect real world realities, such as how services are allowed to communicate with the client. For instance, is your application request/response driven? If so, why? Are you writing a batch compiler that has to build Windows 7 source code? If so, then non-interactive fits your requirements. In the compiler marketplace, interactivity would create overhead (slowness) and would be negligent design. Are you writing a web application? If so, then how do you build an event-driven model on top of the web's inherent request/response driven model? How do you manage memory across tiers and layers? Do you just stick all memory ever requested into the HTTP Session object until the session expires?
Teaching programmers to think is a scary idea, because most people lack the ability to think new thoughts... but it is more likely to solve real world problems than draping buzzword-compliant mega-patterns over your design documents.
Sometimes vague ideas are good, other times they are mostly bad and irritating. In
Society of Mind, Marvin Minsky has a chapter dedicated to his famous paper on programming "frames". He points out that his real contribution was that he was specific enough to give people ideas of their own, but vague enough to allow room for interpretation and creative applications.