Software metric

From Wikipedia, the free encyclopedia

Jump to: navigation, search

A software metric is a measure of some property of a piece of software or its specifications.

Since quantitative methods have proved so powerful in the other sciences, computer science practitioners and theoreticians have worked hard to bring similar approaches to software development. Tom DeMarco stated, “You can’t control what you can't measure.”[1]

Modern software development practitioners are likely to point out that naive and simplistic metrics can cause more harm than good.[2]

Contents

[edit] Software Metrices Measurement

I. The what and why of measurement

  Measurement is an essential element of management; there is little chance of controlling what we
  can not measure.
    A. Measurement assigns numbers based on well defined meaning
        1. Sometimes the environment must be modified
           In a software context, this can mean special compilers or development procedures that
           track various activities.
    B. Software metrics helps avoid pitfalls
        1. Cost overruns
           Most project fail to separate design and coding costs. Doing so helps identify where
           problems exist.
        2. Clarify goals
           Project goals are often fuzzy, and so it is difficult to quantify how well they have been
           achieved.
    C. Metrics can help answer certain question
        1. What does each process activity cost?
        2. How productive is the staff?
        3. How “good” is code being developed?
        4. How can the code under development be improved?
    D. Measurement is though for understanding, control, and improvement

II. The scope of software metrics

   Software metrics is a term applied to a wide variety of measurement activities, under for a wide va-
   riety of reasons. Software metrics provides a means of measuring software; both under development
   and after a system is fielded. Software is an abstract construct, and measuring it is difficult. What,
   exactly, do you measure to get meaningful results?
     A. Cost and effort estimation
         Various models work to predict the cost and time to complete a project
     B. Productivity models and measures
     C. Data collection
         Consistent, meaningful data collection is difficult, and made more difficult by try to collect
         data across diverse projects.
     D. Quality models and measures
         Bad code is not worth much, even if lots of it is written quickly.
     E. Reliability modeling
         Just how reliable is the software? when can we expect the next failure?
      F. Performance evaluation
         How well does the system perform? Response and completion time, transactions processed,
         etc.

[edit] Common software metrics

Common software metrics include:

The definition of many of these metrics is often imprecise, and consequently it is often unclear how tools for computing them arrive at a particular result [3]. One exception is SemmleCode, where each metric is given a concise definition as a query evaluated against the facts in the program.

[edit] Limitations

It is very difficult to satisfactorily define or measure "how much" software there is in a program, especially when making such a prediction prior to the detail design. The practical utility of software metrics has thus been limited to narrow domains where they include:

  • Schedule
  • Size/Complexity
  • Cost
  • Quality

Too much emphasis on any one of these aspects of performance is likely to create an imbalance in the team’s motivations, leading to a dysfunctional project.

The Balanced scorecard is a one tool for managing a suite of metrics that address multiple performance perspectives.

[edit] See also

[edit] References

  1. ^ DeMarco, Tom. Controlling Software Projects: Management, Measurement and Estimation. ISBN 0-13-171711-1. 
  2. ^ Dr. Cem Kaner, Software Engineer Metrics: What do they measure and how do we know?
  3. ^ Rüdiger Lincke, Jonas Lundberg, Welf Löwe: Comparing software metrics tools. ISSTA 2008: 131-142

[edit] External links

Personal tools