Search Forum
(57415 Postings)
Search Site/Articles

Archived Articles
712 Articles

C# Books
C# Consultants
What Is C#?
Download Compiler
Code Archive
Archived Articles
Advertise
Contribute
C# Jobs
Beginners Tutorial
C# Contractors
C# Consulting
Links
C# Manual
Contact Us
Legal

GoDiagram for .NET from Northwoods Software www.nwoods.com


              
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
  1. 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.
  2. 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.
  1. 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.
  2. 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.
  3. 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.
  1. 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.
  2. 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.
  3. 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
  • There are 2 ILF in the above screen
        1) The customer ILF
        2) The Customer Address ILF

  • There are no EIF in the above form

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)