Re: [xsl] metrics for evaluating xsl-t?

Subject: Re: [xsl] metrics for evaluating xsl-t?
From: Tony Graham <tkg@xxxxxxxxxxxx>
Date: Wed, 23 Aug 2006 07:54:53 -0400
"bryan rasmussen" <rasmussen.bryan@xxxxxxxxx> writes:
> Wondering if anyone has given any thought to a metrics for evaluating
> the complexity of a stylesheet based solution? can be XSL-T 2.0 only.

I have been thinking of it, but the same is probably true for many
people.

When I searched on it last week, I found this thread from last year
started by Lars Marius Garshol:

http://www.biglist.com/lists/xsl-list/archives/200504/msg00805.html

Dimitre Novatchev provided this link to a definition of Cyclomatic
Complexity as part of that thread:

http://www.sei.cmu.edu/str/descriptions/cyclomatic_body.html

I personally have got a far as thinking of writing a stylesheet to run
on stylesheets to measure complexity, much as you seem to be thinking,
though I'd write it in XSLT 1.0 so it's usable by more people.

If such a stylesheet were to be written and publicly available, then
we could do a survey to see if there's any trends in the complexity of
people's stylesheets.

Since I have only vague ideas on what to measure to determine
complexity, I would have the complexity stylesheet output XML
representing the counts for the different factors being measured in
case the weighting for the various factors ever needs to change.  It
would also make it easier to write one complexity stylesheet that
would be used to compute multiple complexity metrics, just as the
cyclomatic complexity page refers to multiple, complementary metrics.

The factors from the original post from last year are:

 > - size of stylesheet in bytes, lines, and XML elements+attributes,
 >
 > - number of elements from the XSLT namespace, and
 >
 > - combined length (in characters) of XPath expressions.

I'm still thinking this through, and I would need to look more at some
of the metrics for conventional software, but I would think to
include:

 - Number of imported and included stylesheets

 - Number of top-level xsl:param and xsl:variable

   I'm tempted to claim that a top-level xsl:param or xsl:variable in
   an included or imported stylesheet file adds more to the complexity
   than does one in the base stylesheet file.

 - Number of modes

 - Number of named templates

 - Levels of nesting of xsl:if and xsl:choose

   This is a possible measure of the complexity of a template, which
   isn't immediately useful for coming up with one magic number to
   indicate the complexity of a stylesheet.

 - The number of namespaces in use, and the number of prefixes in
   "exclude-namespace-prefixes"

 - Number of xsl:apply-imports

 - Number of xsl:namespace-alias

 - Number of xsl:fallback

But, having just looked in "Code Complete" by Steve McConnell while
writing this, I am reminded:

   Don't start by collecting data on all possible metrics -- you'll
   bury yourself in data so complex that you won't be able to figure
   out what any of it means... refine them and add to them as your
   understanding of what you want to measure improves.

Regards,


Tony.

Current Thread