| Printable Version
Quoting For Software Services
By Shivprasad koirala
DATE: 30-august-2004
TITLE: Quoting For Software Services
SUMMARY: The software industry is an industry which sells logical things. The
advantage of buying a software is automation, better analyzing of business thus
making life easier. As we are in to logical selling, it makes it difficult to come up with costing down to an accurate level. Customers can see the benefits of buying only
when they use the software for a significant period of time and then says Aah its worth
it. When customers see employees performing better, they are then convinced. If you give a higher quote chance losing
the project; if you give a lesser quote you will end up with a loss. This tutorial will discuss mainly "Function
Points" from a practical point of view.
URL:- www.geocities.com/shiv_koirala/
AUTHOR:Shivprasad koirala
SCOPE:
This article will give a practical approach to using "Function point".
THEORY :-If I said to analyze the cost of any physical product for example a simple
pen I could pin point to a good extent the caps cost, the ink cost etc and come
up with a rough estimate. Even the customer is equally convinced as he can
see those physical products. The software industry also has practices of evaluating
cost. The following are 2 major ones.
1) Lines of code
2) Function points(FP)
I personally do not believe in lines of code .In this software world of
reusability 1000 lines of code can become 200 lines, thus leading to complete
misjudgement.For some reason i feel Lines of Code favors the software company
more than its clients. But with FP I see the quote coming out with a fair estimate for both customers
as well as the software companies. I was very convinced with FP in one of my
clients place where the client handed us a huge book of use case and said to
come out with estimation. We were a team of 4 people. We divided ourselves into a team of 2
and said lets come out with a quote and then tally our results. After 2 days of
continuously counting every element we saw both teams coming to the same value
of "Function Points", that means consistency even after different people
were sitting on it.
DEFINITION OF FUNCTION POINT :-They are unit of software measurement like
for distance we have (Kilometer). Breaking the system in to smaller systems and
analyzing them and coming out with cost for every unit. Finally we total all the
smaller unit to come out with final total.
Does not it sound cool dear customer we are issuing a invoice of 1000
function points for these functionality.
SECTIONS OF FUNCTION POINT :-There are 4 basic section
Data section :Data section is further divided in to
- Internal logical file(ILF):-Logical grouping of data in a system which
the user has to maintain. Example accountant fills in customer
information, updates it, deletes it etc.Accountant is responsible for
maintaining this files. So the customer becomes one logical ILF.
- External Interface files(EIF):-Here the user is not responsible for
maintaining that file and resides in some external system. Example the
Customer has credit card information which is got from a payment gateway
and is out side the current system boundary. Credit card information
becomes a EIF.
|
Transaction Section :Transaction section uses data
section that is it maintain information of ILF and EIF.excuse me for the
short acronym i am using every where like the ILF and EIF.
- External Inputs(EI):-EI is basically from which we can maintain the
ILF.Accountants definitely should have interface through which he can
maintain(Add,Update,Delete) the customer ILF.The basic judgment factor to
come out with EI is from user screens. Like a customer maintenance screen
which gives us a idea that we have 1 EI and 1 ILF of customer.
- External Outputs(EO):- This transactional function are mainly where
the user sees display. example when i am making a voucher for a customer
accountants will want to display customer name as soon as i put in the
customer code. This result which is displayed can come from ILF or EIF.
- External Inquiries(EQ):-This section will be mainly where users puts
information and they see display. Example search Customer by phone
number, city etc.Note the difference EO are only display purpose and do not
have criteria specified like EQ.When you actually sit for counting the
function points you can make small mistakes like making EQ as EO do
not bother about it make a second iteration and also you will see that
many things get nullify some where here and there while counting function
point and you will always end up to a consistent figure.
|
Sub sections :These are subsections which can
either be a subset of either transaction section or data section.
- Record Element Type(RET):- A subgroup of data element inside a logical
file. In our Customer ILF we can have multiple addresses or multiple phone
numbers. So the for customer we can have 2 RETs Addresses and Phone
numbers.
- Data Element Type(DET):- DET is a non-repetitive field in a ILF.Please
note i have said that field should not repeat in counting again. Every
customer ILF can have Customer Code. So the customer code becomes a
DET.Every invoice can have customer code saying whom this invoice
belongs. But once the Customer code has been counted do not count customer
code 2 times as 2 different DETs.But in practical scenarios when doing
function point of huge projects there is possibility that you can count
DET twice make a second iteration just for removing the duplicate DETs.
- File Type Reference(FTR):-A FTR is a file referenced by transaction.
An
FTR must also be an internal logical file or external interface file.
|
|
General System Characteristic Section(GSC):-This section is the
most important section. All the above 3 sections are counting section.They
relate only to application. But there are other things also to be
considered while making a software like are you going to make it N-Tier
application, whats the performance level the user is expecting etc.These are
external factors which affect the software a lot and also the cost of
it. When you submit a Function point to a client he normally will skip
everything and come to GSC first.GSC gives us something called as
VAF(Value Added Factor). There are 14 points considered to come out
with VAF(Value Added factor)
1. Data communications :- How many communication facilities are there to
aid in the transfer or exchange of information with the application or
system?
2. Distributed data processing :- How are distributed data and processing
functions handled?
3. Performance : - Did the user require response time or throughput?
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.?
6. On-Line data entry :- What percentage of the information is entered
On-Line?
7. End-user efficiency :- Was the application designed for end-user
efficiency?
8. On-Line update :- How many ILF’s are updated by On-Line transaction?
9. Complex processing :- Does the application have extensive logical or
mathematical processing?
10. Reusability :- Was the application developed to meet one or many user’s
needs?
11. Installation ease :- How difficult is conversion and installation?
12. Operational ease :- How effective and/or automated are start-up, back up,
and recovery procedures?
13. Multiple sites :- Was the application specifically designed, developed,
and supported to be installed at multiple sites for multiple
organizations?
14. Facilitate change :- Was the application specifically designed,
developed, and supported to facilitate change?
All the GSC have ratings from 0 to 5. so the VAF formulae is some thing
like this
VAF = 0.65 + ((sum of all GSC factor)/100).
|
LETS START COUNTING :-As said this is practical guide to FP and to
make Quick start. This section will discuss the practical way of counting the FP
and coming out with a Man/Days on a project.
| Steps for coming out with a FP |
- Counting the ILF,EIF,EI,EQ,RET,DET,FTR(This is basically 3 sections):-
This whole FP count will be called as "unadjusted function point".
- Then put rating values 0 to 5 to all GSC.Until this point we have not
considerd GSC factor thats VAF.Adding total of all 14 GSC to come out with
total VAF.firmual for VAF = 0.65 + (sum of all GSC factor/100)
- Finally make the calculation of Adjusted function point. formulae
Total function point = VAF * Unadjusted function point
- Make a estimation how many function point you will do per day. This is
also called as "Performance factor"
- On basis of performance factor you can calculate Man/Days.
|
Now we know our steps we can start counting. But hang in here's our all charts
which we will refer during counting.
|
EI Rating Table |
|
|
Data Elements |
|
FTR |
1 to 4 |
5-15 |
>15 |
|
Less than 2 |
3 |
3 |
4 |
|
2 |
3 |
4 |
6 |
|
>2 |
4 |
6 |
6 |
This table says that in any EI(External Input) if your DET count(Data element)
and FTR(File type Reference) exceed these limits then this should be the
FP(Function point). Example if your DET(data element) exceeds >15 and FTR(File
type reference) is greater than 2 then the Function point count is 6.The rest
down tables also show the same things. These tables will be there before us when
we are doing function point count. The best is put these values in Excel with
formulae. So that you have to only put quantity in the appropriate section and
you get the final value.
|
EO Rating Table |
|
|
Data Elements |
|
FTR |
1 to 5 |
6-19 |
>19 |
|
< 2 |
4 |
4 |
5 |
|
2 or 3 |
4 |
5 |
7 |
|
>3 |
5 |
7 |
7 |
|
EQ Rating Table |
|
|
Data Elements |
|
FTR |
1 to 5 |
6-19 |
>19 |
|
< 2 |
3 |
3 |
4 |
|
2 or 3 |
3 |
4 |
6 |
|
>3 |
4 |
6 |
6 |
|
ILF Rating Table |
|
|
Data Elements |
|
RET |
1 to 19 |
20-50 |
51 or more |
|
1 RET |
7 |
7 |
10 |
|
2 to 5 |
7 |
10 |
15 |
|
>6 |
10 |
15 |
15 |
|
EIF Rating
Table |
|
|
Data Elements |
|
RET |
1 to 19 |
20-50 |
51 or more |
|
1 RET |
5 |
5 |
7 |
|
2 to 5 |
5 |
7 |
10 |
|
>6 |
7 |
10 |
10 |
SIMPLE CUSTOMER PROJECT: This is a simple project requirement where we
are supposed only to do the customer form and with address details of
it. following is the screen.
The following table says what we have to see.For every
transaction which subsection is eligible
| Section |
RETs |
FTRs |
DETs |
| EI |
|
1 |
1 |
| EO |
|
1 |
1 |
| EQ |
|
1 |
1 |
| EIF |
1 |
|
1 |
| ILF |
1 |
|
1 |
|
ILF Customer |
| Description |
Number of DET |
Number of RET |
| There are total 10 DET all add and
update buttons,Even the credit check button,the address list box,check box
active , all text boxes. There is only one RET the customer addresses |
10 |
1 |
| So according to the above ILF
table |
Total function |
7 |
|
ILF Customer addresses |
| Description |
Number of DET |
Number of RET |
| There are total 3 DET all the
column name in the list box city name,street name and pincode |
3 |
0 |
| |
Total FP |
7 |
|
EIF |
| There are no EIF in this system |
|
EI Customer |
| Description |
Number of DET |
Number of FTR |
| There are total 10 DET all add and
update buttons,Even the credit check button,the address list box,check box
active , all text boxes. There are 2 FTR one is the address and the second
is the credit card information |
10 |
2 |
| Referring table above |
Total Function |
4 |
|
EO Customer |
| No EO for this screen |
|
EQ Customer |
| No EQ for this screen |
So now lets add the total function point - 18(These are the
unadjusted function point).In order to make it adjusted function point we have
to calculate the tabulate the GSC and come out with the VAF.
| GSC |
Value(0-5) |
| Data communications |
1 |
| Distributed data processing |
1 |
| Performance |
4 |
| Heavily used configuration |
0 |
| Transaction rate |
1 |
| On-Line data entry |
0 |
| End-user efficiency |
4 |
| On-Line update |
0 |
| Complex processing |
0 |
| Reusability |
3 |
| Installation ease |
4 |
| Operational ease |
4 |
| Multiple sites |
0 |
| Facilitate change |
0 |
| Total |
22 |
So using formulae :-
VAF = 0.65 + ((sum of all GSC factor)/100). = 0.65 + (22/100) = 0.87.This
factor affect the whole FP like any thing be very particular with this factor.
so now calculating the adjusted FP = VAF * Total unadjusted FP = 0.87 * 18 =
15.66 = rounded to 16 FP
now we are know the complete FP for the customer GUI is 16 FP.now calculating
the efficiency factor we say that we will complete 2 FP per day that is 8 MAN
days. so the whole customer GUI is of 8 man days.
OTHER PRACTICAL FACTORS :- I hope so the above example has made
clear how to use function point. But if the software industry was straight
forward FP would be enough. But also have these practical things in mind :-
1) To the total FP add a buffer FP in case the customer will say in
changes or extra features. As during the negotiation period definitely the
customer will either bring down the cost so that you are at safe side
while negotiating.
2) Well this worked for me lot. Look at the customer how much can he spend
which will make things clear. And then just judge yourself will this cost fit in
or will go for rejection.
3) second how critical is the software for him , if the criticality is
high and he can not stay with out it make the quote according to that.This is my
one of friends experience he was a freelancer. He was once called to make a
small cash maintenance programme.It was one form and one report saying how much
amount got today and maintenance form. Well one form one report he quoted it
quiet less. He completed the project in one day and got the money on a weeks
time. But then client called him after 2 days and said him :- "Your this
small programme has saved my hell money and time. The amount what you quoted is
nothing I was ready to pay above it. He said never quote on the quantity basis
or size but how frequently we will use the software ".I have seen
billion dollar projects not used and small projects made by one person running
the whole company automation
4) Is the client looking for maintenance point of view which means the
client can be permanent source of income then quote in such a way that you
get your share during maintenance.FP does not take in to account maintenance.
The best way to come out with maintenance cost is how much programmers you will
require on the site after the product is launched + your profit share.
The above points is useful to make plus or minus on the calculated FP.
by shivprasad koirala
(shiv_koirala@yahoo.com)
|