Software sizing
Software sizing or software size estimation is an activity in software engineering that is used to determine or estimate the size of a software application or component in order to be able to implement other software project management activities. Size is an inherent characteristic of a piece of software just like weight 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.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, or 30 FPs 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 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 IFPUG FPA functional sizing method 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 Function Points and newer variants as Weighted Micro Function Points, which factor algorithmic and control-flow 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 beyond measuring project productivity and estimating planned projects, these include monitoring project progress and evaluating the requirements coverage of commercial off-the-shelf packages.
Other software sizing methods include Use Case-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, which addresses sizing software that has a very limited amount of stored data such as 'process control' and 'real time' systems.
Both the IFPUG Method and the COSMIC Methods are ISO/IEC standards.