Estimation Techniques
Estimation Techniques
Estimation Techniques
Software practitioners are frequently challenged to provide early and accurate software
project estimates. It speaks poorly of the software community that the issue of accurate
estimating, early in the life cycle, has not been adequately addressed and standardized.
The ability to accurately estimate the time/cost taken for a project to come to its
successful conclusion has been a serious problem for software engineers. The use of
repeatable, clearly defined and well understood software development process has in
recent years shown itself to be the most effective method of gaining useful historical data
that can be used for statistical estimation. In particular, the act of sampling more
frequently, coupled with the loosening of constraints between parts of a project, has
allowed more accurate estimation and more rapid development times.
• Parametric Estimating
• Wideband Delphi
• Cocomo
• SLIM
• SEER-SEM Parametric Estimation of Effort, Schedule, Cost, Risk (based on
Brooks Law)
• Function Point Analysis
• Proxy Based Estimation (PROBE) (from the Personal Software Process)
• The Planning Game (from Extreme Programming)
• Program Evaluation and Review Technique (PERT)
• Analysis Effort method
NOTE: Brooks' law was stated by Fred Brooks in his 1975 book The Mythical Man-
Month as "Adding manpower to a late software project makes it later." Likewise, Brooks
memorably stated "The bearing of a child takes nine months, no matter how many
women are assigned."
The value to be gained from utilizing a functional sizing technique, such as Function
Points, is primarily in the capability to accurately estimate a project early in the
development process.
In words of Wikipedia
Function Point Analysis (FPA) is an ISO recognized method to measure the functional
size of an information system. The functional size reflects the amount of functionality
that is relevant to and recognized by the user in the business. It is independent of the
technology used to implement the system.
The unit of measurement is "function points". So, FPA expresses the functional size of an
information system in a number of function points (for example: the size of a system is
314 fp's).
Function Points can be counted at all phases of a development project from requirements
up to and including implementation. This type of count is associated with new
development work. Scope creep can be tracked and monitored by understanding the
functional size at all phase of a project. Frequently, this type of count is called a baseline
function point count.
It is common to enhance software after it has been placed into production. This type of
function point count tries to size enhancement projects. All production applications
evolve over time. By tracking enhancement size and associated costs a historical database
for your organization can be built. Additionally, it is important to understand how a
Development project has changed over time.
Application counts are done on existing production applications. This “baseline count”
can be used with overall application metrics like total maintenance hours. This metric can
be used to track maintenance hours per function point. This is an example of a
normalized metric. It is not enough to examine only maintenance, but one must examine
the ratio of maintenance hours to size of the application to get a true picture.
Productivity:
The definition of productivity is the output-input ratio within a time period with due
consideration for quality.
The formula indicates that productivity can be improved by (1) by increasing outputs
with the same inputs, (2) by decreasing inputs but maintaining the same outputs, or (3) by
increasing outputs and decreasing inputs change the ratio favorably.
Average cost is the total cost of producing a particular quantity of output divided by that
quantity. In this case to Total Cost/Function Points. Marginal cost is the change in total
cost attributable to a one-unit change in output.
There are a variety of reasons why marginal costs for software increase as size increases.
The following is a list of some of the reasons
Function Points are the output of the software development process. Function points are
the unit of software. It is very important to understand that Function Points remain
constant regardless who develops the software or what language the software is
developed in. Unit costs need to be examined very closely. To calculate average unit cost
all items (units) are combined and divided by the total cost. On the other hand, to
accurately estimate the cost of an application each component cost needs to be estimated.
• Determine type of function point count
• Determine the application boundary
• Identify and rate transactional function types to determine their contribution to the
unadjusted function point count.
• Identify and rate data function types to determine their contribution to the
unadjusted function point count.
• Determine the value adjustment factor (VAF)
• Calculate the adjusted function point count.
To complete a function point count knowledge of function point rules and application
documentation is needed. Access to an application expert can improve the quality of the
count. Once the application boundary has been established, FPA can be broken into three
major parts
The function point method was originaly developed by Bij Albrecht. A function point is a
rough estimate of a unit of delivered functionality of a software project. Function points
(FP) measure size in terms of the amount of functionality in a system. Function points are
computed by first calculating an unadjusted function point count (UFC). Counts are made
for the following categories
Each user input that provides distinct application oriented data to the software is
counted.
Each user output that provides application oriented information to the user is
counted. In this context "output" refers to reports, screens, error messages, etc.
Individual data items within a report are not counted separately.
• Number of files
Once this data has been collected, a complexity rating is associated with each
count according to Table
Each count is multiplied by its corresponding complexity weight and the results
are summed to provide the UFC. The adjusted function point count (FP) is
calculated by multiplying the UFC by a technical complexity factor (TCF) also
referred to as Value Adjustment Factor (VAF). Components of the TCF are listed
in Table 2
The factor varies from 0.65 (if each Fi is set to 0) to 1.35 (if each Fi is set to 5)
(Fenton, 1997). The final function point calculation is:
Abbreviations
AFP : Adjusted Function Point
UFP : Unadjusted Function Point
GSC : General System Characteristics
FTR : File Types Referenced
FP : Function Point
ILF : Internal Logical File.
EIF : External Interface file
EI : External Inputs
EO : External Outputs
EQ : External Enquiries
RET : Record Element Type
DET : Data Element Type
FTR : File Type Reference
GSC : General System Characteristic
VAF : Value Adjustment Factor
LOC : Line of code
EAF : Effort Adjustment Factor
SLOC : Source Lines of Code
CPLX : Development/Technical Complexity Factor
TOOL : Development/Technical Tool Complexity Factor
TDEV : Development Time