Software sizing is an activity in software engineering that is used to estimate the size of a software application or component in order to be able to implement other software project management activities (such as estimating or tracking). Size is an inherent characteristic of a piece of software just like weight is an inherent characteristic of a tangible material.
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 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 (Lines Of Code), or 30 FPs (Function Points) without identifying the project effort required to produce it.
Software Sizing Methods
Historically, the most common software sizing methodology has been counting the lines of code written in the application source. Another sizing method is the IFPUG method called Function point analysis. 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. Variations of Function Points include MK II Function Points, NESMA Function Points, Object Oriented Function Points (OOFP) and newer variants as Weighted Micro Function Points, which factor algorithmic and control flow complexity.
For more information about the similarities and differences between these ISO FSM methods see IFPUG and COSMIC - Similarities and Differences.
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 (COTS) 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 software sizing, 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 Method are ISO/IEC standards.
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. 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.
Several software quality standards mandate the use of a valid sizing method as part of the organization's standard software engineering life cycle. For instance, Capability Maturity Model Integration (CMMI) poses such a requirement. An organization cannot be appraised (certified) as CMMI level 2 or level 3 unless software sizing is adequately used.
- Software development effort estimation
- Software Engineering
- Software project management
- Function point analysis
- COSMIC software sizing
- PRICE Systems
- Comparison of development estimation software
- Enhanced Object Points
- SNAP Points
- Guidelines on how to choose an FSM Method
- Guidance on How to Choose a Functional Size Method - Pam Morris Total Metrics - Function Point Resource Centre see ISO/IEC 14143-6: - SOFTWARE ENGINEERING — SOFTWARE MEASUREMENT — FUNCTIONAL SIZE MEASUREMENT — PART 6: GUIDE FOR USE OF ISO/IEC 14143 SERIES AND RELATED INTERNATIONAL STANDARDS
- Uses and Benefits of Function Point Counts - Pam Morris Total Metrics - Function Point Resource Centre, PDF