Michael Platt's WebLog

Computer Engineering


Architectural Quality

  • Comments 23
  • Likes

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!