Agile Metrics – Technical/ Code Quality Measures
I have been discussing with a few friends about their favorite Agile Metrics. The metrics can be divided into following categories:
Technical/ Code related measures
Here is a list we have come up with to measure Code Quality:
- Code Coverage : Code coverage is a measure used in software testing. It describes the degree to which the source code of a program has been tested. It is a form of testing that inspects the code directly and is therefore a form of white box testing
- Cohesion : In computer programming, cohesion is a measure of how strongly-related and focused the various responsibilities of a software module are. Cohesion is an ordinal type of measurement and is usually expressed as “high cohesion” or “low cohesion” when being discussed. Modules with high cohesion tend to be preferable because high cohesion is associated with several desirable traits of software including robustness, reliability, reusability, and understandability whereas low cohesion is associated with undesirable traits such as being difficult to maintain, difficult to test, difficult to reuse, and even difficult to understand.
- Low Coupling: In computer science, coupling or dependency is the degree to which each program module relies on each one of the other modules. Coupling is usually contrasted with cohesion. Low coupling often correlates with high cohesion, and vice versa.
- Cyclomatic Complexity: Cyclomatic complexity is a software metric (measurement). It is used to measure the complexity of a program. It directly measures the number of linearly independent paths through a program’s source code.
- Number of unit test cases per feature or method or class. Minimum 4 test cases per feature ( +ve, -ve and stress, system interaction)
- Defect Density : Number of defects per lines of code
Here are some tools you can explore further:
.Net – nDepend
Java – jDepend