Posted by & filed under Tips.

We believe that if we use our own tools they will be better.

Hence, in the coming weeks, using just tools we sell or are about to introduce, I will be posting build metrics about each build we release. I will give static views of the size and scope of our various development efforts and on week two I’ll start showing change metrics describing what is new, changed and removed.

Today, I’ll start that off by showing you “Functional Decomposition”,  the first Architecture I will be using to organize future reports.

First off, Understand provides automatically a Filesystem architecture that is automatically derived from the directory structure of the project.

Understand’s Assistant, also suggests three that you can do by hand that will take you a long way.  They are “Functional Decomposition”, “Staff”, and “Requirements”.   Since we don’t deal with formal requirements here at Scitools, I’ll just be doing “Functional Decomposition” today and “Staff” tomorrow.

On the left is the basic Filesystem architecture I started with, and on the right one I whipped up in about 45 minutes:

2008-04-22 17.14 2008-04-22 17.16

From the left one (pure directory structure) I think you can sort of deduce what is going on generally in the structure.  But, what is difflib, or how would you know that “maintain” is really the source tree for “Understand 2.0”. You wouldn’t know.  But a quick glance at the right one should show you the general structure.

Another way to view it is in this graph, in which I’ve fully expanded all the way down to base components:



So how big is Understand?  Here is what the Metrics Browser reports for the top level of Functional Decomposition:

2008-04-22 17.25

Cool – 1.24MSLOC. And this project doesn’t contain “ALL” the source – just what I decided was going to be changing going forward.

Okay, so how big are the parts of Understand 2.0.  For that I’ll turn to Measure, a tool we are about to put out for Alpha Testing – email if you want to get on the “try it early” list.

Here is Measure comparing the volume (in LOC) of the source for the major components of our source tree:


And here is the same data shown in tabular form:

2008-04-22 19.11

A one click switch of x-axis on the top chart now shows each component in terms of blank lines, executable lines, declarative lines, and comment lines:


And finally, here is each components complexity graphed comparitively:


So there is an overview of the major parts of Understand’s source tree, their relative sizes and complexity.
Tomorrow…. I’ll add the “Staff” architecture and do similar metrics to answer the burning question…. “Who has been busy here at Scitools??”