Function Point Analysis
Function Point Analysis
Analysis
What is Software?
Software is not merely a set of programs.
Software is a collection of computer programs, procedures,business rules and
associated documentation and data.
Software Engineering
As we are aware, software is not just code but it also includes the data structures
that enable the programs to hold data and manipulate it, and the documents that
describe the system and the use of programs.
A software system is made for problem resolution. Making software begins with
understanding problem statement and then, designing the proposed solution and
implementing the same to solve the problem.
The goal of software engineering is to produce high quality software at low cost.
Waterfall model
This model suggests a systematic, sequential approach which begins at system
level feasibility study and progresses thru analysis, design ,coding, testing and
maintenance. A project begins with feasibility study. On successfully
demonstrating the feasibility of the project, the requirements analysis and project
planning starts. The design starts after the requirements analysis is complete and
coding begins after the design is complete. Once the programming is completed,
the code is integrated and testing is done. On successful completion of testing,
system in installed. After this, the regular operation and maintenance of the
system takes place.
Prototyping
The waterfall model assumes that the requirements of the system can be frozen
which may not be practically possible. In the prototyping approach, a prototype is
developed based on the currently known requirements. Development of prototype
undergoes informal design, coding and testing phases. Interactions with this
prototype can help customer better understand the requirements of desired
system. Once the clarity on requirements is achieved, the design, coding and
testing phases are followed sequentially as in Waterfall model.
Iterative
Here the basic idea is that the software is developed in increments, each
increment adding some functional capability to the system , till the full system is
implemented. At each step, requirement extensions and design modifications can
be made. Initially, a project control list is created that contains all the tasks that
should be performed to obtain the final implementation. Each step consists of
removing the next step from the list, designing the implementation for the
Estimation often suffers due to incomplete knowledge, lack of time and various
market and business pressures that are directly and indirectly put on the
estimator to arrive at more ‘business acceptable’ estimates.
On the other hand, accurate estimates for the size, effort, schedule and cost
ensure that commitments made to customers and budgets that are allocated are
realistic. This reduces the pressure on the project team to take short-cuts,
thereby increasing the probability of delivering on time, within budget and
fulfilling user requirements.
Estimate – Definition
A tentative judgement of the approximate value, worth, cost, size or other
attributes of significance.
User Requirement
Specification
Organisatio
n Project
database
Size Estimation
Effort Estimation
Contractual Other Cost
schedule Component
commitmen s
ts
Schedule Cost Estimation
Estimation
Size Estimate
For a software project, we are interested primarily in estimating the cost and
duration of the project. A project estimate is only as good as the estimate of the
size of the work.
Effort Estimate
The estimate for the manpower that is required for the software product. Along
with the schedule estimate, it determines the team size and effort allocation.
Effort is normally measured in terms of person-days or person-months.
Effort estimate is driven by size and many project related factors such as skill and
capability of the team, the language and platform to be used, the availability and
suitability of the platform, the stability of the team etc.
Schedule Estimate
Schedule is the duration between the start of the project and the end of the
project. This is normally represented in terms of calendar months. It is influenced
by the contractual schedule commitments.
Cost Estimate
This is the estimate of the costs for a software project. A major component of
costs in software project is manpower cost which is based on effort estimation.
Apart from this, there are few additional cost components, e.g. infrastructural
costs, travel, communication facilities, Project specific training, outsourcing
resources.
Estimation methods
To reduce the judgemental value of estimation and make it a scientific process,
software estimation needs to be based on estimation methods. The estimation
methods selected should be of following characteristics :
1. Should be able to convert requirements into one or more size estimates.
2. Should specify how effort, schedule and cost can be derived from the size
estimates and other project characteristics.
3. Should take into consideration project specific characteristics like SDLC
followed, skill level, requirements stability, process maturity of the
organization, automation during Software development.
4. Must be person independent
5. Must qualify the estimates with a certain degree of accuracy or tolerance.
6. Must support re-estimation at various phases of SDLC.
Direct method for Software sizing is Lines of code. The indirect method is
Function Points.
Lines of code is a technical measure as it measures the software from the
developer’s point of view and not from the user’s point of view. LOC as a measure
of the system size has various drawbacks.
A system’s LOC cannot be correctly known till the system is developed and LOC
estimates cannot be accurate till the design is complete for any system.
Expressing the size of a project in LOC at an early stage is almost impossible for
large systems.
LOC are more difficult to visualize in modern environments with interactive front
end development and auto generated code.
With the introduction of more complex systems, and use of visual languages with
the versions of system software changing so rapidly, in initial stages of SDLC
Function Point becomes a preferred method for estimation.
Function Points
Human beings solve problems by breaking them into smaller, understandable
pieces. Problems that may initially appear to be difficult are found to be simple
when dissected into their components, or classes. When the objects to be
classified are the contents of software systems, a set of definitions and rules, or a
scheme of classification, must be used to place these objects into their
appropriate categories. Function point analysis is one such technique: FPA is a
method to break systems into smaller components, so they can be better
understood and analyzed. It also provides a structured technique for problem
solving.
There are a variety of different methods used to count function point, like rules
developed by the Alan Albrecht and later revised by the International Function
Point User Group (IFPUG). Another method is Mark II Function Points developed
by Charles Symon. Feature points is another sizing method developed by Capers
Jones.
Definition
Data in motion
Data in motion is handled via transactional function types or transactions. All
software applications will have numerous elementary processes or independent
processes to move data. Transactions that bring data from outside the
application domain (or application boundary) to inside that application boundary
are referred to as external inputs. Transactions that take data from a resting
Data at rest
Applications store information for processing at a later time. Data at rest that is
maintained by the application in question is classified as internal logical files.
Data at rest that is maintained by another application are classified as external
interface files.
3. Unlike some other software metrics, different people can count function
points at different times, to obtain the same measure within a reasonable
margin of error. That is, the same conclusion will be drawn from the
results.
FPA is not useful to size Web Design. FPA is useful to size web development, but
not web design. FPA is concerned with the dynamic relationship between
transactions and files. FPA is not useful in estimating the time it will take to
create graphics, images, page layouts, so on and so forth.
User
Requirement
Specification
The total process used to size Function Points can be summarized by the following
seven steps :
1. Determine the type of function point
2. Identify Application Boundary
3. Identify all Data Functions and their complexity
4. Identify all transaction functions and their complexity
5. Determine the unadjusted function point count
6. Determine the value adjustment factor
7. Calculate the final FP count.
Technology Issues:
Internet/Intranet Applications
The boundary for an Internet/Intranet application is defined in a similar way for
traditional applications. For traditional applications the boundary is not drawn
just around the user interface or a group of screens but around the entire
application. Frequently, Internet/Intranet applications are just extensions to
current and existing applications.
Client/Server
The boundaries for client/server applications need to be drawn around both the
client and server. The reason is that neither the client nor server supports a
users (or sophisticated) view. That is, one alone does not represent a total
F1.Application documentation
and file rules are used to
FPA for Files
Application Documentation
identify files. F1. Identify Files
Transaction Model
Data Model
F2. Type of File(ILF or EIF)
F2. The application
documentation (transaction FPA Rules
F3. Number of DETs and RETs
F3. With the help of application documentation (data model) and file rules the
number data elements and record element types are determined.
F4. Each identified file is assigned a value of low, average or high based upon
type, data elements and record types.
F5. A distinct numerical value is assigned based upon type and value (low,
average, or high).
F6. All files are summed to create a file unadjusted function point count.
Data function types represent functionality provided to the user to meet internal
and external data requirements. Internal Logical Files (ILF) and External Interface
Files (EIF) are the two data function types.
An ILF should have at least one external output and/or external inquiry. That is,
at least one external output and/or external inquiry should include the ILF as an
FTR. Simply put, information is stored in an ILF, so it can be used later. The EO
or EQ could be from another application.
Rating:
Like all components, ILF’s are rated and valued. The rating is based upon the
number of data elements (DET’s) and the record types (RET’s). The table below
lists both the level (low, average or high) and appropriate value (7, 10 or 15).
Standard Documentation:
Table Layouts
Database descriptions
Logical data models
Field sizes and formats
Design Documentation
Functional Specifications
An EIF is a unique file that is shared between the system and some external
application(s). It is a user identifiable logical group of data referenced by the
system but not maintained by it.
The data resides entirely outside the application boundary and is maintained by
another applications external inputs. The external interface file is an internal
logical file for another application.
Each EIF included must have at least one transaction, external input, external
output or external inquiry against it. In other words there must at least one
transaction that includes the EIF as a FTR. If the EIF does not have one
transaction, then one must wonder what is the purpose of the EIF and how was
the information retrieved.
Only count the part of the file that is used by the application being counted not
the entire file. The internal logical file, of another application, that you access
may have a large amount of DET’s and RET’s, but only consider the DET’s and/or
RET’s that are used when rating an EIF.
Rating
The table below lists both the level (low, average or high) and appropriate value
(5, 7 or 10 unadjusted function points).
Table Layouts
Interface Diagrams
Database descriptions
Logical data models
Field sizes and formats
Design Documentation
Functional Specifications
User Requirements
Sr. No. Name #RETs #DETs Complexity level (Tick one) UFPs
Simple Average Complex
of ILF
Sr. No. Name #RETs #DETs Complexity level (Tick one) UFPs
Simple Average Complex
of EIF
T1. Application
documentation and transaction
rules are used to identify
transactions.
T3. With the help of application documentation (data model and transaction
model) and transaction rules the number data elements and file type referenced
are determined.
T4. Each identified transaction is assigned a value of low, average or high based
upon type, data elements, and files referenced.
T5. A distinct numerical value is assigned based upon type and value (low,
average, or high).
The complexities of EI,EO and EQ are determined by the number of Data Element
Types (DETs) and File Types Referenced (FTRs).
Examples of DET :
External Inputs: Data Input Fields, Error Messages, Calculated Values, Buttons
External Outputs: Data Fields on a Report, Calculated Values, Error Messages,
and Column Headings that are read from an ILF or EIF. Like an EQ and EO can
have an input side and output sides.
External Inquiries: Input Side - field used to search by, the click of the mouse.
Output side - displayed fields on a screen. DET’s for an EQ must come from
either an EIF or ILF.
Radio Buttons
Radio Buttons are treated as data element types. Within a group of, a frame,
radio buttons the user has the option of selecting only one radio button; so only
one data element type is counted for all the radio buttons contained in the frame.
Check Boxes
Check Boxes differ from radio buttons in that more than one check box can be
selected at a time. Each check box, within a frame, that can be selected should
be treated as a data element.
For example, a simple application to track distributors could have fields for
Distributor Name, Address, City, State, Zip, Phone Number, and Fax Number.
This would represent seven fields or (seven data elements) and the add
command button would represent the eighth data element. In short, the “add”
external input represents a one external input with eight data elements, the
“change” external input represents another external input with eight (seven data
elements plus the “change” command button), and the “delete” external input
represents the last external input with eight data elements (seven fields plus the
“delete” command button).
Sound Bytes
Many GUI applications have a sound byte attached. This represents one data
element. The number of notes played is simply recursive information. If the
length of the sound byte increases, then the data element remains one. For
example, you can play the “Star Spangled Banner” for two seconds or four
Photographic Images
A photographic image is another data element, and is counted as one. A human
resource application may display employee name, start date, etc. and a
photograph of the employee. The photograph is treated the same as employee
name or employee start date. The photograph is stored and maintained like any
other piece of information about the employee.
Messages
There are three types of messages that are generated in a GUI application: error
messages, confirmation messages and notification messages. Error messages and
confirmation messages indicate that an error has occurred or that a process will be or have
been completed. They are not an elementary or independent process alone, but they are
part of another elementary process. A message that would state, “zip code is required”
would be an example of an error message. A message that would state, “are you sure you
want to delete customer” is an example of a confirmation message. Neither type of
message is treated as a unique external output, but each is treated as a data element for
the appropriate transaction.
An external input has to be unique and not just an extension. If all the fields of a
business transaction cannot fit on one screen and therefore split into two screens,
the two screens count as a single External Input.
EIs may be input to the system through data entry screens, or input in terms of a
electronic files created by some other system.
An EI may reference ILFs (read or insert or update or delete) and EIFs (read
only). An FTR is counted for each ILF maintained by an EI. An FTR is counted for
each ILF or EIF read while processing an EI. A file that is both read and
maintained by the same EI is counted as one FTR for that EI. For example, an
External Input may update an internal logical file, but must also reference a
“security file” to make sure that the user has appropriate security levels. This
would be an example of two FTR’s.
Data Elements:
Unique sets of data elements help distinguish external input from other external
input. It is the set of DET’s combined that create the elementary process called
an EI. The following are examples of DET’s.
Rating:
Like all components, EI’s are rated and valued. The rating is based upon the
number of data element types (DET’s) and the file types referenced (FTR’s).
The table below lists both the level (low, average or high) and appropriate value
(3, 4 or 6 unadjusted function points).
Standard Documentation:
A good source of information to determine external inputs is Screen Layouts,
Screen Formats & dialogs, and layouts of any input forms. Additional inputs from
other applications should be inventoried here. Inputs from other applications
must update internal logical files of the application being counted.
Screen Layouts
Screen Dialogs
Design Documentation
Functional Specifications
User Requirements
Any Input Forms
Context Diagrams
Data Flow Diagrams
Derived Data is data that is processed beyond direct retrieval and editing of
information from internal logical files or external interface files. Derived data is
usually the result of algorithms, or calculations. Derived data occurs when one
or more data elements are combined with a formula to generate or derive an
additional data element(s). This derived data does not appear in any FTR
(internal logical file or external interface file).
The definition states that an EO contains information, which derived data passes
across the boundary from inside to outside. Some confusion may arise because
an EO has an input side. The confusion is the definition reads data passes across
the boundary from inside to outside. The input side of an EO is search criteria,
parameters, etc does not maintain an ILF. The information that a cross from
outside to inside (input side) is not permanent data, but it is transient data. The
intent of the information coming from outside the application (input side) is not to
maintain an ILF.
Derived Data displayed in textual fashion (rows and columns) and graphical
format is an example of two external outputs.
Data Elements:
Unique sets of data elements help distinguish one external output from another.
Keep in mind that a DET is something that is dynamic not a static field (A DET is
a unique user recognizable, non-recursive (non-repetitive) field).
Error Messages
Confirmation Messages
Calculated Values (derived data)
Values on reports that are read from an internal logical file or external
interface file.
Recursive values or fields (count only once)
Generally, do not count report headings (literals) as data elements unless
they are dynamic. That is, if the report headings are read from files that are
maintained they may be DET’s also.
System generated dates that are on the tops or reports or are displayed are
normally not counted as DET’s. If system generated dates are part of
business information of the external output they should be counted as DET’s.
For example, the date an invoice is printed or the date a check is printed.
Unique FTR’s help distinguish one external output from another. An FTR must be
either an Internal Logical File and/or External Interface File. Each EO must have
at least one FTR (either ILF or EIF). If the EO does not reference at least one
FTR, then where did the information (DET’s) come from?
Rating:
Like all components, EO’s are rated and valued. The rating is based upon the
number of data elements (DET’s) and the file types referenced (FTR’s). The
rating is based upon the total number of unique (combined unique input and
out sides) data elements (DET’s) and the file types referenced (FTR’s) (combined
unique input and output sides). DET’s and FTR’s were discussed earlier. The
table below lists both the level (low, average or high) and appropriate value (4, 5
or 7 unadjusted function points).
Standard Documentation:
Report Layouts
Design Documentation
Functional Specifications
User Requirements
Database descriptions
Field Sizes and Formats
Graphical Report Layouts
The following words are associated with an “external outputs.” While reading
textual documents or application descriptions look for these types of words. They
may indicate an external output.
Browse Reports
External Inquiry (EQ) - an elementary process with both input and output
components that result in data retrieval from one or more internal logical files
and external interface files. The input process does not update or maintain any
FTR’s (Internal Logical Files or External Interface Files) and the output side does
not contain derived data.
There are a lot of commonalities between an EO and EQ. Both have input and
output sides, but an EQ cannot have derived data. An EQ cannot update an ILF.
An EQ is basically a read from a FTR
Data Elements:
Unique sets of data elements help to distinguish one external inquiry from
another external inquiry.
Input Side
Click of a the mouse
Search values
Action keys (command buttons)
Error Messages
Confirmation Messages (searching)
Clicking on the an action key
Scrolling
Recursive fields are counted only once.
Outside
Values read from an internal logical file or external interface file
Like an EI, action keys that perform the same function but appear multiple times
are counted as only one DET.
Error Messages and confirmation messages can and do occur on either the input
side and/or output side. If a user initiates a search and a message is displayed,
“please wait searching” is an example of a confirmation message on the input
side. The message “all fields must be populated” is another example of an
error message on the input side. On the other hand, if the message is
“customer not found” is an example of an error message on the output side.
That is, the input side contained no problems. The database was searched and
the “error” has occurred on the output side of the transaction.
Unique FTR’s help distinguish one external inquiry from another external inquiry.
Every EQ must have at least one associated FTR (either ILF or EIF). If the EQ
does not have an associated FTR, then where did the information (DET’s that
appear on the EQ) come from?
Both the input side and output side must be considered when evaluating the
FTR’s used by an external inquiry. Normally they are the same but there are
instances where they may not be the same. The combined total should be used
when evaluating an EQ. For example, a security check may be done on the input
side of an external inquiry. The security check is done to make sure the user of
the application has the appropriate level of authority to view the data.
EQ’s can contain business data, control data and rules based data.
Standard Documentation:
Screen Layouts
Design Documentation
Functional Specifications
Table Layouts
User Requirements
Database descriptions
The following words are associated with an “external inquiry.” While reading
textual document or application description look for these type of words. They
may indicate an external inquiry.
Browse Query
Display Scan
Extract Seek
Fetch Select
Find Show
Get View
Drop Down Reports
Lists
Look Ups
On-lines
Output
Pick Lists
Print
Sr. No. Name #FTRs #DETs Complexity level (Tick one) UFPs
Simple Average Complex
of EI
Total EI UFPs
Sr. No. Name #FTRs #DETs Complexity level (Tick one) UFPs
Simple Average Complex
of EO
Total EO UFPs
Sr. No. Name #FTRs #DETs Complexity level (Tick one) UFPs
Simple Average Complex
of EQ
Total EQ UFPs
Definition:
The value adjustment factor (VAF) is based on 14 general system characteristics
(GSC’s) that rate the general functionality of the application being counted. Each
characteristic has associated descriptions that help determine the degrees of
influence of the characteristics.
Rating:
The degrees of influence range on a scale of zero to five, from no influence to
strong influence. Each characteristic is assigned the rating based upon detail
descriptions provided by the IFPUG 4.1 Manual. The ratings are:
14
VAF = 0.65 + [( å Ci) / 100]
i =1
where: Ci = degree of influence for each General System Characteristic
. i = is from 1 to 14 representing each GSC.
å = is summation of all 14 GSC’s.
GSC’s at a Glance:
Mark II method
This method was developed by Mr. Charles Symons in 1988.
Mark II treats the system as a collection of logical transactions, where a logical
transaction is triggered by a unique event. Each logical transaction consists of
Input across the boundary (input data elements)
Processing involving stores data within the boundary (number of entities
referred)
Output back across the boundary (output data elements)
Each logical transaction is computed as :
Weight for input elements (Wi) x Number of input data elements
+ Weight for entities referenced (We) x Number of entities referenced
+ Weight for output elements (Wo) x Number of output data elements
Sum this for all logical transactions to get MkII Function Point Index.
Feature Points
The feature point method is a superset of the function point method. It is used
widely for scientific systems.
It makes use of an additional component , Algorithms , adding to the set of the
five FP components. The algorithm component is assigned a weighted value of 3.
When using this method, IFPUG values attached to internal files are reduced.
Object Points
In the object point model, the term object is used for objects like screens, reports
and 3GL componenets.
Screens are classified on the number of views and sources while reports are
classified based on the number of sections and sources. Weight are used for all
three types to determine the total object point count.
Once the object points are obtained, the percentage reuse is estimated.
Depending on the percentage reuse, the New object points (NOP) are computed
next.
Productivity
The definition of productivity is the output-input ratio within a time period with
due consideration for quality.
Other Factors
In addition to above factors, following are some of the factors which also have
significant impact on the productivity.
1. Availability and stability of development environment
2. Team skill, capability and experience
3. Process maturity
4. Employee turnover
5. Software reusability etc.
The process used to build WBS is iterative. The WBS gives us the tasks that need
to be estimated and scheduled. Effectiveness of WBS depends on the
completeness of the task list. Apart from the normal project activities and
components, one should include
1. Preparation and review of documents activity
2. Project planning and tracking
3. Client interactions
4. Project specific training
Having obtained this task list, each task is then estimated. The inter task
interdependencies are next understood using techniques like PERT-CPM and
schedule is made taking into account the effort required for the task and
dependencies between tasks.
Overhead costs are those cost that cannot be directly attributed to a particular
software project. For example, the cost to keep the LAN up in running is an
overhead cost. Executive salaries would be another example of overhead costs
since their salaries cannot be attributed to a specific project.
Average cost is total cost divided by to number of units produced. Total costs
for a project divided by the number of function points gives us the dollars per
function point. Average hours are the total number of hours divided by the total
number of function points, which yields hours per function point. Marginal cost
is the change in total cost attributable to a one-unit change in output. Another
characteristic is that as software projects become large marginal cost goes up.
That means that unit costs rises as software projects become larger. There are
not many economies of scale with the development of software.
When software projects are estimated all direct and indirect costs need to be
included in the cost of the software project. Direct materials are those materials
that are directly related to the development of a software project. Indirect
materials are those materials that are not directly related to the cost of the
Subtotal
Add Buffer
Total
Process improvement
Estimation Processes
Procedures, Templates,
Organisationwide
Guidelines, Checklists,
Database of projects
Tools/methods
Size Estimation
Monitoring and tracking
Effort Estimation Estimate
estimates thru Project
Schedule Estimation
status meetings
Cost Estimation
Database Contents
Following is the type of data an organization should build to develop organization-
wide database of completed projects. This data is gathered by projects during the
project tracking and also at the project closure.
1. Project Application domain
2. Project deliverables
3. Project life cycles and phases
4. Project development platform
5. Project Size (estimated and actual)
6. Project effort (estimated and actual)
7. Project schedule (estimated and actual)
8. Project Characteristics (GSM related)
9. Project task breakdown
10. Project development approach
11. Risk related information
12. Quality related data
Estimation Tools
Tool Website
Function Point Workbench www.spr.com
PQMPlus www.uptweb.com
Function Point Manager www.abtcorp.com
Brief History:
Function Point Analysis was developed first by Allan J. Albrecht in the mid 1970s.
It was an attempt to overcome difficulties associated with lines of code as a
measure of software size, and to assist in developing a mechanism to predict
effort associated with software development. The method was first published in
1979, then later in 1983. In 1984 Albrecht refined the method and since 1986,
when the International Function Point User Group (IFPUG) was set up, several
versions of the Function Point Counting Practices Manual have been published by
IFPUG.
This document takes the inputs from FPA counting manual by IFPUG.