Software metric
From Wikipedia, the free encyclopedia
It has been suggested that Programming Complexity be merged into this article or section. (Discuss) |
This article or section reads like an editorial or opinion piece and may require cleanup. Please improve this article by rewriting this article or section in an encyclopedic style to make it neutral in tone. See Wikipedia:How to edit a page and Category:Wikipedia help for help, or this article's talk page. (documentation, talk)(May 2008) |
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:
- Source lines of code
- Cyclomatic complexity
- Function point analysis
- Bugs per line of code
- Code coverage
- Number of lines of customer requirements.
- Number of classes and interfaces
- Robert Cecil Martin’s software package metrics
- Cohesion
- Coupling
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
- Software development effort estimation
- Software engineering
- Computer science
- Software quality
- Software package metrics
- Goal Question-Metric
- Ohloh: quantitative analysis of hundreds of open source projects
- List of code quality management dashboards
- Software crisis
[edit] References
- ^ DeMarco, Tom. Controlling Software Projects: Management, Measurement and Estimation. ISBN 0-13-171711-1.
- ^ Dr. Cem Kaner, Software Engineer Metrics: What do they measure and how do we know?
- ^ Rüdiger Lincke, Jonas Lundberg, Welf Löwe: Comparing software metrics tools. ISSTA 2008: 131-142
[edit] External links
- International Function Point Users Group
- What is FPA at Nesma website
- Estimating With Use Case Points by Mike Cohn. Describes the process to measure the size of an application modeled with UML, using use cases.
- OO & Agile Metrics Resources - includes workshop material on gaming metrics to improve their design
- Further defines the term Software Metrics with examples.
- Free demos of software metrics products for analyzing, planning and monitoring sofwtare projects (cockpits).
- Software Engineering Metrics: What do they measure and how do we knwow - An intellectually rigorous treatment of software engineering metrics