Cameron has been blogging about new features in our product.. In a recent post he used the term Explicit Design. I’ve been reflecting on this, and I like it. In software development we really do need to capture design data that is not just the code, but should be saved and versioned just like the code. What do we call it? We could call it “models” but “model” and “model driven development” are subject to so much historical baggage and methodology and terminology arguments. “Model” just seems to imply baked-in code generation and round tripping, when there is so much more that you can do with it: planning, verifying, testing, refactoring. We need new vocabulary that represents our ability to capture versioned design data at a more abstract level than the code without simultaneously implying the history of CASE.
I have to agree: changing the name doesn’t solve the root of the problem, but perhaps we start thinking in a different way.
Comment by Bill Higgins on 2008-12-03 06:22:19 +0000
Grady Booch has an interesting take around this topic area:
“Every interesting software-intensive system has an architecture. While some of these architectures are intentional, most appear to be accidental.”
Comment by Ferdy on 2008-12-08 00:22:57 +0000
Bill, thanks for the link! A very interesting reading, a natural thing as it comes from Grady.
Some conclusions after reading the article:
1) We need to enumerate architectural patterns or styles, even if they come from accidental architectures. Something that I believe Grady is working on (Handbook of Software Architecture), and, with a wide aim, The Hillside Group.
2) Most architectures come from previous works (theft): bifurcations, scrap and rework. Although most of them are accidental architectures, they are inevitable and some of them could become useful in future systems, but only if we’re able to describe them as a pattern.