comp.lang.ada
 help / color / mirror / Atom feed
From: agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!math.ohio-state.edu!w
Subject: Re: McCabe package for Ada?
Date: 4 Jun 93 15:47:20 GMT	[thread overview]
Message-ID: <1993Jun4.154720.23587@saifr00.cfsat.honeywell.com> (raw)

In article <daniC83348.MJ7@netcom.com> dani@netcom.com (Dani Zweig) writes:

>It turned out that there was a 96% correlation between the Cyclomatic
>Complexity of a module and the number of statements in a module.  The
>link is that Cyclomatic Complexity is almost perfectly correlated with
>the number of decisions in a module, the number of decisions is almost
>perfectly correlated with the number of IFs, and the *density* of IFs
>is quite consistent, with the result that the number of IFs is almost
>perfectly correlated with the number of statements.

As I understand it, the cyclomatic complexity - extended McCabes
is a count of conditions (IFs, ELSEIFs, AND THENs, etc.) in a
procedure + 1. I've verified this on a few (20-30) procedures. 
But it seems you're concluding that the complexity metric would
(could?) be correlated with the number of statements, and I
haven't had that experience. I see you are referring to a 
COBOL/MIS environment; I'm using Ada.

>Needless to say, Cyclomatic Complexity turns out to be an excellent
>predictor of defects -- by virtue of the fact that long modules average
>more defects than short modules.  All of which is to say that people
>who measure Cyclomatic Complexity probably aren't measuring what they
>think they're measuring.  (McCabe's Essential Complexity has its own
>problems, but it's a *somewhat* better measure of the 'messiness' of a
>module's control structure.)

Well, at the risk of appearing hopelessly inept, I have a problem
with high McCabe values as a necessary indicator of procedure
complexity/lack of maitainability. I have procedures that are
logically grouped by function, for example, displaying aircraft
brake antiskid failure messages. There are six possible messages,
plus the condition of blanking the display for invalid data
conditions. I am checking the status of 64 input parameters 
(mostly Booleans) to determine which message/combination of messages
should be displayed. (If XXXXXX and then YYYYY then...)
Based on the nature of this McCabe metric, the count of IFs and
ELSEIFs gets quite high very quickly, yet the code is quite
simple to follow. I have the option of breaking this function up 
into smaller procedures (this procedure has 186 logical lines of
code), but that wouldn't make it any less complicated or more
maintainable. Any suggestions? Should I care if the McCabe is
high but the code is obviously not complex and after exhaustive
testing has no defects?

Mark Shanks
shanks@saifr00.cfsat.honeywell.com

             reply	other threads:[~1993-06-04 15:47 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-06-04 15:47 agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!math.ohio-state.edu!w [this message]
  -- strict thread matches above, loose matches on Subject: below --
1993-06-07 18:43 McCabe package for Ada? sgi!fido.asd.sgi.com!dblues!jackr
1993-06-05 19:29 David Boyd
1993-06-04 23:53 Kevin Sullivan
1993-06-04 22:07 dog.ee.lbl.gov!network.ucsd.edu!swrinde!cs.utexas.edu!csc.ti.com!tilde.cs
1993-06-04 21:44 Ala n R. Weiss
1993-06-04 21:25 Dani Zweig
1993-06-04  6:24 Dani Zweig
1993-06-03 19:47 dog.ee.lbl.gov!network.ucsd.edu!sdd.hp.com!portal!lisburn!jaime
1993-05-27 17:55 Laurence VanDolsen
1993-05-26 22:42 David Boyd
1993-05-26 20:44 Wes Groleau X7574
1993-05-25 10:52 pipex!uknet!glasgow!unix.brighton.ac.uk!wjmc
1993-05-24 19:36 Alex Blakemore
1993-05-24  0:33 mole-end!mat
1993-05-19 23:04 David Boyd
1993-05-19 22:09 David Boyd
1993-05-19 21:18 agate!howland.reston.ans.net!darwin.sura.net!haven.umd.edu!news.umbc.edu!
1993-05-19 20:03 Wes Groleau X7574
1993-05-19 15:20 cis.ohio-state.edu!magnus.acs.ohio-state.edu!usenet.ins.cwru.edu!howland.
1993-05-19  0:44 sgi!fido.asd.sgi.com!dblues!jackr
1993-05-18 23:42 David Boyd
1993-05-18 21:26 dog.ee.lbl.gov!overload.lbl.gov!agate!howland.reston.ans.net!ux1.cso.uiuc
1993-05-18 19:24 dog.ee.lbl.gov!network.ucsd.edu!usc!howland.reston.ans.net!europa.eng.gte
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox