|Object-Oriented Software Metrics - Afterword and further reading|
|Product Home||Application||Eclipse Plugin||Command Line||Metrics Guide||Download Free Trial||FAQ, News, Bugs||Other Products|
None of us are angels - we all slip up at some time -
We've all done these kind of things - we will almost certainly all continue to do them. That's alright - as long as you know what you have to do and you have the items on your 'To Do' list. That list is always bigger than the available time. But don't worry -the thing about that stuff that's on your to do list is that you will end up revisiting it - because it'll break - and you'll get a chance to cross it off the list. But you'll be kicking yourself as you do it. There's no real way out of this situation - we don't have infinite time or infinite patience. You can mitigate this situation though - write Unit tests as you write or maintain code, write them as you find bugs. And always measure your code - no matter which measurements you choose to use - use them regularly and record and compare the results. As time passes you will see improvement and sometimes when you do a lot of work that has no visible benefit to the end user there is the satisfaction of seeing some metric change for the better.
There are other areas where metrics can help. For example distributed software development in Java is a fact of life. Mergers and acquisitions have resulted in companies having geographically scattered development teams. Outsourcing to offshore locations such as India have exacerbated this trend. Development managers have to pull the efforts of all these teams together into a seamless whole. This has led to an increased interest in products that can help this process - just how do you assess the quality of code that has arrived from a group of programmers that you know absolutely nothing about? Laborious line by line review processes are the most effective way but that process is too slow and the tedious nature of the exercise means that even fairly major bugs can slip through. Products such as JHawk seek to address this by using automated Object-Oriented Software metrics which can direct you quickly to areas of code that may be suspect. In the case of JHawk we give you the code (Full licenses only) which will allow you to modify the metrics used to suit your own Java 'house style'. Giving these tools to the external developers means that they get an opportunity to fix their Java code before they send it to you, saving you a lot of work. There will always be arguments about which metrics are valuable and in which situations they are valuable. Products like JHawk that allow you to configure the metrics reporting to suit your own requirements can help you focus on those metrics that you have found to be really important to your development processes. The JHawk command line interface that comes with all versions of JHawk allows you to integrate metrics measurement into your automated build processes.
OK - But where do I start?
OK - But where do I start?
Iíve been designing and programming Object-Oriented systems in Smalltalk, Java and C++ since 1989 and in my experience there are a few very simple rules to using metrics -
If you are interested in Java Metrics you might be interested in topics that we are publishing in our Sidebars papers. Just click on this line to have a look.
Halstead calculations - http://yunus.hun.edu.tr/~sencer/complexity.html
The standard text on Object-Oriented metrics.Brian Henderson-Sellers, Object-Oriented Metrics: Measures of Complexity, Prentice-Hall, 1996.
Eminent common sense Java programming. Every Java programmer will learn something they didn't know from this book. Joshua Bloch - Effective Java - Programming Language Guide, Addison Wesley, 2001
A Practitioners view of coupling - This also provides excellent descriptions of Instability, Abstractness and Instability. In pursuit of code quality: Code quality for software architects - Andrew Glover
The following provide links of a more academic nature but are valuable if you have a deeper interest in object-oriented metrics -
http://user.cs.tu-berlin.de/~fetcke/metrics/oo.html (Links to main object oriented software metrics sites)
http://ivs.cs.uni-magdeburg.de/sw-eng/us/bibliography/bib_main.shtml (Bibliography subdivided by type of metric)