Runtime - The Software Outsourcing Newsletter
for Executives and Investors
from Accelerance and Steve MezakIn this issue: Don't believe an estimate just because it is
close to your own gut feeling. Choose an estimation method
that works for your software and your outsourcing vendor.How to Estimate the Cost of Your Outsourcing
Have you ever been surprised when your software takes longer to
develop than you expected? Who hasn't?!If only there was a way to accurately estimate how long it will
take to develop your software, and therefore how much it will
cost.Recently several Accelerance teams responded to a fixed price
RFP from an American client. The RFP contained a reasonably
good specification although there were some missing details
about the interfaces with other systems. The average estimate
was 2,900 man-hours to develop the software.The client made their own estimate of only take 600 man-hours
to develop the software! They selected a vendor that had a
similar estimate close to 600 hours.I have to wonder if they are making an accurate estimate. This
is not sour grapes - we win some deals and we lose some, and I
truly wish this client the best. However, these three
Accelerance teams are very experienced at creating great
software. How can they independently come up with completely
similar estimates that are so much higher?Software estimates depend on many things and there are several
ways to make them.
Over the years several techniques have been created to estimate the effort needed to complete software projects. Function Point Analysis, devised at IBM in the 1970s, defines function points
in five groups: outputs, inquiries, inputs, files, and interfaces.Each function point is defined as a business function, like the
user entering an input. This makes it easy to map function
points into user-oriented requirements, like use cases. But it
can also hide internal functions, which also take time and
resources to develop.In 1981 another method, the Constructive Cost Model or COCOMO
was created by Barry Boehm. It was updated in 1997 and renamed
COCOMO II. The number of lines of code expected to be in your
software is used in a formula to estimate the effort required to
complete the development.I don't know about you, but I find it difficult to make the
leap from a software idea or a page in a user interface to some
number of lines of code needed to implement it.The COCOMO formula also uses five values to estimate the scale
of your software and seventeen cost drivers. Estimating the
scale and cost of your software is also an art.These methods are a bit formal and require research, skill and
a little guess work. They are suited for large software
projects where you have a good grasp of the requirements and
effort required to begin with.
For many software projects the requirements are less well
known. Other less formal techniques are used to create rough
estimates. For example, you can estimate the time needed to
implement each of your user screens or pages. Screens may be
complex or simple and you can make three different time
estimates for each screen based on its type.You can also use the number of functions contained in your
software or the number of database tables as other factors for
making you estimate. Clearly experience developing similar
software will enhance your accuracy.If you are using Agile methods, then you can use the "planning
game" to calculate "story points" when you employ User Stories.
See User Stories Applied : For Agile Software Development by
Mike Cohn
An advantage of the planning game is it helps you plan tasks,
iterations and releases and gains in accuracy as your software
is developed over time.Accelerance teams use both formal and informal methods to
estimate the effort needed to create your software. One of the
estimates for the project mentioned above was created with the
Function Point Method.Estimating the time and effort required to develop your
software is not a science, to say the least. If you are faced
with a tight budget that will not accommodate delays and extra
costs, then you need a fixed price bid, at least to get started.
A fixed price bid needs to have a good specification of what you
need. The downside of fixed price is the lack of flexibility.
If you need to collaborate with an outsourced engineering team
to design your software to begin with, then fixed price will not work.Your alternative is to select a great outsourcing team with an
excellent track record of carrying out software projects for
other clients and work with them to design your software and create an estimate you can both believe in.***
The Runtime Bottom Line: Using a fixed price project is a good
way to limit your financial risk when you are getting started
with a outsourcing vendor. However, it requires a good
specification. You need to have some sense of the amount of effort it will take to create your software. Work with your outsourcing team to develop and improve the accuracy of your estimates, for either a fixed price or time and materials engagements.
Vision Resources
![]()
Are you wondering how you will select an expert offshore team
to develop your software?Use the Accelerance Vision Resources(sm) outsourced vendor
selection service and cut the time of your vendor selection
process by as much as 90%.Vision Resources leverages members of the Accelerance's 17
teams in 14 countries around the world.Click here to learn more about Vision Resources
Accelerance, Inc. delivers impartial & expert strategies and services
for risk-free outsourcing of your software development.
Visit our web site at www.Accelerance.com
Until next time,Steve Mezak
Accelerance, Inc.
Risk-Free Outsourcing
213 Garcia Avenue
Half Moon Bay, CA 94019
1-650-712-8990(c) 2005 Accelerance, Inc. All rights reserved. You are free to use material from the "Runtime" eZine in whole or in part, as long as you include complete attribution, including live web site link. Please also notify me where the material will appear.
The attribution should read:
"By Steve Mezak, CEO of Accelerance, Inc. Please visit the Accelerance web site at http://www.Accelerance.com for more information and resources on outsourcing and creating great software products."