Software Cost Estimation
Software Cost Estimation
Managing People
Act as project leader
Liaison with stakeholders
Managing human resources
Setting up reporting hierarchy etc.
Managing Project
Defining and setting up project scope
Managing project management
activities
Monitoring progress and performance
Risk analysis at every phase
Take necessary step to avoid or come
out of problems
Act as project spokesperson
Activities involved in Software Estimation:
1. Projects planning (Estimation determines how much money, effort, resources, and
time it will take to build a specific system or product)
2. Scope and feasibility (The functions and features that are to be delivered to end
users. The data that are input to and output from the system. The "content" that is
presented to users as a consequence of using the software)
3. Project resources (Each resource is specified with: A description of the resource. A
statement of availability, time when the resource will be required. The duration of
time that the resource will be applied Time window)
4. Estimation of project cost and effort (The accuracy of a software project estimate is
predicated on: The degree to which the planner has properly estimated the size (e.g.,
KLOC) of the product to be built. The ability to translate the size estimate into human
effort, calendar time, and money)
5. Decomposition techniques (Before an estimate can be made and decomposition
techniques applied, the planner must Understand the scope of the software to be built
Generate an estimate of the software’s size)
6. Empirical estimation models (Estimation models for computer software use
empirically derived formulas to predict effort as a function of LOC (line of code) or
FP (function point). Resultant values computed for LOC or FP are entered into an
estimation model
Software Cost Estimation
• One needs to choose and determine how many engineers are required for project to develop
and establish a schedule during planning stage.
• While monitoring project’s progress, one needs to access whether project is progressing
towards achieving goal according to procedure and whether it takes corrective action or not.
• It makes it possible to allocate resources such as labor, tools and supplies in a way that
maximizes effectiveness and reduces waste.
• Cost estimates are used as a starting point for talks and agreements between parties when
negotiating contracts or project requirements.
• It offers a shared understanding of the financial concerns and facilitates open and honest
communication among project stakeholders.
• It affects resource allocation and project duration, that is why the amount of time needed for
various project activities is a crucial component in cost assessment.
Effort and Cost Estimation
Techniques
• Cost and effort estimation are performed in a stepwise fashion by breaking
down a project into major functions and related software engineering activities.
Basics of Software Estimation:
Estimation determines how much money, effort, resources, and
time it will take to build a
specific system or product. Estimation is based on −
Past Data/Past Experience
Available Documents/Knowledge
Assumptions
Identified Risks
Cost estimation simply means a technique that is used to find out the cost estimates. Various techniques or models are available for cost estimation, also
known as Cost Estimation Models.
1. Empirical Estimation Technique – Empirical estimation is a technique or model in which empirically derived
formulas are used for predicting the data that are a required and essential part of the software project planning step.
These techniques are usually based on the data that is collected previously from a project and also based on some
guesses, prior experience with the development of similar types of projects, and assumptions. It uses the size of the
software to estimate the effort. In this technique, an educated guess of project parameters is made. Hence, these
models are based on common sense. However, as there are many activities involved in empirical estimation
techniques, this technique is formalized. For example Delphi technique and Expert Judgement technique.
2. Heuristic Technique – Heuristic word is derived from a Greek word that means “to discover”. The heuristic
technique is a technique or model that is used for solving problems, learning, or discovery in the practical methods
which are used for achieving immediate goals. These techniques are flexible and simple for taking quick decisions
through shortcuts and good enough calculations, most probably when working with complex data. But the decisions
that are made using this technique are necessary to be optimal. In this technique, the relationship among different
project parameters is expressed using mathematical equations. The popular heuristic technique is given by
Constructive Cost Model (COCOMO). This technique is also used to increase or speed up the analysis and
investment decisions.
3. Analytical Estimation Technique – Analytical estimation is a type of technique that is used to measure work. In
this technique, firstly the task is divided or broken down into its basic component operations or elements for
analyzing. Second, if the standard time is available from some other source, then these sources are applied to each
element or component of work. Third, if there is no such time available, then the work is estimated based on the
experience of the work. In this technique, results are derived by making certain basic assumptions about the project.
Hence, the analytical estimation technique has some scientific basis. Halstead’s software science is based on an
analytical estimation model.
Other Cost Estimation Models
1.Function Point Analysis (FPA): This technique counts the number and complexity of
functions that a piece of software can perform to determine how functional and
sophisticated it is. The effort needed for development, testing and maintenance can be
estimated using this model.
2.Putnam Model: This model is a parametric estimation model that estimates effort,
time and faults by taking into account the size of the the programme, the expertise of
the development team and other project-specific characteristics.
3.Price-to-Win Estimation: Often utilized in competitive bidding, this model is concerned
with projecting the expenses associated with developing a particular software project in
order to secure a contract. It involves looking at market dynamics and competitors.
4.Models Based on Machine Learning: Custom cost estimating models can be built
using machine learning techniques including neural networks, regression analysis and
decision trees. These models are based on past project data. These models are flexible
enough to adjust to changing data and project-specific features.
5.Function Points Model (IFPUG): A standardized technique for gauging the
functionality of software using function points is offered by the International Function
Point Users Group (IFPUG). It is employed to calculate the effort required for software
development and maintenance.
COCOMO Model
2.Schedule: This simply means the amount of time required for the completion of the
job, which is, of course, proportional to the effort put in. It is measured in the units of
time such as weeks, and months.
1. Planning and requirements: This initial phase involves defining the scope, objectives, and constraints of
the project. It includes developing a project plan that outlines the schedule, resources, and milestones
2. System design: : In this phase, the high-level architecture of the software system is created. This includes
defining the system’s overall structure, including major components, their interactions, and the data flow
between them.
3. Detailed design: This phase involves creating detailed specifications for each component of the system. It
breaks down the system design into detailed descriptions of each module, including data structures,
algorithms, and interfaces.
4. Module code and test: This involves writing the actual source code for each module or component as
defined in the detailed design. It includes coding the functionalities, implementing algorithms, and
developing interfaces.
5. Integration and test: This phase involves combining individual modules into a complete system and
ensuring that they work together as intended.
6. Cost Constructive model: The Constructive Cost Model (COCOMO) is a widely used method for
estimating the cost and effort required for software development projects.
Importance of the COCOMO
Model
1. Cost Estimation: To help with resource planning and project budgeting, COCOMO offers a
methodical approach to software development cost estimation.
2. Resource Management: By taking team experience, project size, and complexity into
account, the model helps with efficient resource allocation.
3. Project Planning: COCOMO assists in developing practical project plans that include
attainable objectives, due dates, and benchmarks.
4. Risk management: Early in the development process, COCOMO assists in identifying and
mitigating potential hazards by including risk elements.
5. Support for Decisions: During project planning, the model provides a quantitative foundation
for choices about scope, priorities, and resource allocation.
7. Resource Optimization: The model helps to maximize the use of resources, which raises
productivity and lowers costs.