HOME

TheInfoList



OR:

Software sizing or software size estimation is an activity in
software engineering Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
that is used to determine or estimate the size of a
software application Application software is any computer program that is intended for end-user use not computer operator, operating, system administration, administering or computer programming, programming the computer. An application (app, application program, sof ...
or component in order to be able to implement other
software project management Software project management is the process 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 1980s, ...
activities (such as estimating 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 a quantity associated with the gravitational force exerted on the object by other objects in its environment, although there is some variation and debate as to the exact definition. Some sta ...
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 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 (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''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
Function Points (OOFP) 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 Uses and Benefits of Function Point Counts - Pam Morri
Total Metrics - Function Point Resource CentrePDF
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 both software and systems engineering, a use case is a structured description of a system’s behavior as it responds to requests from external actors, aiming to achieve a specific goal. It is used to define and validate functional requireme ...
-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.


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. 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's functional quality reflects how well it complies with or conforms to a given design, based on functional requirements or specificat ...
standards mandate the use of a valid sizing method as part of the organization's standard
software engineering Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
life cycle. 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 many U ...
) 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 * PRICE Systems * Comparison of development estimation software


References

{{Software quality Software engineering costs