Partager via


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?