Software Estimation For Dummies
Software Estimation For Dummies
Background
When there is lack of clarity on a subject, a plethora of literature is brought out on the subject.
More often than not, the literature and the books on the subject confound the confusion rather than
clear it. As a developer of software estimation tools, a consultant on the subject, and a trainer on
the subject, this confusion often confronted me. Most people know one or more software sizing
techniques – most have a reasonable understanding of Function Point Analysis or Use Case
Points estimation techniques – but are stymied when it comes to making a real life software
estimate.
Software estimation is carried out more than once in the life a software development project. The
project acquisition stage is the one where the detail available to estimator is minimal. The
confusion of estimation arises in this stage. All other stages, progressively, increase the detail and
hence reduce uncertainty (and confusion) in estimation.
What most people either - do not know or do not have – a clear understanding of is – how to apply
these techniques to a real life situation – that is when the boss / marketing department asks for a
software estimate against an RFP (Request for Proposal) or a PIN (Project Initiation Note). The
following, as I found – are the questions from the estimators, not only beginners but also
experienced ones.
1. How to arrive at all the components that need to be included in the estimate – before the
design is completed?
2. How to arrive at the complexities for each of the components?
3. What about effort to be spent Quality Assurance activities?
4. What about overhead activities – time spent on various committees, progress-tracking
meetings, assistance to other organizational wings like HR, marketing etc.?
5. What about the time lost due fragmentation – say – some body completes the work one
hour before closing – and starts working on the next allocation – only next day – how do we
account for such eventualities in the estimate?
The other end of the continuum is that the spec is limited a small paragraph in an email message
requesting a fixed bid. The breaking down is most difficult.
1. We need an estimate for developing a simple material management system for so and so
company
2. We need an estimate for a no-frills web site that is functional for a business that wants to
get on the net mainly to allow customers to browse thru catalogues and place orders and
track status of order. Management reports are needed
3. We are presently using one write (or quick books or whatever) and as our operations have
grown, looking to upgrade it to next level. Ability to use it over internet is desirable
4. A non-profit organization is looking to upgrade the existing operations into a collaborative
environment. Flexible on technology to be used. Internet usage needs to be built in.
Presently we are using MS-Office suite for our HR and Finance activities and also bring in
our client interfacing activities also into the ambit of the new system
5. So on and so on
Now that the scope is known, the project needs to be broken down into its constituent components
– this is how to go about it –
There you have the list of components. However, the catch is that one needs to be
knowledgeable about the domain at hand. If we have it – excellent – but – if we do not have? Now
where do we get the info to carry out the above-cited breakdown?
Now you know how to breakdown a project into its constituent components and the list is made.
Complexity of components
Almost all the software size estimation techniques necessitate rating the complexity of the
component (or transaction as some techniques prefer to call). Those techniques also specify rules
for complexity rating in a great detail – sometimes, even going to micro level , to controls on the
screen or number of data elements in a file / table. It is OK to comply with these rules, once an
application is developed and available to retrofit the estimate. But, when you are estimating at the
time of project acquisition (that too, without any guarantee that the project would be awarded to
you and therefore your objective is to spend as little time as absolutely necessary to come out with
the estimate), it would be impractical to be able to use those complexity rules in Toto.
1. Use your programming experience and best judgment and rate the complexity for each of
the components of the WBS
2. Review each of the complexities, critically examining, and modify as you see fit and proper
3. Get the complexities reviewed by a senior person, not necessarily your boss but a person
who has at least two years of more experience that you
4. More reviews add more accuracy to the estimate.
5. Remember, that a Login screen is of average complexity in some size estimation
techniques and some application !
Now, it may appear that this is not a foolproof method of deciding complexities of components – I
agree.
However, I suggest this method, keeping in mind, the detail available and the effort and resources
that can be committed to this activity during project acquisition stage.
Now, where do we get this Productivity figure? Here are some sources –
Uncertainty in estimation
As the word – Estimation – itself suggests, there is uncertainty in estimation. What I suggest here
minimizes it – not eliminate it.
1. Always give three estimates – best-case, normal-case and worst-case scenarios. Best
case is 90% of your estimate and worst-case is 110% of your estimate and normal-case is
your original estimate.
2. When applying productivity figure, again apply the same three values.
a. To the worst-case software size apply the worst-case productivity figure – that is
110% of the normal productivity figure
b. To the best-case software size apply the best-case productivity figure – that is 90%
of your normal productivity figure
c. To the normal software size, apply the normal productivity figure
3. Thus you have three scenarios –
a. Worst-case scenario – when software size is highest and productivity is lowest
b. Best-case scenario – when the software size is lowest and productivity is highest
c. Normal-case scenario – when the software size and productivity are normal
4. Give these figures to whoever requested the estimates.
32-78/3 Sainik Nagar Rama Krishna Puram, Secunderabad - 500056
+91-40-2722 0771 - www.chemuturi.com - [email protected]
Chemuturi Consultants – Do it well or not at all
What we are precisely communicating is –
1. The project is likely to be executed in the normal-case scenario
2. When every thing goes in an excellent manner, we could execute the project in the
best-case scenario
3. When every thing goes wrong, we could execute the project in the worst-case scenario
Remember that pricing the project and committing the delivery schedule is a commercial decision
dictated more by the client-requirements and to some extent by the competition. It is possible that
marketing commits a best-case scenario and the project be executed in the worst-case scenario!
But – we need to plan for making sure that we meet the commitments made to the client by
infusing more resources or better methodologies or any other way.
Project execution has a crucial role in ensuring that estimates are met. What needs to be achieved
during project acquisition stage is to make the best possible attempt to make a realistic estimate
and also give the best and worst-case scenarios for marketing to make an educated pricing and
delivery commitments to the client.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
About the Author:
Murali Chemuturi is a Fellow of Indian Institution of Industrial Engineering and a Senior Member of
Computer society of India. He is a veteran of software development industry and is presently
leading Chemuturi Consultants, which provides consultancy in software process quality and
training. He can be reached at [email protected]