Software sizing or Software size estimation is an activity 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 ' ...
that is used to determine or estimate the size of a
software application
Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work.
At the lowest programming level, executable code consists ...
or component in order to be able to implement other
software project management
Software project management is an art and science of planning and leading software projects. It is a sub-discipline of project management in which software projects are planned, implemented, monitored and controlled.
History
In the 1970s and 1 ...
activities (such as
estimating
Estimation (or estimating) is the process of finding an estimate or approximation, which is a value that is usable for some purpose even if input data may be incomplete, uncertain, or unstable. The value is nonetheless usable because it is de ...
or tracking). Size is an inherent characteristic of a piece of software just like
weight
In science and engineering, the weight of an object is the force acting on the object due to gravity.
Some standard textbooks define weight as a vector quantity, the gravitational force acting on the object. Others define weight as a scalar q ...
is an inherent characteristic of a tangible material.
Background
Software sizing is different from
software effort estimation. Sizing estimates the probable size of a piece of software while effort estimation predicts the effort needed to build it. The relationship between the size of software and the effort required to produce it is called
productivity
Productivity is the efficiency of production of goods or services expressed by some measure. Measurements of productivity are often expressed as a ratio of an aggregate output to a single input or an aggregate input used in a production proce ...
.
For example, if a software engineer has built a small web-based calculator application, we can say that the project effort was 280 man-hours. However, this does not give any information about the size of the ''software product'' itself. Conversely, we can say that the application size is 5,000 LOCs (Lines Of Code), or 30 FPs (Function Points) without identifying the project effort required to produce it.
Functional software-sizing methods
Historically, the most common software sizing methodology has been counting the
lines of code
Source lines of code (SLOC), also known as lines of code (LOC), is a software metric used to measure the size of a computer program by counting the number of lines in the text of the program's source code. SLOC is typically used to predict the am ...
written in the application source. Another approach is to do Functional Size Measurement, to express the functionality size as a number by performing
function point analysis. The original sizing method is the
IFPUG
The International Function Point Users Group (IFPUG) is a US-based organization with worldwide chapters of Function point analysis metric software users. It is a non-profit, member-governed organization founded in 1986.
IFPUG owns Function Po ...
. The IFPUG FPA functional sizing method (FSM) has been used successfully despite being less accurate in estimating complex algorithms and being relatively more difficult to use than estimating lines of code. Adaptations of the original Functional Size Measurement methodology have emerged, and these standards are:
COSMIC Function Points,
Mk II Function Points, Nesma Function Points, and FiSMA Function Points. Other variants of these standards include
Object-Oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of " objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of ...
Function Points (OOFP) and newer variants as
Weighted Micro Function Points Weighted Micro Function Points (WMFP) is a modern software sizing algorithm which is a successor to solid ancestor scientific methods as COCOMO, COSYSMO, maintainability index, cyclomatic complexity, function points, and Halstead complexity. It ...
, which factor algorithmic and
control-flow
In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an ''imp ...
complexity.
The best Functional Sizing Method depends on a number of factors, including the functional domain of the applications, the process maturity of the developing organization and the extent of use of the FSM Method.
There are many uses and benefits of function points
[
Uses and Benefits of Function Point Counts - Pam Morri]
Total Metrics - Function Point Resource Centre
PDF
beyond measuring project productivity and estimating planned projects, these include monitoring project progress and evaluating the requirements coverage of
commercial off-the-shelf (COTS) packages.
Other software sizing methods include
Use Case
In software and systems engineering, the phrase use case is a polyseme with two senses:
# A usage scenario for a piece of software; often used in the plural to suggest situations where a piece of software may be useful.
# A potential scenari ...
-based software sizing, which relies on counting the number and characteristics of use cases found in a piece of software, and
COSMIC functional size measurement
COSMIC functional size measurement is a method to measure a standard functional size of a piece of software. COSMIC is an acronym of COmmon Software Measurement International Consortium, a voluntary organization that has developed the method and is ...
, which addresses sizing software that has a very limited amount of stored data such as 'process control' and 'real time' systems.
Both the
IFPUG
The International Function Point Users Group (IFPUG) is a US-based organization with worldwide chapters of Function point analysis metric software users. It is a non-profit, member-governed organization founded in 1986.
IFPUG owns Function Po ...
Method and the
COSMIC Methods are ISO/IEC standards.
Non-functional software-sizing method
The IFPUG method to size the
non-functional aspects of a software or component is called SNAP, therefore the non-functional size is measured by
SNAP Points
SNAP is the acronym for "Software Non-functional Assessment Process", a measurement of the size of the software derived by quantifying the non-functional user requirements for the software. The SNAP sizing method complements ISO/IEC 20926:2009, ...
. The SNAP model consists of four categories and fourteen sub-categories to measure the non-functional requirements. Non-functional requirement are mapped to the relevant sub-categories. Each sub-category is sized, and the size of a requirement is the sum of the sizes of its sub-categories. The SNAP sizing process is very similar to the function point sizing process. Within the application boundary, non-functional requirements are associated with relevant categories and their sub-categories. Using a standardized set of basic criteria, each of the sub-categories is then sized according to its type and complexity; the size of such a requirement is the sum of the sizes of its sub-categories. These sizes are then totaled to give the measure of non-functional size of the software application.
Additional information
Several
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 ...
standards mandate the use of a valid sizing method as part of the organization's standard
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 ' ...
life cycle
Life cycle, life-cycle, or lifecycle may refer to:
Science and academia
* Biological life cycle, the sequence of life stages that an organism undergoes from birth to reproduction ending with the production of the offspring
* Life-cycle hypothesi ...
. For instance,
Capability Maturity Model Integration
Capability Maturity Model Integration (CMMI) is a process level improvement training and appraisal program. Administered by the CMMI Institute, a subsidiary of ISACA, it was developed at Carnegie Mellon University (CMU). It is required by many ...
(
CMMI
Capability Maturity Model Integration (CMMI) is a process level improvement training and appraisal program. Administered by the CMMI Institute, a subsidiary of ISACA, it was developed at Carnegie Mellon University (CMU). It is required by man ...
) poses such a requirement. An organization cannot be appraised (certified) as CMMI level 2 or level 3 unless software sizing is adequately used.
See also
*
SEER-SEM
SEER for Software (SEER-SEM) is a project management application used to estimate resources required for software development.
History
1966 System Development Corporation Model based on regressions.
1980 Don Reifer and Dan Galorath paper whic ...
*
PRICE SystemsUnison Cost Engineering formerly known as PRICE Systems was founded in 1975 as a business within the RCA Corporation. It is generally acknowledged as the earliest developer of parametric cost estimation software.
PRICE Systems’ cost estimating so ...
*
Comparison of development estimation software In software development, effort estimation is the process of predicting the most realistic amount of effort (expressed in terms of person-hours or money) required to develop or maintain software based on incomplete, uncertain and noisy input. Effort ...
References
{{Software quality
Software engineering costs