Professional Documents
Culture Documents
? Method overview
The Function Points method is a method for estimating effort of developing software
projects. The method is adjusted mainly for estimating effort of developing user
interfaces. The method essence can be described as follows.
The EFP method is based on identifying software objects at different levels of detail.
There are the following levels: summary, intermediate, and detailed (listed from the
lesser level to the greater one). To achieve the desirable accuracy, the identification of
the objects is to be implemented at possibly more detailed level. Bearing in mind that
the EFP method at the lesser levels of detail (summary and intermediate) lies very
closely to the expert estimation method and has very little advantage in comparison
with the latest, the detailed level is strongly recommended for usage.
They distinguish the following objects of the EFP method: Logical Data and
Functionalities.
Each EFP object (both logical data and functionality) is classified on a scale of
complexity. The Logical Data are classified as Simple, Average, Complex, Low
Multiplicity and High Multiplicity in accordance with amount of Information Objects,
Data Element Types (DETs), and Record Element Types (RETs) that are included in
the LD specified. Here, Information Object is a user identifiable group of logically
related data; Record Element Type is user recognizable sub-group of data elements
within an Information Object; Data Element Type is a unique user recognizable,
non-repetitive field or GUI element.
In accordance with the identified complexity, each of EFP objects is associated with
a set of three FP values (minimum, average and maximum) based on the universal
statistical table provided by the IFPUG97 standard (see below). After the EFP objects
are identified and rated all the function points are to be summed. Note that minimum,
average and maximum function points are to be summed separately, specifying
a range of validity of the estimation in terms of so-called Unadjusted Function
Points (UFPs).
After the final sum of Unadjusted Function Points is derived the Value Adjustment
Factor (VAF) is to be calculated to take into account the degree of influence of
General System Characteristics (GSCs) . The degrees of influence range on a
scale of zero to five, from no influence to strong influence (see ). Once all the 14
GSCs have been answered, they should be tabulated using the IFPUG Value
Adjustment Equation. The final Function Point count (amount of so-called adjusted
function points - AFPs) is obtained by multiplying the UPF by the VAF.
In such a way, the algorithm of estimating project effort will be described as follows:
2. Identifying complexities of the Logical Data and assigning the specified sets of
Function Point values to the Information Objects identified.
3. Classifying Functionalities.
9. Entering the number of SLOC into the COCOMOII model to calculate Waterfall
Phase Distribution for the project to be developed.
According to the above, the Logical Data are classified as Simple (corresponds to
detailed and intermediate level), Average (corresponds to detailed and
intermediate level), Complex (corresponds to detailed and intermediate level), Low
Multiplicity (corresponds to summary level) and High Multiplicity (corresponds to
summary level) in accordance with amount of Information Objects, Data Element
Types (DETs), and Record Element Types (RETs) that are included in the LD
specified. In particular, at summary level of detail, complexity of Logical Data
depends on how many Information Objects are present in the project (see Table 1). At
detailed (or, idem, intermediate) level of detail, the amount of RETs and DETs
included in Information Objects determines complexity of Logical Data. In the latest
case, each Information Object must be separately identified as simple, average or
complex (see Table 2) and associated with suitable set of Function Point values that
will be summed later.
Note that they dont distinguish detailed level and intermediate level with
reference to Logical Data.
Table 1
Complexity of Logical Data (LD) Number of Information Objects included
Table 2
1 to 19 20 - 50 51 or More
To obtain the set of Function Point values corresponding to the Logical Data classified,
use the following table:
Table 3
Simple 5 6 7
Average 8 9 10
Complex 13 14 15
Low Multiplicity 14 18 22
High Multiplicity 27 39 51
? Classifying Functionalities
According to the above, Functionalities are classified, in order of magnitude, as
Functional Primitive (corresponds to detailed level), Microfunction (corresponds to
detailed level), Function (corresponds to intermediate level), and Macrofunction
(corresponds to summary level) in accordance with amount of functional primitives
that are included in the functionality specified.
Functional Primitive (fP) is the smallest process, performed with the aid of the
software system, with autonomy and significance characteristics, that allows the user
to attain a unitary business objective at the operational level. It is meaningless, from
the user's point of view, to proceed to further useful decomposition of a Functional
Primitive. There are three types of Functional Primitives: Primitive Input (PI), Primitive
Output (PO) and Primitive Inquiry (PQ).
Primitive Input (PI) - is an elementary process in which data crosses the boundary of
the application from outside to inside. This data may come from a data input screen,
for example. If a Primitive Input adds, changes and deletes (maintains) information on
an Information Object, then this represents three primitive inputs. When filling any
input form by enabling/disabling checkboxes, selecting radio-buttons, filling text fields
and so on and clicking OK you implement only one Primitive Input. Primitive Inputs
(especially change and delete) may be preceded by a Primitive Inquiry (see below).
For example, if you want to select a parameter from a drop-down list you have to
implement one Primitive Inquiry (accessing the drop-down list specified) and one
Primitive Input (selecting the parameter needed from the list followed by clicking OK).
Primitive Inquiry (PQ) - an elementary process with both input and output components
that result in data retrieval from one or more Information Objects. The input process
does not update any Information Object and the output does not contain derived
data. A Primitive Inquiry cannot have calculated values or derived data. This
characteristic distinguishes a Primitive Inquiry from a Primitive Output. For example,
accessing a drop-down parameter list or list of CDs names that are present in the
database is a Primitive Inquiry.
Primitive Outputs (PO) - an elementary process in which derived data passes across
the boundary of the application from inside to outside. Additionally, a PO may update
an Information Object. The data may create reports or output files sent to other
applications. These reports and files are created from information contained in one or
more Information Objects. Derived Data is data that is processed beyond direct
retrieval and editing of information from Information Objects. 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 Information Object. Unlike other
primitives POs almost always contain business data. For example, Notification
Messages are considered POs, because a notification message is the result of some
business logic processing. (For example, a trading application may notify a broker that
the customer trying to place an order does not have adequate funds in their account.)
Derived Data displayed in textual fashion (rows and columns) and graphical format is
an example of two external outputs.
To obtain the set of Function Point values corresponding to the Function Primitives,
use the following table:
Table 4
PI 4 5 7
PO 5 6 6
PQ 4 5 7
To obtain the set of Function Point values corresponding to Microfunction, use the
following table:
Table 5
mF 16 18 20
Table 6
Small 5-12
Medium 13-19
Large 20-25
To obtain the set of Function Point values corresponding to a Function, use the
following table:
Table 7
Small 45 56 67
Medium 73 91 109
Table 8
Macrofunction #Fs included
Small 2-3
Medium 4-7
Large 8-12
To obtain the set of Function Point values corresponding to a Macrofunction, use the
following table:
Table 9
F Min. Avg. Max.
Once all the 14 GSCs have been answered, they should be tabulated using the
IFPUG Value Adjustment Equation
14
i =1 ,
Brief description of the General System Characteristic is contained in the table 10:
Table 10
2. Distributed data processing How are distributed data and processing functions
handled?
4. Heavily used configuration How heavily used is the current hardware platform
where the application will be executed?
5. Transaction rate How frequently are transactions executed daily,
weekly, monthly, etc.?
12. Operational ease How effective and/or automated are start-up, back
up, and recovery procedures?
* For more details on the General System Characteristics, see the IFPUG 4.1 Manual created on
the base of IFPUG standards.
To determine the conversion ratio suited to the language specified, use the following table:
Table 11
Table 11
* Note, that in case of multi-language project you have to calculate SLOC for each used language
separately.
The customer generally finds information about what happens inside the system uninteresting, so
the use-case descriptions may leave such information out. In these cases, the use-case description
reads like a black-box description, in which internal details on what the system does in response
to an actors actions is either missing or very summarily described. To find the objects which
perform the use case, you need to have the white-box description of what the system does from
an internal perspective. (Rational Unified Process)
The following example obtained from Rational Unified Process illustrates how black-box
description is transformed into white-box description.
Example
In the case of an Automated Teller Machine (ATM), the customer of the system may
prefer to say
"The ATM validates the Bank Customers card." black-box description that could
be contained in the Statement of Work (IK) -
to describe the user authentication behavior of the system. While this may be sufficient
for the customer, it gives us no real idea of what really happens inside the ATM to
validate the card.
In order to form an internal picture of how the system really works, at a sufficient level
of detail to identify objects, we may need additional information that must be
obtained from the customer (IK). Taking the ATM card validation activity as an
example, the expanded description would read as:
"The ATM sends the customers account number and the PIN to the ATM Network to
be validated. The ATM Network returns success if the customer number and the PIN
match and the customer is authorized to perform transactions, otherwise the ATM
Network returns failure." - white-box description (IK)
On the base of white-box description the flow of events is to be drawn. The latest is a base for
identifying the Functionalities. In the example above, the event The ATM sends the customers
account number and the PIN to the ATM Network to be validated is to be identified as Primitive
Input (PI) because the process in which data (account number and the PIN) crosses the boundary
of the application from outside to inside is present. The event The ATM Network returns success
if the customer number and the PIN match and the customer is authorized to perform transactions,
otherwise the ATM Network returns failure is to be identified as Primitive Output (PO), because a
notification message that is the result of some business logic processing (in this case, process of
authorization) is to be sent.
* Note that effort of realizing business logic that lies in the example between PI and PO is not
estimated, because, as mentioned above, the method is intended for estimating effort of
developing of user interfaces.
* NB Business logic may be realized in programming language that differs from that of user
interface.
According to Rational Unified Process, The internal behavior of the system should be
unambiguously, so that it is clear what the system must do. It is not necessary to define the
elements within the system (objects) that are responsible for performing that behavior just a clear
definition of what needs to be done. In order to determine whether a use-case description is
satisfactory in aspect of applying the EFP method, examine the description by asking the
question "what does it mean for the system to do that thing? If what the system does to perform
the behavior is not well defined enough to answer that question, there is likely more information
that needs to be uncovered. " (Rational Unified Process)
After use-case model is created on the base of use cases described, drafting a use-case hierarchy
is recommended. When drafting a hierarchy, bear in mind that each functionality is to be taken into
account only once when counting Function Points. Hence, both the use cases having
relationships stereotyped as uses (used use cases), include (included use cases), extend (inserted
use cases) and the use cases that are more general with regard to some other (more specific) use
cases are to be arranged under suitable base use cases to avoid repeated accounting of use
cases. The abstract use cases must be excluded from the FP-counting.
"The ATM sends the customer's account number
and the PIN to the ATM Network to be validated.
The ATM Network returns success if the customer
number and the PIN match and the customer is
authorized to perform transactions, otherwise the
Making a deposit
ATM Network returns failure." = 1Primitive Input
(PI) + 1Primitive Output (PO)
<<uses>>
<<include>>
For instance, the use case described in the example above can be used by some other use cases.
The possible use-case diagram is present below:
This use-case diagram is to be transformed into the hierarchy diagram that is present below:
1. The use cases of suitable level of detail containing the white-box description of system
behavior are to be extracted from the Statement of Work provided by Customer. If the sufficient
level of detail of use-case description cant be drawn from the Statement of Work the Customer
ought to be applied for additional information. The main criterion of sufficiency of information
obtained from Customer is provided by the question "what does it mean for the system to do
that thing?
2. On the base of white-box description the flow of events is to be drawn. The flow of events is
the base for identifying the Functionalities.
3. The use-case model is to be transformed into hierarchical model. Herein the use cases having
relationships stereotyped as uses (used use cases), include (included use cases), extend
(inserted use cases) and the use cases that are more general with regard to some other (more
specific) use cases are to be arranged under suitable base use cases.
4. The use cases of the hierarchical model ought to be bottom-up analyzed in order to avoid
repeated accounting of use cases. Each use case must be taken into account only once (!).
? Case study
Let's estimate effort for developing a client part of software system intended for providing
information interchange between ships and the land. The server part is situates on the land. The
client parts are to be situated on different ships (i.e. on multiple sites) and must implement the
following functions:
2. Storing documents in the local database that can be synchronized with the central
database.
About 70 types of document templates will be created. Each template will contain about 15 fields to
be filled.
Authorization
Creating a document Storing the document in the local
<<include>> database
<<include>>
The captain
Editing the document
<<include>>
Sending a document to the land <<include>>
<<include>>
Selecting a document from the
local database
Lets estimate the Logical Data at detailed level of detail. Remember that documents are generated
when filling templates with real values that can be stored separately from the templates. Hence,
there are two RETs in the Information Object called Documents: Template form storage and
Document data. Taking into account that each template will contain about 15 fields, it would be
natural to assume that amount of DETs would exceed 51 despite possible repeatability of some
fields. Hence, according to the Table 2 we have to assign the Complex value to the Information
Object Documents (at the moment, amount of DETs included in the Document Data RET cant
already influence estimation of Information Object complexity). According to the Table 3 the
following Function Point values correspond to the Information Object specified: Min .13, Avg.
14, Max. - 15 . It is obviously that complexity value of the second Information Object (Users) is
Simple because this Information Object consists of a single RET that would contain certainly less
than 51 DETs. Hence, according to the Table 3 the following Function Point values correspond to
the Information Object Users : Min . 5, Avg. 6, Max. - 7. In such a way, the Function Point
values corresponding to the Logical Data at detailed level of detail can be calculated as follows:
Min .{13 + 5} =18, Avg. {14 + 6} =20, Max. {15 + 7} =22 .
Note that the average value of detailed level is almost identical to the summary level's one,
but the deviation between average and minimum and maximum is clearly reduced .
Lets assume that developing of database will be implemented by using SQL.. To calculate SLOC
for the FP-ranges calculated, select from the Table 11 the suitable conversion ratio (Language -
Query-default; SLOC/FP - 13); then multiply values of FP-range by the conversion ratio selected.
The resulted SLOC(SQL) values are: Min .234, Avg. 260, Max. - 286 .
The following table contains the complete information on Logical Data parameters:
2. Classifying Functionalities
According to the above we can use use-case model for applying the EFP method to estimating
effort of the project. To avoid repeated counting of any functionality included in different use cases,
lets transform the use-case diagram into so-called hierarchy use-case diagram:
This use case must be excluded
from FP-counting because there is
not any its peculiar functionality
that is not included in any other
use case of the model.
Authorization
Sending a document to the land Printing the document Editing the document Creating a document
Selecting a document from the Storing the document in the local Selecting a document template
local database database
The Editing the document use case must be excluded from FP-counting because there is not
any its peculiar functionality that is not included in any other use case of the model, in particular,
in the Creating a document use case and the Selecting a document from the local database use
case that is stereotyped as include regarding other two use cases.
The Selecting a document from the local database use case. Flow of events: 1. User calls
the list containing names of the documents that are present in the local database - 1 Primitive
Request. 2. User selects the needed document from the list and clicks OK 1 Primitive Input.
The Storing the documents in the local database use case. Flow of events: 1. A document is
open; User saves the document by clicking Save 1 Primitive Input..
The Selecting a document template use case. Flow of events: 1. User calls the list containing
names of the templates that are present in the local database - 1 Primitive Request. 2. User
selects the appropriate template from the list and clicks OK 1 Primitive Input.
The Sending a document to the land use case. Flow of events: 1. User invokes the Selecting
a document from the local database use case ; 2. User clicks Send - 1 Primitive Input.
The Printing the document use case. Flow of events: 1. User invokes the Selecting a
document from the local database use case ; 2. User clicks Print - 1 Primitive Inquiry.
The Creating a document use case. Flow of events: 1. User invokes the Selecting a
document template use case ; 2. User fills fields of the template and clicks OK - 1 Primitive
Input; 3. User invokes the Storing the document in the local database use case.
The Authorization use case. 1. User enters the login and password (fills the suitable fields) and
clicks OK 1 Primitive Input. 2. The system carries out authorization of the user and returns error
message if users login and/or password are not valid 1 Primitive Output.
Besides, the two , lets call them so, supplementary use cases - Sending Error message and
Deleting the current task - are to be identified. For example, error message is to be sent by the
system when some mandatory fields of a template are not filled when creating a new document . It
would be a message like Data entered are not sufficient. In some cases a current task is to be
interrupted and all the intermediate results are to be deleted.
The Sending Error message use case. According to the above, an error message is to be
classified as Primitive Output.
The Deleting the current task use case. Flow of events: User clicks the Delete current task
button when a task is being executed 1 Primitive Input.