In
software engineering
Software engineering is a systematic engineering approach to software development.
A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term ' ...
and
development, a software metric is a standard of measure of a degree to which a
software system or process possesses some property. Even if a metric is not a measurement (metrics are functions, while measurements are the numbers obtained by the application of metrics), often the two terms are used as synonyms. Since
quantitative measurements are essential in all sciences, there is a continuous effort by
computer science
Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (includin ...
practitioners and theoreticians to bring similar approaches to software development. The goal is obtaining objective, reproducible and quantifiable measurements, which may have numerous valuable applications in schedule and budget planning, cost estimation, quality assurance, testing, software
debugging
In computer programming and software development, debugging is the process of finding and resolving ''bugs'' (defects or problems that prevent correct operation) within computer programs, software, or systems.
Debugging tactics can involve in ...
, software
performance optimization, and optimal personnel task assignments.
Common software measurements
Common software measurements include:
*
ABC Software Metric
*
Balanced scorecard
*
Bugs
Bugs may refer to:
* Plural of bug
Arts, entertainment and media Fictional characters
* Bugs Bunny, a character
* Bugs Meany, a character in the ''Encyclopedia Brown'' books
Films
* ''Bugs'' (2003 film), a science-fiction-horror film
* ''Bugs ...
per line of code
*
Code coverage
In computer science, test coverage is a percentage measure of the degree to which the source code of a program is executed when a particular test suite is run. A program with high test coverage has more of its source code executed during testing ...
*
Cohesion
* Comment density
*
Connascent software components
Connascence () is a software quality metric invented by Meilir Page-Jones to allow reasoning about the complexity caused by dependency relationships in object-oriented design much like coupling did for structured design. In software engineering, ...
*
Constructive Cost Model
*
Coupling
*
Cyclomatic complexity
Cyclomatic complexity is a software metric used to indicate the complexity of a program. It is a quantitative measure of the number of linearly independent paths through a program's source code. It was developed by Thomas J. McCabe, Sr. in 1976. ...
(McCabe's complexity)
*Cyclomatic complexity density
* Defect density - defects found in a component
* Defect potential - expected number of defects in a particular component
* Defect removal rate
*
DSQI (design structure quality index)
*
Function Points and Automated Function Points, an
Object Management Group
The Object Management Group (OMG) is a computer industry standards consortium. OMG Task Forces develop enterprise integration standards for a range of technologies.
Business activities
The goal of the OMG was a common portable and interoperab ...
standard
*
Halstead Complexity
*
Instruction path length
*
Maintainability index
*
Number of lines of code
*
Program execution time
*
Program load time
*
Program size (binary)
*
Weighted Micro Function Points
*
CISQ automated quality characteristics measures
*
Cycle time (software)
*
First pass yield
*Corrective Commit Probability
Limitations
As software development is a complex process, with high variance on both methodologies and objectives, it is difficult to define or measure software qualities and quantities and to determine a valid and concurrent measurement metric, especially when making such a prediction prior to the detail design. Another source of difficulty and debate is in determining which metrics matter, and what they mean.
The practical utility of software measurements has therefore been limited to the following domains:
*
Scheduling
A schedule or a timetable, as a basic time-management tool, consists of a list of times at which possible tasks, events, or actions are intended to take place, or of a sequence of events in the chronological order in which such things are i ...
*
Software sizing
*
Programming complexity Programming complexity (or software complexity) is a term that includes many properties of a piece of software, all of which affect internal interactions. According to several commentators, there is a distinction between the terms complex and compli ...
*
Software development effort estimation
*
Software quality
In the context of software engineering, software quality refers to two related but distinct notions:
* Software functional quality reflects how well it complies with or conforms to a given design, based on functional requirements or specification ...
A specific measurement may target one or more of the above aspects, or the balance between them, for example as an indicator of team motivation or project performance.
Additionally metrics vary between static and dynamic program code, as well as for object oriented software (systems).
Acceptance and public opinion
Some software development practitioners point out that simplistic measurements can cause more harm than good. Others have noted that metrics have become an integral part of the software development process.
Impact of measurement on programmer psychology have raised concerns for harmful effects to performance due to stress, performance anxiety, and attempts to cheat the metrics, while others find it to have positive impact on developers value towards their own work, and prevent them being undervalued. Some argue that the definition of many measurement methodologies are imprecise, and consequently it is often unclear how tools for computing them arrive at a particular result, while others argue that imperfect quantification is better than none (“You can’t control what you can't measure.”). Evidence shows that software metrics are being widely used by government agencies, the US military, NASA, IT consultants, academic institutions, and commercial and academic
development estimation software.
Further reading
* J. Smith, ''Introduction to Linear Programming'', Acme Press, 2010. An introductory text.
* Reijo M.Savola, ''Quality of security metrics and measurements, Computers & Security, Volume 37, September 2013, Pages 78-90.''
See also
*
Goal Question-Metric
*
List of tools for static code analysis
*
Orthogonal Defect Classification Orthogonal Defect Classification (ODC) turns semantic information in the software defect stream into a measurement on the process. The ideas were developed in the late '80s and early '90s by Ram Chillarege at IBM Research. This has led to the develo ...
*
Software engineering
Software engineering is a systematic engineering approach to software development.
A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term ' ...
*
Software package metrics
References
External links
Software Metrics(SQA.net)
Software Engineering Metrics: What do they measure and how do we knowNASA Standard NASA-STD-8739.8 (Software Assurance and Software Safety Standard)HIS Source Code Metrics(''outdated but for reference''; related see
AUTOSAR)
HIS Source Code Metrics version 1.3.1 01.04.2008(''outdated but for reference''; related see
AUTOSAR)
A framework for source code metricsNASA.govSonarQube Metric DefinitionsMetrics of Object Oriented Software(2010)
{{DEFAULTSORT:Software Metric
*
Metrics