Wednesday, June 25. 2008
The Overview Pyramid is used to visualize a complete software system in a really compact manner. Therefor it collects a set of metrics from the categories Inheritance, Coupling and Size & Complexity, and puts them into relation. The following figure shows the base structure of the Overview Pyramid[ML06].
Metrics used by the Overview Pyramid
The following three lists contain all the metrics, which the Overview Pyramid uses.
Size and Complexity
The category Size & Complexity contributes the greatest and mostly used set of software metrics.
This group of metrics informs about the coupling between different program parts in the analyzed application.
Both metrics in this group deal with the use of Inheritance and give a general overview of the use of Inheritance within the analyzed system.
Structure of the Overview Pyramid
Now that we know all metrics used for the Overview Pyramid, it is time to replace the placeholders with the measured informations. The figure below shows the filled Overview Pyramid.
In a second step, the previously independent metrics are set into relation. Therefor we calculate the average values of individual value pairs, these computed values provide us with new informations about the distributions within the application.
The following example figure of the Overview Pyramid contains a computed value for the measured LOC and NOM metric which shows us, that in the average each operation has 25 lines of code. This value can be described as very high, especially when you consider that most systems contain a variety of simple operation, like Getter and Setter, in addition to the main application logic.
To take reasonable conclusions from the computed values one important part is still missing, an adequate set of reference values. Without reference values, that say what values are low, average or high, it is not possible to classify these results. The current version of PHP_Depend supports a single set of reference values, this set was taken from [ML96].
With these reference values PHP_Depend can classify the computed results. PHP_Depend uses this information for the generation of colored backgrounds, so that the color already supports the categorization.
The benefit of the Overview Pyramid
Of course, the final question is, which advantages offers the Overview Pyramid?
The Overview Pyramid provides a simple and size indipendent way to get a first impression of a software system, and this without an expensive source code analysis. Thus the Overview Pyramid is an effective tool for a first cost estimate for an unknown system. With the help of this tool and know-how, an experienced developer will quickly get a first impression and will know what can be expected from the analyzed application. And this knowledge could be a good help during the planning phase of a new project.
Posted by Manuel Pichler in php, php_depend, phpugdo, projects at 18:36 | Comments (8) | Trackbacks (0)
Defined tags for this entry: overview pyramid, php_depend, quality assurance, software design, software metrics
Display comments as (Linear | Threaded)
Firstly, thanks for undercontrol and depend.
Very interesting, these new feature.
just a question, on what are base the reference values ?
how are they determined?
this set of reference values was taken from the book *Object-Oriented Metrics in Practice*. The book mentions that these values are based on 45 Java projects (a mix of commercial and open source applications) of various size (20.000 up to 2.000.000 lines of code).
Again: Thanks for pdepend. It seems to be kind of comprehensive work. In fact I bought Object-Oriented Metrics in Practice some weeks ago, before trying out pdepend. It is a cumulative work. Now I am pretty happy, that you reference this one.
"""In a system of ten classes an ANDC-value of 0.5 means, that every second class is derived from another class."""
I reckon it would be every second class, no matter how many classes we talk about?
That's true, 0.5 means always the same, independent of the class count.
I love metrics, but metrics for the sake of coming up with numbers which I must say mean have no objectivity and no measure of usability in practice is just benchmarking for the sake of benchmarking.
And I must object to the use of Java baseline figures as a a basis for PHP code metrics. A single line in one language may translate to several in another, and vice versa. So that distorts your figures and makes it totally fallible and unreliable.
Any specific reason why this information is presented in the quirky "pyramid" format? It seems that three columns of a standard spreadsheet would suffice (label, number, ratio). Using a standard presentation scheme would make the information more intuitive to read.
Yes, there is a reason. The three corners of pyramid represent three different metric-categories:
Size and complexity - left
Coupling - right
* Inheritance - top