Software Project Estimation Success
Software Project Estimation Success
Software Project Estimation Success
estimation success
Software project estimation is a sophisticated task requiring real experience and
collaboration of various parties. Without sufficient internal resources including
personnel to appropriately evaluate the software project, final results may turn out to
be unfavorable, over-budget, and time-wasting.
What is software project estimation?
Literally, estimation is a process to predict the time and the cost that a project
requires to be finished appropriately. But in terms of software development, it also
means of consideration of the experience of the software development company; the
technique they employ; the process they may go through to finish the task. This
whole process requires the use of complex tools and good mathematical background
knowledge. It is in some cases is the accomplishment of the hard work of a whole
team. The error margin is, consequently, guaranteed possibly around 5-10%.
The whole process of estimation would cost the company rather considerable cost
and time at the very first stage of building an app. But this will make the final result
more credible, realistic, and customer-satisfying. Projects especially big ones are
advised to employ this crucial step to avoid unpredictable failure.
Communication of the goals clearly also allows both the estimation team and the
software development company to vision the reality of all the requirements. They,
therefore, would plan an appropriate timeline, personnel and employ the suitable
technologies to achieve the goals in the most fruitful way. Basing on those
mentioned, terms and agreements between the customers and the app developing
team would be set.
However, in some cases, the estimation task becomes much more uncertain and
complex. Then, it is necessary that the estimator should follow the following steps to
get out.
Maintainability
Scalability
Security
Interoperability
Performance
High availability
Usability
Estimating clearly the priorities from the beginning would also keep the project more
on track. Not many changes and additional requirements occur during the time of
making the software, which would save a lot of time and effort.
5. Considering goals and commitments in agile plans:
Agile methodology is a contemporary developing method that allows customers
and app development centers to continuously communicate and make changes to
their products throughout the process of development. Iterative sprints of delivery
enable customers to see their final product as well as how it functions.
They, then, could make modifications to their requirement which have been agreed
on in the previous stages. This method provides flexibility to the customers but
requires the company to have a highly skilled development team to continuously
adapt to the changing needs. Also, Agile is most likely suit for small-scale projects.
Read more about Agile methodology: Why does Agile stand out as the most favorable
app development method?
There are plenty of estimation strategies that estimators could employ. But, firstly,
they could take into consideration the complexity of the project, the amount of
information acquired, and time constraints. An appropriate combination of those
things could result in the estimating approaches as follows:
Classic estimation (expert judgment): This is likely the most common way, and it
includes selecting a requirement and allocates it a time value based on the difficulty
and how experienced the estimators are in the required field. The estimation team is
advised to break down the requirements into more detailed components including
business, presentation, and database. Then, a suitable amount of time will be
allocated for each of them. The final estimation is then the combination of smaller
ones from the mentioned elements.
This is just the process of ordering the requirement based on their complexity.
Then, use the traditional model to estimate a representative sample of all the
requirements.
Next, the value of the traditional estimations from the requirements from the
previous step would be extrapolated, also according to complexity order. For
instance, we have 100 requirements and the estimation process is as the
following steps:
Note: This strategy of estimation is suitable for projects with a large number of
requirements.
Estimation by team: This approach is partially similar to the classic one. The only
difference is that the smaller components as system module, business, presentation,
etc., will be delegated to separate teams. Each team will independently offer their
estimation. And the final result will be consolidated by the combination of individual
results of the teams.
8. Revising estimations:
Two heads are better than one. Revision with other estimators during the software
estimation project help foresee the possibility of the projects, the possible
assumptions, and the best estimation strategy. The only downside of this could be
that the time constraint. More people, more ideas.
You, then, have to be strong enough to selectively choose which advice and change
to carry on.
Conclusion:
You can always list your assumptions to justify the outcome of the
estimation process and its results.
2- Decomposition
In this step, you will need to break your software into smaller components
and functions and you can categorize them to a different set of elements,
this is similar to work breakdown structure but only for the software
components not all the working activities for the software.
You may also collect different data from the project team or the customer to
ensure that you have listed all functionalities.
3- Sizing
In this step, the actual estimation will be done for each component alone,
and I will illustrate more about how you will do that using the techniques
mentioned above, this will be illustrated in 8 steps in details below.
In this step, and for more validation, you can use different estimation
techniques to analyze the different estimation outputs and you may take an
average of these estimates as well.
5- Estimation Finalization
This can be considered the final step as you aggregate all the estimations
from all components and functions and have a baseline estimate. You can
go another round across the process until reaching the correct estimate
which will be approved by the Project team and the Management as well.
How to Size
Before we start by describing the 8 sizing steps let us introduce briefly the
techniques we will use to size the project effort.
FPA can be helpful to estimate the effort for a software project at the early
stage when the requirements are known, but the details of implementation
have not yet been specified or evaluated. Which is actually the most case of
the software projects 🙂
To use the FPA, these are the steps to follow after defining the scope and
decompose the system functionality and components:
1. Identify inputs, outputs, file accesses and interfaces to external
systems
2. Determine the functional complexity of each function
3. Calculate unadjusted FPs by summing weightings
4. Calculate Value Adjustment Factor for the software
5. Apply VAF to UFP to calculate adjusted FPs
Let us start
Step 1
We will start with the FPA after we scoped the requirements and
decompose the functions, we are ready to identify the inputs, outputs, file
accesses and interfaces to external systems. FPA is measured based on
these below elements:
The image below, illustrate the software context based on FPA, and how
other users or systems interact with our software. Now, we will need to list
the 5 elements for each subsystem, component, or function to do the next
step.
Software Context
Complexity
External Input 3 4 6
External Output 4 5 7
External Inquiry 3 4 6
Step 2
The next step is to relate our functions to these complexity levels and apply
the weightings for each one, for example, let us assume that we have the
following outcome from our functional points
1 S*4 = 4 2 A*10
Component 1 1 S*3 = 3 2 S*3 = 6 1 C*10 = 10
2 C*7 = 14 = 20
2 A*4 = 8 1 C*15 =
Component 2 3 A*5 = 15 2 A*4 = 8 2 S*5 = 10
1 C*6 = 6 15
3 A*4 =
12 1 S*7 =
Component 3 3 S*4 = 12 – 2 A*7 = 14
2 C*6 = 7
12
As we can see in the table, that we have 3 components and after we applied
the weights for each one, we can see that each one can have more than one
input for example, and we can estimate each input weight according to our
judgment of this input complexity. In component 3 we have 3 average
inputs and 2 complex input but we do not have any inquiries.
Step 3
You can do the same for all the software components or functions and this
will lead us to the next step of calculating the unadjusted function points by
summation of all weights
If we assume that our EAF is 1.17 then the adjusted effort will equal to 35 *
1.17 ≈ 41 Person Months. After that, you can recalculate all the other values
again. The first calculation is called the Basic COCOMO while the second is
considered the Intermediate COCOMO.
Step 8
Now, we can apply the cost estimate by calculating the cost of every staffed
person * Effort Applied, for example, if all staff have fixed 2K $ Person
Month the cost will be
2,000 * 35 = 70K $
Conclusion
You can apply the same methodology to get the estimate for the project and
you can go deeper and estimate each component alone to get more accurate
figure, for example, if you have integration, testing, development of a
portal, development of backend, you can consider each one a separate
project and estimate the schedule and effort for each of them. I hope you
have learned a new thing by reading this article and below are some
references and some useful links as well.
Cite this article as: Mohamed Sami, (January 15, 2018). "5 Steps to
Software Development Effort Estimation," in Mohamed Sami - Personal
blog. Retrieved September 12, 2021,
from https://melsatar.blog/2018/01/15/5-steps-to-software-development-
effort-estimation/.
References
COCOMO. (2018, January 07). Retrieved January 13, 2018,
from https://en.wikipedia.org/wiki/COCOMO
Function point. (2017, December 14). Retrieved January 13, 2018,
from https://en.wikipedia.org/wiki/Function_point
How does FPA work? (n.d.). Retrieved January 13, 2018,
from https://nesma.org/themes/sizing/function-point-analysis/fp
a-work/
Overview of COCOMO. (n.d.). Retrieved January 13, 2018,
from http://www.softstarsystems.com/overview.htm
Useful Links
Function
Point Analysis Calculator
COCOMO II Calculator
Parkinson's Law 'Work expands to fill the time available', which implies that given an
easy target staff will work less hard.
The danger with the under-estimate is the effect on quality. Staff, particularly those
with less experience, might respond to pressing deadlines by producing work which
is sub-standard. Since we are into laws, this might be seen as a manifestation of
Weinberg's zeroth law of reliability: 'if a system does not have to
Brooks' law comes from The Mythical Man-month that has been referred to already.
See T. K. Hamid and S. E. Madnick 'Lessons learnt from modeling the dynamics of
software development' in C. F. Kemerer (ed.) Software Project Management, Irwin,
1997.
be reliable, it can meet any other objective'. In other words, if there is no need for the
program actually to work, you can meet any programming deadline that might be set!
Sub-standard work might only become visible at the later, testing, phases of a
project, which are particularly difficult to control and where extensive rework can
have catastrophic consequences for the project completion date.
Because of the possible effects on the behaviour of development staff caused by the
size of estimates, they might be artificially reduced by their managers to increase
pressure on staff. This will work only where staff are unaware that this has been
done. Research has found that motivation and morale are enhanced where targets
are achievable. If, over a period of time, staff become aware that the targets set are
unattainable and that projects are routinely not meeting their published targets, then
this will help to destroy motivation. Furthermore, people like to think of themselves
as winners and there is a general tendency to put success down to our own efforts,
while failure is blamed on the organization.