| 
    What is a Metric?
    We distinguish between measure and metric. To clarify, let's start by defining what is meant by measure and by metric.
 
    
        Measure: A raw data item that is directly measured, and that will be used to calculate a metric.
    
        Metric: An interpretation of a measure or a set of measures that you use to guide your project. For example,
        recording how many test cases have passed and how many have failed are measures. Interpreting what level of quality
        this indicates and how it reflects the team's progress within the current iteration is a metric.
     
    Why Measure?
    Measurements will mainly help you to:
 
    
        Communicate effectively. Measurement supports effective communication among team members and project
        stakeholders.
    
        Identify and correct problems early. Measurement enables you to identify and manage potential problems early
        in the development lifecycle.
    
        Make informed trade-offs. Measurement helps objectively assess the impact of decisions, helping the
        team make trade-off decisions to best meet project goals.
    
        Tune estimations. Recording schedule, progress, and expenditures for projects will help team members to make
        more reliable estimations in the future.
     
    Potential Challenges
    There are several dangers when it comes to metrics:
 
    
        
            They can be too costly. The benefit provided by the metric must exceed the cost of collecting it. Keep
            your measurements simple and easy to collect.
        
        
            They're a poor substitute for communication. Do not use metrics as a substitute for communication. Team
            members may help to decide which metrics make sense for the project. Apply metrics not so much to control the
            project but to help team to collaborate better. Asking people about their progress is a co-dependent way of
            gaining insight into progress.
        
        
            They can be misleading. No metric or collection of metrics is perfect. Furthermore, the measurements
            upon which they are based can be manipulated by the people capturing them. Don't rely simply upon metrics to
            manage a project.
         
    Effective metrics programs can be challenging to implement, though typically not because of the statistics and complex
    analysis often associated with metrics. Rather, the challenge lies in understanding which metrics add value to the
    project and to the company, and which procedures are most efficient for collecting and using these metrics.
 
    Consider implementing only a handful metrics. Importantly, do not collect metrics unless they help contribute to a goal
    of improving a defined area of your software development process. If you will not act on a metric, do not collect it.
    It is much more important to focus on a small number of metrics that are important to what you are trying to achieve
    right now, versus a larger set of metrics that may be "good to track". 
 
    Common Metrics
    Below are some common measures and associated metrics used in software development projects. These metrics help teams
    communicate, identify and correct problems early, make informed trade-offs, and tune estimations. Example of metrics
    coverage areas are listed below.
 
    
        Software quality 
        
            
                Defect backlog: Number of defects discovered respectively resolved per iteration
            
                Test case coverage: Number of test cases executed over total number of test cases
            
                Code coverage: % of code that have been tested
            
        Development productivity 
        
    
        Development process effectiveness 
        
            
                Responsiveness to quality issues: Number of defects discovered versus resolved per iteration
            
                Responsiveness to process improvement proposal: Number of process enhancements proposed versus implemented
            
        Cost and schedule estimate and variance 
        
            
                Effort: Actual effort spent per iteration
            
                Cost: Cost per iteration
            
                Effort remaining: Track project burndown 
             
    There are many other measures and metrics that may make sense, based on what you are trying to accomplish. For example,
    if you want to measure the quality of your architecture, you may choose to collect metrics related to coupling between
    different software packages (groups of related classes) by measuring extensibility, dependency, and responsibility of
    each package.
 |