Architectural Quality
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.
Comments
- Anonymous
January 01, 2003
The comment has been removed - Anonymous
January 01, 2003
Recently there have been a number of posts in the MS blogs about Architects and how to improve the quality of code being created. Michael Platt has had a number of posts on this as have others. I've been thinking... - Anonymous
February 17, 2004
What about object bloatyness.
Are heavyweight objects really desirable? - Anonymous
February 17, 2004
Kieran Mockford points out that much of this came about in discussions with him.. in fact he claims credit for it!! - Anonymous
February 17, 2004
I dont think size matters (!), its more about complexity eg max path length rather than overall size - Anonymous
February 17, 2004
Easier to maintain, more decoupled, more autonomous.
Those are all issue of complexity. - Anonymous
February 17, 2004
But Size does matter, its adding to complexity.
Lightweight objects are better IMO. - Anonymous
February 17, 2004
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 >> - Anonymous
February 17, 2004
Agreed, size does increase complexity but it's a second order effect. The information flow measure is all about autonomy and decoupling. - Anonymous
February 17, 2004
The comment has been removed - Anonymous
February 17, 2004
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) - Anonymous
February 17, 2004
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? - Anonymous
February 17, 2004
Normally they would. Switching is a whole new ballgame - Anonymous
February 17, 2004
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. - Anonymous
February 17, 2004
Thats where the information flow measure comes in. There are a whole load of OO measurements already but I think they are different - Anonymous
February 17, 2004
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. - Anonymous
February 17, 2004
Yes, I'm working on that! - Anonymous
February 17, 2004
Yeah but the hard part is deciding on a color for that button. - Anonymous
February 17, 2004
:) - Anonymous
February 18, 2004
CSharp Refactory from xtreme simplicity features Cyclomatic Complexity analysis for C# sourcecode. - Anonymous
February 18, 2004
Yes, thanks for pointing that out. I am more interested in the information flow measure which is more useful for architectural analysis. Does anyone know of a c~ version. CCCC is yacc driven so I was looking at doing a c# version? - Anonymous
February 18, 2004
Or get a C++ version and wrap it?