I spend the majority of my day job designing applications and services, or refactoring the designs of existing applications (the latter is mostly the case). I design by modeling everything using UML and Visio (I know, Visio has its quirks with UML, but it gets the job done). This typically includes the following design artifacts:
- Class diagrams
- Sequence diagrams
- Business context diagrams
- System context diagrams
- Entity models
- Component diagrams
- Deployment diagrams
- Etc, etc
I put forth a lot of time and thought into these designs and at a certain point turn them over to the dev team so they can begin the implementation. The problem is that as soon as this exchange happens, the design documentation becomes obsolete. Why? Because the developers are too busy writing code to worry about updating the design docs when the need arises (i.e. an input parameter was missed on some method).
But the issue is not the developers, it's the fact that the software industry does not have a way to keep the models and code in sync. I know the Whitehorse stuff addresses some of this, but it's still a little ways off, and I doubt it's going to work with non-Microsoft technologies. And I don't know of any other software company that has or is working on anything like Whitehorse (if you know of any, please let me know by posting in the comments). So it seems to me that there is a real gap between the much needed design artifacts and the corresponding code.
Speaking of Whitehorse, I can honestly say that when I saw it for the first time at the PDC back in October, my mouth dropped open, and my immediate thought was: “This changes everything.”. I mean, it has lofty goals to be sure, but if Microsoft can deliver on 60%-80% of the proposed features for Whitehorse, it's going to be a huge win. And it starts to greatly close the gap I was talking about. For more about Whitehorse and the modeling goo Microsoft is working on, check out this paper on MSDN by Keith Short.
Print | posted on Tuesday, April 27, 2004 12:22 AM