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:
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 :)
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.
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
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.
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
Post a Comment