Wednesday, January 24, 2007

Software Architecture - Zoom In Zoom Out

We have been very busy designing and skeleton-ing out a large system.

It is difficult because there are so many components, so many services to integrate with, and so many potential knobs to turn. This is not a web app and a database. This is a biggin. Getting the partitioning in the right places is crucial.

When I am in the details I panic that I can't see the forest from the trees.

When I am at 20,000 feet, I panic because modeling and hand-waving doesn't cut it.

The only solution of course is to alternate between zooming in and out like this until you are done.

I got a third of the way through my Masters of Software Engineering at OMSE before I "paused" to join an OSS ESB startup (now defunct). I learned a couple of things there - one topic that I retained and applied is Views.

I went back to this today because I had the "too much detail panic". I came across and ordered Software Systems Architecture which looks quite good. Take a gander at the Quick Reference Card (requires you to give up an email address).

I like the looks of it because it builds on the "views" concept and gives some more detail (i.e., perspectives). Anyway, unless someone comes up with a better idea, I will just create the hierarchy with the viewpoints and perspectives in our wiki and then I think I will feel better zooming in and out as I will have some structure and cross reference. Perhaps it will start to become paint by numbers at some point.

Let me know if you have other ideas.

5 comments:

Gabriel Gonzalez said...

First off, congratz for your blog, you spread interesting ideaos over it.

I am not sure why are you "in panic". Are you designing a new system and want to make it easier understand it insights?
Are you just working extending an older one so you have to get the whole picture of the system?

I often find useful doing a vetical cut to the system and look at it as a stack of layers from requirements to code :)

fuzzy said...

Hi Gabriel,

Thanks for the comment.

I'm just high strung that is all - panic is a more descriptive word :)

It is a large new system.

Yes vertical cut is a good description of what we are doing. That is what I meant when I said, "zoom in". When we zoom in, we are writing actual code as proofs of concept etc. The "zoom out" is where we model things.

Rebecca said...

I find the notion of views and perspectives on those views (perspectives being concerns that cut across various views) to be quite helpful in sorting out how to describe/define architecture. Software Systems Architecture by Nick Rozanski and Eoin Woods is a book that describes this.

Cheers,
Rebecca Wirfs-Brock

fuzzy said...

Thanks for the comment Rebecca.

Yep, that is the book I referenced in the post.

I have since received it and concur - it is quite good.

JT said...

Software Systems Architecture is a very good book for architects. I have it and refer it to peers. My only complaint is that the terms: view, viewpoint and perspective semantically sound like synonyms. The idea of testing your design with scenarios is critical to validate and breed understanding.
Cheers,
-JT