I have been thinking a lot about architectural quality and more specifically how to measure it. Code quality can though of as code maintainability as in a maintainability index measuring things like cyclomatic complexity. These seem to be specific instances of Directed Acyclic Graphs (DAG’s) which is a well known area of analysis.
Isolation can be measured by an information flow measure such as Henry and Kafura use which is different from cyclomatic’s.
There are a number of programs which use these techniques for code quality such as CCCC and together controlcenter.
I think some of these techniques can be applied to Platt’s first law (my measure of architectural quality) which will give an interesting metric for architectural quality.
What about object bloatyness.
Are heavyweight objects really desirable?
Kieran Mockford points out that much of this came about in discussions with him.. in fact he claims credit for it!!
I dont think size matters (!), its more about complexity eg max path length rather than overall size
But Size does matter, its adding to complexity.
Lightweight objects are better IMO.
Easier to maintain, more decoupled, more autonomous.
Those are all issue of complexity.
Mike will probably delete these comments.
In fact.. Mike has it wrong, what the facts really are
<< Contents Deleted by Michael Platt 2/17/2004 5:16 AM >>
Agreed, size does increase complexity but it's a second order effect. The information flow measure is all about autonomy and decoupling.
One thing that we dont have today is autonmous (my spelling sucks before 12:00) computing.
Objects should be self checking and have less dependancy on trust of other objects.
Thats true which is why I like message passing, it forces autonomy.
Autonomous computing is different.. more like the semantic web (which I have problems with)
Sure it only adds complexity to an actual object rather than the links, those links would remain the same, well maybe not but usually they would, right?
Normally they would. Switching is a whole new ballgame
What if the problem domain is very linked in a complex manner.
Does the object model map onto the problem domain naturally is a better indicator but how do you measure this.
Thats where the information flow measure comes in. There are a whole load of OO measurements already but I think they are different
And how do you automate that.
I assume the end game for such analysis would be an automated button you press and up pops a number or percentage for complexity.
Yes, I'm working on that!