comp.lang.ada
 help / color / mirror / Atom feed
From: schwarza@gdls.com (Art Schwarz)
Subject: Re: Tools
Date: 1996/12/19
Date: 1996-12-19T00:00:00+00:00	[thread overview]
Message-ID: <59a162$a8p@mill.gdls.com> (raw)
In-Reply-To: 32B6D316.2F1C@velveeta.apdev.cs.mci.com


From James Rogers <jrogers@velveeta.apdev.cs.mci.com>
Newsgroups: comp.lang.ada
Subject: Re: Tools
Date: Tue Dec 17 12:06:30 EST 1996
Organization: MCI Telecommunications Colorado Springs, CO

Art Schwarz wrote: 
>  I'm interested in reading articles which describe what the complexity metric
>  for Ada is; what constructs are used and supported. the weight each has and
>  how the construct participates in control flow graph formation. I am also
>  interested in any freeware, shareware, commercialware which supports the return
>  of the complexity metric of a module along with the control-flow graph used to
>  form the complexity metric.

I assume this means that you will not be using any tagged types.  Run-time
dispatching makes Cyclomatic Complexity calculations very difficult.  There
is no static analysis which can tell which subprogram will be called via
dynamic dispatching.

-- 
Jim Rogers
*************************************************************
Team Ada


   Actually I don't know what I'm looking for. Putting a context on this,
   I'm including (below) a response to a posting in comp.lang.measurement.
   The issue is that one of the projects at General Dynamics Land Systems
   is being required to use the Cyclomatic Complexity Metric and the 
   Essential Complexity Metric (1, 2, 3) in an Ada project. My contention
   is that the referenced documentation does not provide any guidelines to:

   [1] Evaluating competing products, and

   [2] Constructing a product,

   because major issues within Ad 83 and Ada 95 are not addressed. I have
   identified (internally) the use of entry / tasking and exceptions as
   being two of those issues. You have identified yet another (thanks by
   the way). My basic problem is that in order to determine what we have
   to do, I have to determine what we have to do. Hence, I am looking for
   both products (freeware, shareware, commercialware) and literature. In
   order evaluate any product, I have to become familiar with the issues.
   And so, I am eager to hear opinions as well as to see articles. 

   As time is available, I will reformulate the Cyclomatic Complexity Metric
   to accomodate those issues not currently published or satisfied which I
   become aware of. (Don't count on this - they keep us underfed and
   overworked around here.)
  
   If anyone within the Ada or non-Ada community would like to share
   experiences or thoughts, I will provide a synopsis. Because of firewall
   restriction, I will probably have to direct mail the results to all
   interested parties. (Darn.) 

   [1] A Complexity Metric
       Tom McCabe
       IEEE Transactions on Software Engineering, Dec 1976

   [2] Structured Testing: A Testing Methodology Using the Cyclomatic
       Complexity Metric
       Thomas J. McCabe
       NBS 500-99

   [3] Structured Tesging: A Testing Methodology Using the Cyclomatic
       Complexity Metric
       Arthur H. Watson, Thomas J. McCabe
       NIST 500-235
       (http://www.mccabe.com)

======================================================================

From schwarza@gdls.com (Art Schwarz)
Newsgroups: comp.software-eng,comp.software.measurement
Subject: Re: Cyclomatic Complexity Metric
Date: Wed Dec 18 16:35:36 EST 1996
Organization: General Dynamics, Land Systems Div

> From John Sheckler <sheckler@software.org>
> Newsgroups: comp.software-eng,comp.software.measurement

> Cyclometric Complexity is language independent.  It is quite simple to 
> implement, all you do is count each program branch instruction (if, else, 
> case, switch, for, jump, branch on less than, etc.  A general and 

   This is not quite accurate in that some valid language constructs in, 
   e.g., C/C++ and Ada can not be appropriately mapped. I list as a 
   partial subset:

   [1] C/C++ throw and catch
   [2] Ada raise and exceptions.
   [3] Ada entry and tasking.

   In all these forms it is possible to generate a Directed Acyclic Graph
   (DAG) which is not strongly connected. As identified in McCabe's paper
   in the IEEE Transactions on Software Engineering, Dec. 1976, "A 
   Complexity Metric", the metric depends on the control flow graph being
   strongly connected. A book by Berge, "Graphs and Hypergraphs" is cited
   as being the reference.

   A direct implication of the reasoning behind the Cyclomatic Complexity
   Metric is that the original program be well-structured (see below). This
   property causes programs which use, e.g., continue (C), or break (C, Ada)
   which produce a control-flow graph which can be strongly connected, to
   represent complexity issues which are present but may not be relevant.



> somewhat serious complaint is that CASE (SWITCH) statements generate unfair 
> high complexity values, but then any numeric approach to evaluating programs 
> requires some judgment.

   McCabe identifies a further metric, which he calls the "essential complexity"
   which measures the well-structuredness of a program, that can be used to
   accomodate 'case' statements. The approach is to discard subgraphs which 
   are identified as being well-structured. The resultant Cyclomatic Complexity
   is an indication of how well-structured the original program was. For programs
   which are well-structured, the essential complexity metric == '1'. Counts larger
   than '1' indicate the degree, according to this metric, that a program is not
   well-structured. As above, issues exist in certain language constructs.

   Basically, the fundamental paper in '76 deals with popular languages which
   existed at that time. This was identified in NIST 500-99, "Structured 
   Testing: A Testing Methodoloy Using the Cyclomatic Complexity Metric" as
   being Fortran and Pascal with a little Cobol.


> The last I heard, is that there is a lot of software out there for generating 
> these kinds of metrics.  One source that I have had expereince with was 
> PC-Metics of SET Laboratories in Washington or Oregon out west somewhere. 
> Another prodcut called Logiscope is also well rated.  I took a course at JHU 
> that required me to write a source code metrics analysis tool, but I don't 
> consider my program a marketable commodity.  Of course McCabe is the one 
> credited for inventing the concept so I would look to his offerings first.

  
   Any software at all, or references to software, will and shall be well
   received.

   Thanks for the help. I hope that I haven't bored you with my concerns.

art schwarz
General Dynamics Land Systems
schwarza@gdls.com









  parent reply	other threads:[~1996-12-19  0:00 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-12-16  0:00 Tools Art Schwarz
1996-12-17  0:00 ` Tools James Rogers
1996-12-18  0:00   ` Tools Robert Dewar
1996-12-18  0:00     ` Tools James S. Rogers
1996-12-19  0:00   ` Art Schwarz [this message]
1996-12-19  0:00   ` Tools Robert A Duff
replies disabled

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