Metrics Analysis
The analysis discussion contain various discussions for each set of metrics. The discussion also show how the use of metrics has evolved over the course of this project since the metrics used for the first two sets are not all contained within the third. The third set also contains new metrics intended to complement several of the older metrics to enhance our ability to discover exceptional locations within the code. Follow the link to see more detailed discussions and analysis, otherwise view the recommendations here.
Metrics Analysis Details 5/7/2003 |
Testing effort focus: The metrics show a large number of new classes as well as old classes that have been refactored. Testing must verify changes to old classes as well as the new functionality of the new classes. |
Refactoring effort focus: PeerDiscovery, PrefScreen, ConfigurationInfo, FileInfo, MusicProfile, ServicesApi, and StatusScreen show up as the most complex methods and may need refactoring. The complexity of the system has increased overall since the last set of metrics due to many new classes while several existing class have reduced their complexity due to refactoring. |
Dead code/Unimplemented classes: There are a couple of classes in the Util package that seem very small in terms of methods and parameters including FileInfoListener and MusicProfileListener. |
Code Review focus: Focus code review on the empty classes to see if they are really needed. Also check the classes that have a large number of methods relative to the rest of the system since we don't want to develop god classes. We also need to review the complex classes before running off and refactoring everything. The JMT coupling metric is now showing even more coupling in our system. Review these exceptional cases from the metrics and see if the coupling is justified. There are also several classes that are still very public. In general, review the exceptional classes discussed in the details pages which include a large part of the system. |
Metrics Analysis Details: 4/20/2003 |
Testing
effort focus:
-Functionality has doubled and code has grow for each package. Can no longer just test the gui package since other packages have no begun to grow. Can still test the gui to make sure it interacts correctly with the expanded functionality of the other packages. -Jmetric, the most complex classes appear to be PeerDiscovery.java, StatusScreen.java, and ServicesApi.java. We should put extra focus on these classes during unit testing. |
Refactoring
effort focus:
-Services package was more than 5x line count (LOCC) of the previous iteration, while only increasing the method count by 3x, and class count by 4x. This is a red flag for development that shows that there might be room for significant refactoring, simplification, and compartmentalization as the line count has grown far more rapidly than the method count per class. -Apps package classes became far more complex as it added many methods and lots of code yet the class count remained unchanged -ServicesApi class has twice the average coupling, need refactoring. |
Dead
code/Unimplemented classes:
-MusicProfileListener.java and FileInfoListener.java do not include any code |
Code
Review focus:
-Verify that the new complexity within the apps package is justified, if not, refactor into more classes. -Verify that the high coupling and complexity of MainGUI class is justified. -Review ServicesApi and ConfigurationInfo due to high complexity. -Review other classes with high complexity, PeerDiscovery.java, PrefScreen.java, ServicesApi.java and StatusScreen.java. |
Metrics Analysis Details: 2/20/2003 |
Testing
effort focus:
The GUI class is by far the largest, focus testing on the gui. |
Refactoring
effort focus:
-When refactoring services the developers need to create more abstract classes or reduce the amount of outside dependencies on its classes -From the LOC, it looks like all the app logic is inside the gui but the logic and gui should be separate. -Improve constancy for code visibility, there is a general lack of private methods. |
Dead
code/Unimplemented classes:
Revjava showed several empty classes marked as unused. |
Code
Review focus:
Revjava showed several empty classes. Check if they are neccesssary -StatusScreen.updatePeerVector in the GUI package and PeerDiscovery.discoveryEvent in the Services package show a high cyclomatic complexity relative to rest of system. Review to see if this is neccessary. |