BSIT-6: Function Points and Use Cases
BSIT-6: Function Points and Use Cases
BSIT-6
University Institute of Information Technology (UIIT),
PMAS-Arid Agriculture University (AAUR), Rawalpindi
Function Points
Introduction
▪ Increasingly important facet of software development is the ability to estimate
the associated cost of development early in the development process
▪ Estimating software size is a difficult problem that requires specific knowledge
of the system functions in terms of
▪ Scope
▪ Complexity
▪ Interactions
▪ Most frequently cited sources of software size metrics are
▪ Lines of code
▪ Function point analysis
Problems with Lines of Code
▪ Lack of a universally accepted definition for exactly what a line of
code is
▪ Language dependence (high-level versus low-level programming
languages)
▪ It is difficult to estimate the number of lines of code that will be
needed to develop a system from information that is available in
analysis and design phases
▪ Lines of code places all emphasis on coding, which is only part of
the implementation phase of a software development project
Why IFPUG Thinks You Should Not Use LOC?
▪ Lines of code tend to reward profligate design and penalize concise
design
▪ There is no industry standards (ISO or otherwise) for lines of
code
▪ Lines of code cannot be used for normalizing across platform,
language or by organization
▪ Some 4GL do not even use lines of code
inputs
3 simple X 2 = 6
4 average X 4 = 16
1 complex X 6 = 6
outputs
6 average X 5 = 30
2 complex X 7 = 14
files
5 complex X 15 = 75
inquiries
8 average X 4 = 32
interfaces
3 average X 7 = 21
4 complex X 10 = 40
Function Point Analysis
In addition to these individually weighted function points, there are factors that affect the project
and/or system as a whole. There are a number (~35) of these factors that affect the size of the
project effort, and each is ranked from “0”- no influence to “5”- essential.
The following are some examples of these factors:
▪ Is high performance critical?
▪ Is the internal processing complex?
▪ Is the system to be used in multiple sites and/or by multiple organizations?
▪ Is the code designed to be reusable?
▪ Is the processing to be distributed?
▪ and so forth . . .
Function Point Analysis
Continuing our example . . .
Complex internal processing = 3
Code to be reusable= 2
High performance = 4
Multiple sites = 3
Distributed processing = 5
Project adjustment factor = 17
Adjustment calculation:
Adjusted FP = Unadjusted FP X [0.65 + (adjustment factor X 0.01)]
= 240 X [0.65 + ( 17 X 0.01)]
= 240 X [0.82]
= 197 Adjusted function points
Function Point Analysis
But how long will the project take and how much will it cost?
▪ As previously measured, programmers in our organization
average 18 function points per month. Thus . . .
197 FP divided by 18 = 11 man-months
▪ If the average programmer is paid $5,200 per month (including
benefits), then the [labor] cost of the project will be . . .
11 man-months X $5,200 = $57,200
Uses of Function Points
▪ Measure productivity (ex. Number of function points achieved per work hour
expended)
▪ Estimate development and support (cost benefit analysis, staffing estimation)
▪ Monitor outsourcing agreements (Ensure that the outsourcing entity delivers the
level of support and productivity gains that they promise)
▪ Drive IS related business decisions (Allow decisions regarding the retaining,
retiring and redesign of applications to be made)
▪ Normalize other measures (Other measures, such as defects, frequently require
the size in function points)
Function Point Analysis
Because function point analysis is independent of language
used, development platform, etc. it can be used to identify
the productivity benefits of . . .
▪ One programming language over another
▪ One development platform over another
▪ One development methodology over another
▪ One programming department over another
▪ Before-and-after gains in investing in programmer training
▪ And so forth . . .
Function Point Analysis
But there are problems and criticisms:
▪ Function point counts are affected by project size
▪ Difficult to apply to massively distributed systems or to systems with very
complex internal processing
▪ Difficult to define logical files from physical files
▪ The validity of the weights that Albrecht established – and the
consistency of their application – has been challenged
▪ Different companies will calculate function points slightly different,
making intercompany comparisons questionable
When Should You Count Function Points?
▪ Early and often
▪ The sooner you can quantify what a project is delivering, the sooner it is
under control
▪ Under IFPUG 4.1, there are rules and guidelines that make it possible to
count function points once the requirements have been finalized
▪ During requirements gathering the estimate of size in function points can
be refined continuously
▪ Function points should be recounted throughout the development
process and counts can be compared to measure scope creep and
breakage
Who Should Count Function Points?
▪ Recommended: One day class and on-the-job training by an
experienced counter
▪ Technical people have long been the main function point counters
▪ Senior level users can also be trained to count function points
▪ For a large organization, a small group involved with function point
counting and other estimating activity is ideal
▪ Count frequently enough to stay current with the rules
▪ Independent of the projects/ less biased feedback
▪ Consistent counting and help from other group members
Use Case Points
Use Case Points
▪ 1993 Gustav Karner for estimating a project size
▪ Use case and function points have similarity
▪ Use case technique for estimation is similar as function point
▪ Count key aspects of your requirements to form an unadjusted point
count
▪ Use several sets of questions about your team and their environment to
create a fudge factor.
▪ Multiply your original count by the fudge factor to come up with an
adjusted point count
▪ UCP = UUCP * TCF * ECF
Do Use Cases Improve Estimates?
3500
3500
3000
3000
2500
2500
FP
FP
2000
2000
1500
1500
1000
1000
500
500
00
00 20
20 40
40 60
60 80
80 100
100 120
120 140
140 160
160
UCP
UCP
DELPHI
▪ Based on the Hegelian Principle (George Wilhelm Friedrich
Hegel, 1770-1831 )
▪ Three-step process of
▪ Thesis
▪ All present their opinion or views on a given subject
▪ Antithesis
▪ Establishing views and opposing views
▪ Synthesis
▪ opposites are brought together to form the new thesis
DELPHI
▪ A group meeting is held to discuss the product and estimation issues
▪ Experts produce an independent estimate
▪ Estimates are returned indicating the median estimate and the
expert’s personal estimate
▪ Another group meeting is held to discuss results
▪ Experts prepare a revised independent estimate
▪ Steps 3-6 are repeated until the panel of experts reaches a
consensus
Wideband Delphi
▪ Rand corporation used original Delphi approach to predict future technologies
▪ 1970s, Barry Boehm and his RAND colleagues modified DELPHI method into
Wideband DELPHI, which included more estimation team interaction
▪ Group consensus approach
▪ This is a disciplined method of using the experience of several people to reach an
estimate that incorporates all of their knowledge.
▪ 2) Meet with them to discuss issues and describe the software to them
▪ Specifications, other source documents, WBS, etc.
▪ Let them add their own information, questions, etc.
▪ All take notes
▪ 7) Each expert updates his or her estimate based on the new information
▪ 8) Record the new estimates
WBD
▪ 9) Discuss again
▪ Typically, new questions will come up
▪ But this round is typically much shorter