Wednesday, January 20, 2010

SharePoint Development Estimation using Function Points

Sometimes it can be very difficult to predict how much time it takes to develop a project in SharePoint. Many people claim to take the time it would take to develop a project in ASP.NET and double it for SharePoint. However I am a big fan of Function Points. So after getting a general idea of the project specs I go through these guidelines to classify the SharePoint components:

Inputs: Web Parts, Sites, Admin and Site Pages, Forms

Outputs: Web Part, Search, Reports, Custom Pages

Inquiries: Object Model Code, Simple Workflows

Logical Intermediate Files: Lists, Libraries, Content Types, Fields, XML/XSLT web part formatters

External Intermediate Files: Features, Solutions, BDC


For example, I am currently working on a custom search feature to be associated with specific metadata. Here is how I have classified the pieces of this project.

Inp: 1 web part for the Search Box
Out: 7 web parts for all the Search Results
Inq: 3 feature recievers
LIF: 1 advanced search xml properties
EIF: 3 features (search box page, advanced search page, search results page)

Great, now I apply a set of complexity multipliers for the low, medium, and high cases:

Inp x3 x4 x6
Out x4 x5 x7
Inq x3 x4 x6
LIF x7 X10 x15
EIF x5 x7 x10

Now I multiply everything and add up the columns

1x3 = 3
7x4 = 28
3x3 = 9
1x7 = 7
3x5 = 15

Low = 3 + 28 + 9 + 7 15 = 62

1x4 = 4
7x5 = 35
3x4 = 12
1x10 = 10
3x7 = 21

Med = 4 + 35 + 12 + 10 + 21 = 82

1x6 = 6
7x7 = 49
3x6 = 18
1x15 = 15
3x10 = 30

Hi = 6 + 49 + 18 + 15 + 30 = 118


Now lets bump those numbers up by a 15% fudge factor to account for SharePoint difficulties.

Lo = 62 x 1.15 = 71
Med = 82 x 1.15 = 94
Hi = 118 x 1.15 = 136


Finally if we take the square root of those numbers that gives us a first cut at the number of man-hours required to do this work.

Lo = 8
Med = 10
Hi = 12

Based on experience I know that this is probably just the amount of time to code up a solution to do this. Now we have to throw in some learning curves. After all just about every SharePoint project has components that are dissimilar to the existing codebase and thus has to be researched via blogs or experimentation.

We assume our learning curve follows a linear curve:
Y = a * X ^b

Where Y is the amount of extra man-hours required for learning, a is the amount of hours to learn just one component of this project, and b is the rate at which we are able to gain productivity from learning. Since we are using a square root of function points to estimate man-hours, the exponent of our learning curve is -1/2.

For each component of the function point model I am using for this example I estimate that learning how to do something will take 1 hour on the low end, 2 hours for medium, and 4 hours for the high end. So our learning curve is:

Ylo = X^-1/2
Ymed = 2X^-1/2
Yhi = 4X^-1/2

Since there are 15 components to the entire system our learning curves are:

Ylo = 0.26
Ymed = 0.5
Yhi = 1

Now these are the costs for a single unit. To get a total we have to add them up over all 15 components. Finally we add the function point man-hours to the learning curves to get an estimate:

Lo = 12
Med = 18
Hi = 28

These are pretty close to what I am able to do on my own. A much more skilled developer might be able to do this in less time but not half the time. For a less skilled developer the learning curve probably goes nonlinear.

5 comments:

  1. This article helped me a lot in my research on Effort Estimation in Share Point. Thanks a lot!!

    ReplyDelete
  2. Hey, nice site you have here! Keep up the excellent work!






    Function Point Estimation

    ReplyDelete
  3. SharePoint development Services delivers an opportunity for me to build productive applications. Apart from that, the different SharePoint approaches have fantastic options which make the process of development more simple and easier.

    ReplyDelete
  4. The writer explain very mathematically how to calculate SharePoint Development work estimation using these function Points any SharePoint developer can calculate estimate regarding his or her own project.

    ReplyDelete
  5. Excellent site. Thanks for sharing. I leaned something new here.Thanks once again.

    Function Point Estimation Training in Chennai

    ReplyDelete