Thursday, September 10, 2009
I spent the last week and then some preparing a "Layers" presentation. The focus was to try and get away from what's been taught 20 years ago and the 3-tier UI-BL-DL structure.
My first attempt was to concentrate on why software was organized at all. It's to manage growth. You don't need any structure if you have a very simple system. With growth comes a demand that goes beyond the organization of the logic. Most modern architecture topics deal with the growth of data that companies need to manage. On top of that is the other -ilities.
So, scalability and the layers was going to be it. I guess it fell too much on the database at first. The other layers got the raw end of the deal. But wait. That would have been irresponsible.
The truth is that the structure of such companies is really now a system of systems. Each system may be a cake or a few. The trick is now looking at what sits on top of the shards, document dbs, object dbs, etc.
So the presentation really turned into an SOA talk with some Domain Driven Design. By diving deeper, the Domain Driven Design turned out to be a vortex with one idea relying on the other - not unlike mathematics: If you want to learn calculus, you better know basic algebra.
So back to the basics it was: MVP, MVC, MVVM, Transaction Script, Active Record, Domain Model, Data Access and ORM - touching on DbC, DDD and SOA for the second half. I'm happy that I got to use napkin doodles for my diagrams - UML belongs on those things. An MVP diagram looks better next to a coffee cup stain anyway. MS will probably clean all this up :-/
I don't know. Maybe I'm too tired at this point in the night. I didn't manage to work GIT in to the presentation. Next time.