Introduction to
Software Cost
Estimation
How Time
and Effort
Differ
The first questions typically asked by those
looking to have software developed is, “How
long will it take and how much will it cost?”
But from a pure cost standpoint, that answer
is all based on how much effort is required.
To answer the question of How Much Effort?
– we need to make a distinction between
effort and time. Effort is how many hours of
work need to go into a project; Time is how
long something takes from start to finish.
Determining - “How Much Effort?”
• The first part of pricing comes down to how much effort is needed to
achieve the desired outcome. i.e. how many engineers and how many of
their hours per day will be required to get the job done.
• Once we know how much effort a project will take in a perfect world, we
then must consider what circumstances outside of our control may come
into play like
• the ability of a client to dedicate staff to work with the project team for
requirements analysis, design checks and user testing
• what needs to be done to get a cloud-based solution approved
• what is the deployment process?
• These types of issues can exaggerate the difference between effort and
timeline – and the longer the timeline extends, the more project
management effort is needed to keep everything on track.
ESTIMATION
Estimation is the process of finding an estimate, or
approximation, which is a value that can be used
for some purpose even if input data may be
incomplete, uncertain, or unstable. It determines
how much money, effort, resources, and time it will
take to build a specific system or product.
Estimation is based on −
• Past Data/Experience
• Available Documents/Knowledge
• Assumptions
• Identified Risks
The four basic steps in Software Project Estimation
are −
• Estimate the size of the development product.
• Estimate the effort in person-months or
person-hours.
• Estimate the schedule in calendar months.
• Estimate the project cost in agreed currency.
COMMON ATTRIBUTES
ESTIMATION
PROCEDURES
For any new software project, it is necessary to
know how much it will cost to develop and how
much development time will it take. These
estimates are needed before development is
initiated, but how is this done? Several estimation
procedures have been developed and are having
the following attributes in common.
• Project scope must be established in advanced.
• Software metrics are used as a support from
which evaluation is made.
• The project is broken into small PCs which are
estimated individually.
• Used symbol decomposition techniques to
generate project cost and schedule estimates.
• Acquire one or more automated estimation
tools.
WHAT IS THE
SOFTWARE
COST
ESTIMATION?
• Software cost estimation is the process of
predicting the effort required to develop a software
system. It forecast the financial and other resources
needed to complete a project within a defined scope. As
a number of these models rely on a software size
estimate as input, we first provide an overview of
common size metrics. We then highlight the cost
estimation models that have been proposed and used
successfully.
• Cost estimation accounts for each element required
for the project—from materials to labor—
and calculates a total amount that determines a
project's budget.
What is difference between estimating and costing?
Estimating and Costing are closely the same things.
The estimate is defined as the process of calculating or
computing the various quantities and the expected
expenditure to be incurred on a particular work or
project. The estimate gives the probable cost of the
work.
USES OF
COST
ESTIMATION
1. In monitoring the project's progress, one needs to
access whether the project is progressing
according to the procedure and takes corrective
action, if necessary.
2. The purpose of cost estimation is to predict the
quantity, cost, and price of the resources required
to complete a job within the project scope. Cost
estimates are used to bid on new business from
prospective clients and to inform your job and
budget planning process.
3. In project management process, in order to enable
the time, money and work within the scope of
the resources to get the best use of, people
developed many cost estimation method, in order
to try to get a better estimate. Precise software
cost estimate is an indispensable part as an
effectively software management.
Factors of Software Costing
There are 3 main factors that most affect software development effort/pricing:
1. Type of Software Project
2. Size of Software Project
3. Development Team Size
1. Type of Software Project
Depending upon the types of projects, different team makeup and requires a different amount of
development effort that may reflect to determine the final estimate. E.g.
• New Software Development – new software, involving custom development.
• Software Modification – Enhancement of existing software.
• Software Integration – Custom code to add capability or integrate existing software into other
processes.
• Web Development – custom web-based software development
Factors of Software Costing
2. Size of Software Project
The next step is to determine the size of a project. Generally, project sizes fall into the following
categories:
• Small - A small project usually involves minor changes. Typically, things like tweaks to the user
interface or bug fixes that are well defined with a known cause.
• Medium - Projects such as a small mobile application or a web interface to an existing inventory
system would fall into this category. The external requirements for interaction with a client are more
robust than small projects. This might include a few design sessions, weekly check-ins, and milestone
sign-offs.
• Large - Large projects may require integration with multiple systems, have a database component, and
address security and logging features. An underlying framework and a module-based design are
common, taking into consideration scalability and maintainability. The external requirements for
interaction with the client are very robust, i.e daily calls and interactions with technical team members
followed by weekly status calls with higher-level management are standard.
• Enterprise - Enterprise-level projects are almost exclusively built upon an underlying
framework. They have much more rigorous security, logging, and error handling. Data integrity
and security are paramount to these business-critical applications.
Factors of Software Costing
3. Development Team Size (per Project)
Once the project is defined in terms of type and size, the next factor to be
determined is the team size. Every project requires at least 3 roles – a Project
Manager, a Developer, and a QA Tester. However, that does not mean that every
role equates to one team resource. Some resources can fulfill more than one role.
For example, In a small project, a Developer may also fill the role of Tester. In a
small/medium project, the Project Manager may also fulfill the role of Business
Analyst, and so forth. For larger, complex projects – team resources usually fulfill
only one role to effectively move the project forward.
Scheduling and maintaining a dedicated project team is instrumental in
completing the project most efficiently. There is nothing more detrimental to a
project than continually stopping and starting- it can be hard to regain the
momentum to get the project back on track.
Techniques
used in cost
estimation
In project management process, in order
to enable the time, money and work within
the scope of the resources to get the best
use, people developed many cost estimation
method, in order to try to get a better estimate.
Precise software cost estimate is an
indispensable part as an effectively software
management.
There is an abundance of techniques and
models which help in cost estimation in the
software industry. Here's a brief outline of the
various techniques with a mention of their
specialties and limitations.
Methods of Cost
Estimation
1. Algorithmic (Parametric) model
2. Expert Judgment (Expertise
Based)
3. Top - Down
4. Bottom - Up
5. Estimation by Analogy
1. Algorithmic (Parametric) Model
• This software cost estimation technique use the mathematical equations to perform the
software estimation. The mathematical equations are based on historical data or theory. SLOC
(source line of code), function points, and other cost drivers are the inputs. For most
algorithmic model, calibration to the specific software environment can be performed to
improve the estimation. Examples of the parametric models are COCOMO (COnstructive COst
MOdel), COCOMO II, Putnam's software life-cycle model (SLIM).
• Advantages:
• Generate repeatable estimations
• Easy to modify input data
• Easy to refine and customize formulas
• Objectively calibrated to experience
• Disadvantages:
• Unable to deal with exceptional conditions
• Some experience and factors can not be quantified
• Sometimes algorithms may be proprietary
2. Expert Judgement Model
• This technique captures the experience and the knowledge of the estimator who
provides the estimate based on their experience from a similar project to which they
have participated. Examples are the Delphi, Wideband Delphi and Work Breakdown
Structure (WBS).
• Advantages:
• Useful in the absence of quantified, empirical data.
• Can factor in differences between past project experiences and requirements of the
proposed project
• Can factor in impacts caused by new technologies, applications and languages.
• Disadvantages:
• Estimate is only as good expert’s opinion
• Hard to document the factors used by the experts
3. Top-Down Model
• This technique is also called Macro Model, which utilize the global view of the product
and then partitioned into various low level components. Example of this technique is
the Putnam model.
• Advantages:
• Requires minimal project detail
• Usually faster and easier to implement
• Focus on system level activities
• Disadvantages:
• Tend to overlook low level components
• No detailed basis
4. Bottom-Up Model
• The cost of each software components is estimated first and then the results are
combined to derive the final cost estimation for the project. An example is the
COCOMO’s detailed model.
• Advantages:
• More stable
• More detailed
• Allow each software group to hand an estimate
• Disadvantages:
• May overlook system level costs
• More time consuming
5. Estimation by Analogy Model
• This technique utilize the actual data that is extrapolated from a previous
completed project and compare that with the proposed project in the same
application domain to derive the cost estimate.
• Advantages:
• Based on actual project data
• Disadvantages:
• Impossible if no comparable project had been tackled in the past.
• How well does the previous project represent this one
z
1. Algorithmic (parametric) model: A model is developed using historical cost information which relates
some software metric (usually its size) to the project cost.
2. Expert Judgement: This method of cost estimation makes use of the tenure-based project experience
gained by the estimator. All the domain-based knowledge achieved by working in similar projects is
brought to the fore in arriving at an estimated figure. This technique has been found to be very useful
where there is a lack of quantifiable data.
3. Estimation by analogy : In this method, merely uses information and experience gained by a previously
executed project. Using the tool of extrapolation, this data is compared with the information derived
from the proposed project with similar area of expertise, to conclusively arrive at a rough cost
estimate.
4. Top down approach: Also called as the Macro model, this approach initiates with coming down to
every major detail related to the software product or project. Thereafter, the product/project is divided
into components belonging to lower levels. Following this, distinct labour categories are created
relevant for each segregated task. The product of the costs incurred and the number of tasks involved
is calculated to get to the final figure for the total labour costs incurred in the project.
5. Bottom up approach: In this method, the project managers add on to their costs upwards initiating
from the lowermost levels. The process is time consuming as every possible expense be it labour
related or equipment based is added up starting from the foundation levels. This approach is well
suited to large multi faceted projects.
Techniques used in cost estimation
Cost
Estimation
Models
A model may be static or dynamic. In a static model, a
single variable is taken as a key element for calculating
cost and time. In a dynamic model, all variable are
interdependent, and there is no basic variable.
 Static, Single Variable Models: When a model makes use
of single variables to calculate desired values such as cost,
time, efforts, etc. is said to be a single variable model. The
most common equation is:
C=aLb
Where C = Costs; L= size ; a and b are constants
 The Software Engineering Laboratory established a model
called SEL model, based on data and analysis from previous
cleanroom efforts within the SEL and is tailored to serve as a
guideline in applying the methodology to future production
software efforts. This model is an example of the static, single
variable model.
E=1.4L0.93
DOC=30.4L0.90
D=4.6L0.26
Where E= Efforts (Person Per Month)
DOC=Documentation (Number of Pages)
D = Duration (D, in months)
L = Number of Lines per code
STATIC,
SINGLE
VARIABLE
MODELS
• In some model, several variables are needed to describe the
software development process, and selected equation
combined these variables to give the estimate of time &
cost. These models are called multivariable models.
• WALSTON and FELIX develop the models at IBM provide the
following equation gives a relationship between lines of
source code and effort:
E=5.2L0.91
• In the same manner duration of development is given by
D=4.1L0.36
The productivity index uses 29 variables which are found to
be highly correlated productivity as follows:
Where Wi is the weight factor for the ith variable and
Xi={-1,0,+1} the estimator gives Xi one of the values -1, 0 or
+1 depending on the variable decreases, has no effect or
increases the productivity.
STATIC,
MULTIVARIA
BLE
MODELS
Compare the Walston-Felix Model
with the SEL model on a software
development expected to involve 8
person-years of effort.
1. Calculate the number of lines of
source code that can be produced.
2. Calculate the duration of the
development.
3. Calculate the productivity in
LOC/PY
4. Calculate the average manning
EXAMPLE
STATIC,
MULTIVARIA
BLE
MODELS
SOLUTION
The amount of manpower involved = 8PY=96persons-months
(1) Number of lines of source code can be obtained by reversing equation to give:
Then
L (SEL) = (96/1.4)1⁄0.93=94264 LOC
L (SEL) = (96/5.2)1⁄0.91=24632 LOC
(2) Duration in months can be calculated by means of equation
D (SEL) = 4.6 (L) 0.26
= 4.6 (94.264)0.26 = 15 months
D (W-F) = 4.1 L0.36
= 4.1 (24.632)0.36 = 13 months
SOLUTION
(3) Productivity is the lines of code produced per persons/month (year)
(4) Average manning is the average number of persons required per month in the
project

Cost estimation

  • 1.
  • 2.
    How Time and Effort Differ Thefirst questions typically asked by those looking to have software developed is, “How long will it take and how much will it cost?” But from a pure cost standpoint, that answer is all based on how much effort is required. To answer the question of How Much Effort? – we need to make a distinction between effort and time. Effort is how many hours of work need to go into a project; Time is how long something takes from start to finish.
  • 3.
    Determining - “HowMuch Effort?” • The first part of pricing comes down to how much effort is needed to achieve the desired outcome. i.e. how many engineers and how many of their hours per day will be required to get the job done. • Once we know how much effort a project will take in a perfect world, we then must consider what circumstances outside of our control may come into play like • the ability of a client to dedicate staff to work with the project team for requirements analysis, design checks and user testing • what needs to be done to get a cloud-based solution approved • what is the deployment process? • These types of issues can exaggerate the difference between effort and timeline – and the longer the timeline extends, the more project management effort is needed to keep everything on track.
  • 4.
    ESTIMATION Estimation is theprocess of finding an estimate, or approximation, which is a value that can be used for some purpose even if input data may be incomplete, uncertain, or unstable. It determines how much money, effort, resources, and time it will take to build a specific system or product. Estimation is based on − • Past Data/Experience • Available Documents/Knowledge • Assumptions • Identified Risks The four basic steps in Software Project Estimation are − • Estimate the size of the development product. • Estimate the effort in person-months or person-hours. • Estimate the schedule in calendar months. • Estimate the project cost in agreed currency.
  • 5.
    COMMON ATTRIBUTES ESTIMATION PROCEDURES For anynew software project, it is necessary to know how much it will cost to develop and how much development time will it take. These estimates are needed before development is initiated, but how is this done? Several estimation procedures have been developed and are having the following attributes in common. • Project scope must be established in advanced. • Software metrics are used as a support from which evaluation is made. • The project is broken into small PCs which are estimated individually. • Used symbol decomposition techniques to generate project cost and schedule estimates. • Acquire one or more automated estimation tools.
  • 6.
    WHAT IS THE SOFTWARE COST ESTIMATION? •Software cost estimation is the process of predicting the effort required to develop a software system. It forecast the financial and other resources needed to complete a project within a defined scope. As a number of these models rely on a software size estimate as input, we first provide an overview of common size metrics. We then highlight the cost estimation models that have been proposed and used successfully. • Cost estimation accounts for each element required for the project—from materials to labor— and calculates a total amount that determines a project's budget. What is difference between estimating and costing? Estimating and Costing are closely the same things. The estimate is defined as the process of calculating or computing the various quantities and the expected expenditure to be incurred on a particular work or project. The estimate gives the probable cost of the work.
  • 7.
    USES OF COST ESTIMATION 1. Inmonitoring the project's progress, one needs to access whether the project is progressing according to the procedure and takes corrective action, if necessary. 2. The purpose of cost estimation is to predict the quantity, cost, and price of the resources required to complete a job within the project scope. Cost estimates are used to bid on new business from prospective clients and to inform your job and budget planning process. 3. In project management process, in order to enable the time, money and work within the scope of the resources to get the best use of, people developed many cost estimation method, in order to try to get a better estimate. Precise software cost estimate is an indispensable part as an effectively software management.
  • 8.
    Factors of SoftwareCosting There are 3 main factors that most affect software development effort/pricing: 1. Type of Software Project 2. Size of Software Project 3. Development Team Size 1. Type of Software Project Depending upon the types of projects, different team makeup and requires a different amount of development effort that may reflect to determine the final estimate. E.g. • New Software Development – new software, involving custom development. • Software Modification – Enhancement of existing software. • Software Integration – Custom code to add capability or integrate existing software into other processes. • Web Development – custom web-based software development
  • 9.
    Factors of SoftwareCosting 2. Size of Software Project The next step is to determine the size of a project. Generally, project sizes fall into the following categories: • Small - A small project usually involves minor changes. Typically, things like tweaks to the user interface or bug fixes that are well defined with a known cause. • Medium - Projects such as a small mobile application or a web interface to an existing inventory system would fall into this category. The external requirements for interaction with a client are more robust than small projects. This might include a few design sessions, weekly check-ins, and milestone sign-offs. • Large - Large projects may require integration with multiple systems, have a database component, and address security and logging features. An underlying framework and a module-based design are common, taking into consideration scalability and maintainability. The external requirements for interaction with the client are very robust, i.e daily calls and interactions with technical team members followed by weekly status calls with higher-level management are standard. • Enterprise - Enterprise-level projects are almost exclusively built upon an underlying framework. They have much more rigorous security, logging, and error handling. Data integrity and security are paramount to these business-critical applications.
  • 10.
    Factors of SoftwareCosting 3. Development Team Size (per Project) Once the project is defined in terms of type and size, the next factor to be determined is the team size. Every project requires at least 3 roles – a Project Manager, a Developer, and a QA Tester. However, that does not mean that every role equates to one team resource. Some resources can fulfill more than one role. For example, In a small project, a Developer may also fill the role of Tester. In a small/medium project, the Project Manager may also fulfill the role of Business Analyst, and so forth. For larger, complex projects – team resources usually fulfill only one role to effectively move the project forward. Scheduling and maintaining a dedicated project team is instrumental in completing the project most efficiently. There is nothing more detrimental to a project than continually stopping and starting- it can be hard to regain the momentum to get the project back on track.
  • 11.
    Techniques used in cost estimation Inproject management process, in order to enable the time, money and work within the scope of the resources to get the best use, people developed many cost estimation method, in order to try to get a better estimate. Precise software cost estimate is an indispensable part as an effectively software management. There is an abundance of techniques and models which help in cost estimation in the software industry. Here's a brief outline of the various techniques with a mention of their specialties and limitations.
  • 12.
    Methods of Cost Estimation 1.Algorithmic (Parametric) model 2. Expert Judgment (Expertise Based) 3. Top - Down 4. Bottom - Up 5. Estimation by Analogy
  • 13.
    1. Algorithmic (Parametric)Model • This software cost estimation technique use the mathematical equations to perform the software estimation. The mathematical equations are based on historical data or theory. SLOC (source line of code), function points, and other cost drivers are the inputs. For most algorithmic model, calibration to the specific software environment can be performed to improve the estimation. Examples of the parametric models are COCOMO (COnstructive COst MOdel), COCOMO II, Putnam's software life-cycle model (SLIM). • Advantages: • Generate repeatable estimations • Easy to modify input data • Easy to refine and customize formulas • Objectively calibrated to experience • Disadvantages: • Unable to deal with exceptional conditions • Some experience and factors can not be quantified • Sometimes algorithms may be proprietary
  • 14.
    2. Expert JudgementModel • This technique captures the experience and the knowledge of the estimator who provides the estimate based on their experience from a similar project to which they have participated. Examples are the Delphi, Wideband Delphi and Work Breakdown Structure (WBS). • Advantages: • Useful in the absence of quantified, empirical data. • Can factor in differences between past project experiences and requirements of the proposed project • Can factor in impacts caused by new technologies, applications and languages. • Disadvantages: • Estimate is only as good expert’s opinion • Hard to document the factors used by the experts
  • 15.
    3. Top-Down Model •This technique is also called Macro Model, which utilize the global view of the product and then partitioned into various low level components. Example of this technique is the Putnam model. • Advantages: • Requires minimal project detail • Usually faster and easier to implement • Focus on system level activities • Disadvantages: • Tend to overlook low level components • No detailed basis
  • 16.
    4. Bottom-Up Model •The cost of each software components is estimated first and then the results are combined to derive the final cost estimation for the project. An example is the COCOMO’s detailed model. • Advantages: • More stable • More detailed • Allow each software group to hand an estimate • Disadvantages: • May overlook system level costs • More time consuming
  • 17.
    5. Estimation byAnalogy Model • This technique utilize the actual data that is extrapolated from a previous completed project and compare that with the proposed project in the same application domain to derive the cost estimate. • Advantages: • Based on actual project data • Disadvantages: • Impossible if no comparable project had been tackled in the past. • How well does the previous project represent this one
  • 18.
    z 1. Algorithmic (parametric)model: A model is developed using historical cost information which relates some software metric (usually its size) to the project cost. 2. Expert Judgement: This method of cost estimation makes use of the tenure-based project experience gained by the estimator. All the domain-based knowledge achieved by working in similar projects is brought to the fore in arriving at an estimated figure. This technique has been found to be very useful where there is a lack of quantifiable data. 3. Estimation by analogy : In this method, merely uses information and experience gained by a previously executed project. Using the tool of extrapolation, this data is compared with the information derived from the proposed project with similar area of expertise, to conclusively arrive at a rough cost estimate. 4. Top down approach: Also called as the Macro model, this approach initiates with coming down to every major detail related to the software product or project. Thereafter, the product/project is divided into components belonging to lower levels. Following this, distinct labour categories are created relevant for each segregated task. The product of the costs incurred and the number of tasks involved is calculated to get to the final figure for the total labour costs incurred in the project. 5. Bottom up approach: In this method, the project managers add on to their costs upwards initiating from the lowermost levels. The process is time consuming as every possible expense be it labour related or equipment based is added up starting from the foundation levels. This approach is well suited to large multi faceted projects. Techniques used in cost estimation
  • 19.
    Cost Estimation Models A model maybe static or dynamic. In a static model, a single variable is taken as a key element for calculating cost and time. In a dynamic model, all variable are interdependent, and there is no basic variable.
  • 20.
     Static, SingleVariable Models: When a model makes use of single variables to calculate desired values such as cost, time, efforts, etc. is said to be a single variable model. The most common equation is: C=aLb Where C = Costs; L= size ; a and b are constants  The Software Engineering Laboratory established a model called SEL model, based on data and analysis from previous cleanroom efforts within the SEL and is tailored to serve as a guideline in applying the methodology to future production software efforts. This model is an example of the static, single variable model. E=1.4L0.93 DOC=30.4L0.90 D=4.6L0.26 Where E= Efforts (Person Per Month) DOC=Documentation (Number of Pages) D = Duration (D, in months) L = Number of Lines per code STATIC, SINGLE VARIABLE MODELS
  • 21.
    • In somemodel, several variables are needed to describe the software development process, and selected equation combined these variables to give the estimate of time & cost. These models are called multivariable models. • WALSTON and FELIX develop the models at IBM provide the following equation gives a relationship between lines of source code and effort: E=5.2L0.91 • In the same manner duration of development is given by D=4.1L0.36 The productivity index uses 29 variables which are found to be highly correlated productivity as follows: Where Wi is the weight factor for the ith variable and Xi={-1,0,+1} the estimator gives Xi one of the values -1, 0 or +1 depending on the variable decreases, has no effect or increases the productivity. STATIC, MULTIVARIA BLE MODELS
  • 22.
    Compare the Walston-FelixModel with the SEL model on a software development expected to involve 8 person-years of effort. 1. Calculate the number of lines of source code that can be produced. 2. Calculate the duration of the development. 3. Calculate the productivity in LOC/PY 4. Calculate the average manning EXAMPLE STATIC, MULTIVARIA BLE MODELS
  • 23.
    SOLUTION The amount ofmanpower involved = 8PY=96persons-months (1) Number of lines of source code can be obtained by reversing equation to give: Then L (SEL) = (96/1.4)1⁄0.93=94264 LOC L (SEL) = (96/5.2)1⁄0.91=24632 LOC (2) Duration in months can be calculated by means of equation D (SEL) = 4.6 (L) 0.26 = 4.6 (94.264)0.26 = 15 months D (W-F) = 4.1 L0.36 = 4.1 (24.632)0.36 = 13 months
  • 24.
    SOLUTION (3) Productivity isthe lines of code produced per persons/month (year) (4) Average manning is the average number of persons required per month in the project