Metrics Overview
Before covering the detailed metrics for B448 I figured a bit of an overview on Understand 2.0 metrics would be useful.
Project vs Change Metrics
There are two basic kinds of metrics that we provide in Understand 2.0. The first is Project Metrics, which give a static view of a particular point in time. Examples of this are CountLine and Cyclomatic. Understand 2.0 computes and presents the value of these metrics for any snapshot in the database.
The second kind is Change Metrics. These show differences between snapshots. The differences can be static - i.e. comparing Cyclomatic from B448 to Cyclomatic in B447. Or it can be dynamic, for instance showing lines deleted (calculated by looking at diffs).
How are Snapshots Made?
You can make a snapshot in three easy ways. First, make one from the current database. Second, make one from an alternate source location where you checked out another version of your source code, and third you can make one from any point in time using TrackBack (after version B443). All these are done from the Change->Snapshot Manager menu.
Build 448 Metrics
After making a snapshot for B448, the Snapshot Manager showed me this basic information about each recent snapshot:

Here is the entire source for the project compared to the major components. Maintain is the source for Understand 2.0
That is nice, but what "happened". Here are some more dynamic views showing changed SLOC and classes:
Not nearly as busy as we were last build (-: Not quite true, these numbers reflect the code checked in. Last build had a lot of code checked in because we'd held the build for two weeks waiting for the Estimate and Metrics Graphing features to be ready.
I'm a big fan of "new complexity" as an important metric. This captures the dynamic that new complexity, in the form of new logic or changed logic represents the biggest source of bugs. Put another way, a new complexity of 10 is way more dangerous than a stable unchanged complexity of 50. Well... unless some changes ripple through that complexity of 50... but that is for another blog posting about using Change to find risk.
Here is a view of "new complexity" for this Build
Note that the above chart was done with Excel by exporting data out of Understand 2.0. I also sent a note to the pertinent engineers asking them to put in various "new complexity" charts into the Metrics feature of Understand 2.0 Except for this chart, all are made directly by Understand 2.0's new Metrics graphing menu.
Timeline:
12:52 - rescan/update code in project.
12:54 - make snapshot
12:55 - update metrics database including change metrics (more time consuming)
This gets more time consuming each time I add a snapshot becuase it compares all snapshots to all snapshots.
For the next build I'll likely disable past snapshots and only do comparisons between the last two.
13:05 - starting making graphs using Metrics Graph Browser
13:35 - finished posting this blog plus sent several e-mails with ideas to pertinent engineers.
Leave a comment