Uncle Bob's package design metrics

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Uncle Bob's package design metrics

Rafael Luque
Hi,

Recently I've reread the chapter about "Package Design Principles" from the Robert C. Martin's "Agile Software Development" book and immediately find myself playing within the reflective and moldable Pharo's environment.

I've built an small library DMMetrics that you can find at GitHub:

This is a still very rough and work-in-progress, but I hope to be able to use it in my own projects to get some insights about my package design.

Besides my unknowns about Roassal or Renraku, I've also found more conceptual difficulties trying to adapt some metrics as were originally defined by Robert Martin to Pharo's idiosyncrasies. For instance, for measuring the abstraction level of a package, the "Abstractness" metric is defined as Na/Nc; where Na is the number of classes in the package and Nc represents the number of abstract classes in the package. In a language like Java Nc refers to the number of interfaces and classes with at least one abstract method. In Pharo I'm counting the number of classes with methods sending "self subclassResponsibility", but I suspect that this way of measuring is resulting in abstractness values lower than it should be. Maybe I should take into account other Smalltalkish idioms that also contribute to the class abstraction level. Any idea in this way would be of great help.

Thank you!