# Software Estimation | software project estimation | Software Effort Estimation

Estimation is the process of finding an estimate, or approximation, which is a value that can be used for some purpose even if input data may be incomplete.

The estimation is prediction or a rough idea to determine how much effort would take to complete a defined task. Here the effort would be time or cost.

In the early days of computing, Software cost constituted a small percentage in the overall computer based system. Today, software is the most expensive element of overall computer based system. Software cost and effort may change, because too many variables – human, technical, environmental - can affect the ultimate cost of software.

To achieve reliable cost and effort estimates, a number of options arise:
1. Delay estimation until late in the project.
2. Base estimates on similar projects that have already been completed.
3. Use simple decomposition techniques to generate project cost and effort estimation.
4. Use one or more empirical models for software cost and effort estimation.

The first option is attractive but not practical. Cost estimates must be provided “up front”.

The second option works well, but past experiences has not always good indicator of future results.

The remaining options are viable approaches for software estimation. Decomposition techniques take “divide and conquer” approach. Empirical models can be used to complement decomposition techniques.

Decomposition techniques in software estimation

Software project estimation is a form of problem solving, and in most cases, the problem to be solved is too complex to be considered in one piece. For this reason, we decompose the problem, re-characterizing it as a set of smaller problems.

1. Software Sizing: Before an estimate can be made, the project planner must understand the scope of the software to be built and generate an estimate of its "size.

In the context of project planning, size refers to a quantifiable outcome of the software project. If a direct approach is taken, size can be measured in LOC. If an indirect approach is chosen, size is represented as FP. There are four different approaches to the sizing problem:
1. Fuzzy logic” sizing:
2. Function point sizing:
3. Standard component sizing:
4. Change sizing:
2. Problem based Estimation:

Lines of code and function points were described as measures from which productivity metrics can be computed. LOC and FP data are used in two ways during software project estimation: (1) as an estimation variable to "size" each element of the software and (2) as baseline metrics collected from past projects and used in conjunction with estimation variables to develop cost and effort projections LOC and FP estimation are distinct estimation techniques.

Yet both have a number of characteristics in common. The project planner begins with a bounded statement of software scope and from this statement attempts to decompose software into problem functions that can each be estimated individually. LOC or FP (the estimation variable) is then estimated for each function. Alternatively, the planner may choose another component for sizing such as classes or objects.

3. Process based Estimation:

The most common technique for estimating a project is to base the estimate on the process that will be used. That is, the process is decomposed into a relatively small set of tasks and the effort required to accomplish each task is estimated.

Like the problem‐based techniques, process‐based estimation begins with a delineation of software functions obtained from the project scope.

A series of software process activities must be performed for each function. Functions and related software process activities may be represented as part of a table similar to the one presented. Once problem functions and process activities are melded, the planner estimates the effort (e.g., person-months) that will be required to accomplish each software process activity for each software function.
Senior staff heavily involved in early activities is generally more expensive than junior staff involved in later design tasks, code generation.
Software Estimation Techniques

There are different Software Testing Estimation Techniques which can be used for estimating a task.

1) Delphi Technique
2) Work Breakdown Structure (WBS)
3) Three Point Estimation
4) Functional Point Method

More

More

MFCS
COA
PL-CG
DBMS
OPERATING SYSTEM
SOFTWARE ENG
DSA
TOC-CD
ARTIFICIAL INT

More

More

More

More
Top