SharePoint 2010: Best Practices to Estimating and Benchmarking Project Efforts

SharePoint 2010: Best Practices to Estimating and Benchmarking Project Efforts



Why?

It can be hard to estimate how much time it will take to complete a SharePoint project. The usual approach is to do an "expert count", in other words, have an expert (or more) estimate how long it will take to complete a project. Depending on the quality of the expert(s) and his/her team members, this can be a fine approach. It has one disadvantage though: it'll make it really hard to do benchmarking and try to compare one project to another.

A more formalized way to go about it is to use a standard methodology for establishing the functional size of a SharePoint project expressed in function points. Although there are other methodologies, we'll use the COSMIC Full Function Points methodology as the basis for analysis of the functional size of the project, as it focuses on the bare essentials. This is a difference from the more well known FPA methodology, but rest assured, COSMIC is also one of the 5 recognized ISO standards for functionality sizing software: http://en.wikipedia.org/wiki/Function_point.

After establishing the project functional size (and the great thing is, even if you apply COSMIC wrong, as long as you do it consistently, it's still useful), the problem remains how to map these function points to a realistic amount of implementation hours. This knowledge can only be gained the hard way, based on experience. That's where this Wiki page comes in, it relies on the feedback of SharePoint community members and offers an overview of what the community thinks is realistic.


Brief introduction of COSMIC


COSMIC breaks functional processes down to data movements. Each data movement corresponds to 1 COSMIC Functional Size Unit (CFSU). Each CFSU corresponds to a number of hours, i.e. it might take 8 hours to implement 1 CFSU. COSMIC discerns 4 different types of data movements:
  • E, Entry, a data movement that moves a data group/moves from a user/moves across a software boundary/moves into the functional process.
  • X, eXit, a data movement that moves a data group/moves from a functional process/moves across a software boundary/moves to the user that requires it
  • R, Read, a data movement that moves a data group from persistent storage (i.e. a database) to a functional process.
  • W, Write, a data movement that moves a data group from a functional process to persistent storage.

E and X data movements include formatting, presentation manipulations, simple validation, and processing required for routing. R and W data movements include simple processing, computations and other manipulations.

For more information, please refer to:

Learn by example


It's probably unnecessary to point out that you're not reading a comprehensive learning guide about Cosmic FFP. But still, let's see how it works by learning from a simple example.

Suppose you have the following requirement: You need to build a visual web part that allows end users to enter an employee id. After that, the web part will look up all information it has related to this specific employee. Further suppose 1 CFSU for a visual web part takes 2 hours to implement. How much time will it take to implement this specific visual web part?

- Entering the employee id counts as an E (Entry): +1 CFSU.
- Retrieving employee data counts as an R (Read): +1 CFSU.
- Displaying employee data counts as an X (Exit): +1 CFSU.
- And probably you didn't see this one coming: there's also an X (Exit) for displaying any error and/or confirmation messages regarding the entire process.

This totals to 4 CFSU, which, in this example, leads us to believe that an estimation of 8 hours to implement this web part is reasonable.

Please note: As said before, no worries if you get a different answer. Even if you're calculating it wrong, just as long as you do that consistently (meaning: you have your own approach to counting CFSU's) Cosmic will still be useful to you.

CFSU Cost Overview


Here's the overview of different types of SharePoint software development artefacts and their associated cost in CFSU. The community is highly encouraged to contribute and make changes to this list. It only accounts for the associated development time, and ignores other associated costs such as the time needed for documentation, testing, and project management.

Please note:
The minimum cost of a CFSU is 1 hour, we won't go below this threshold. Also note that you're very much invited to make additions and modifications to this table. It's not written in stone, the more people participate the closer we'll get to the truth.
 
SharePoint Development Artifact
Development time (in hours) of 1 CFSU
   
Application Page 4
BCS Custom.NET Assembly Connector 6
BCS External Content Type (ECT) 4
BCS ECT with SharePoint Designer 1
Custom Claim Provider 2
Event Receiver 2
InfoPath form 4
JavaScript Client Object Model 4
Managed Client Object Model 3
SharePoint Designer Workflow 4
Silverlight Client Object Model
SSRS Report 1
Visual Web Part 2
Web Part
Custom workflow 4
Custom Workflow Activity 3

 

Please note


Also check out the SharePoint 2010 Best Practice Overview page at http://social.technet.microsoft.com/wiki/contents/articles/8666.sharepoint-2010-best-practices-en.aspx joomla stats
 
Sort by: Published Date | Most Recent | Most Useful
Comments
  • Nice one :) Going to be "Favorite this wiki"

  • Congratulations on this article being featured on the home page of TechNet Wiki!

  • This is the first time I' ve known the COSMICON organization. Thanks for your sharing the extremely great article.

  • Hi Margriet Bruggeman.

    I actually don't fully understand CFSU. How can an effort be defined 1 CFSU? Which factors do you consider? Is there any documentation covering basically CFSU?

  • Hi Thuan,

    Well, you're certainly not supposed to know the ins and outs of COSMIC based on this sole Wiki page. What is does explain is that an effort is broken down in 4 types of data movements (such as reading a group of data from a database). Each data movement equals to 1 CFSU. If you search for "cosmic ffp tutorial" you'll find a lot more resources.

  • To further clarify: each data movement equals to 1 CFSU by definition. It's not possible that a single data movement costs more or less than 1 CFSU.

  • Very nice and valueable article.

  • You can always use experience to determine the level of effort, time and cost required. That and a strict and disciplined structure for managing both the technical teams and more importantly, the business.

  • great article...

  • Grate description.

Page 1 of 1 (10 items)