Software Project Planning: Basic Objective
Software Project Planning: Basic Objective
Basic objective
To create a plan to meet the commitments of the project, I.e. create a path that, if
followed, will lead to a successful project
Planning involves defining the software development life cycle process to be
followed, cost & effort estimates, detailed schedule, plan for quality, risk
management, etc.
Main Output
A project management plan and the project schedule
Key Planning Tasks
Define suitable processes for executing the project
Estimate effort & cost
Define project milestones and create a schedule
Define quality objectives and a quality plan
Identify risks and make plans to mitigate them
Define project-tracking procedures, training plan, team organization, etc.
Software Engineering 1
Cont…
Software project managers are responsible for planning and scheduling project
development.
They supervise the work to ensure that it is carried out to the required standard and
quality. They monitor to check that the development is on time and within budget.
The project planning must incorporate the major issue like project size estimation,
cost & effort estimation, scheduling, project monitoring and reviews, personnel
selection and evaluation, and risk management.
Software planning begins before technical work starts, continues as the software
evolves from concept to reality, and ends only when the software is retired.
Software Engineering 2
Project Planning
It is an input to all cost estimation models, development time and schedule for the
project.
Software Engineering 3
Project Planning
Resources requirements are estimated on the basis of cost and development time.
Project scheduling may prove to be very useful for controlling and monitoring the
progress of the project. This is dependent on the resources and development time.
Size Estimation
Resources Requirements
Project Scheduling
Software Engineering 4
Project Cost Estimation
Experience-based techniques
The estimate of the effort required to develop the software project is based on
the manager’s experience of past projects and the application domain.
Essentially, the manager makes an informed judgment of what the effort
requirements are likely to be.
Algorithmic cost modeling
In this approach, a formulaic approach is used to compute the project effort
based on estimates of product attributes, such as size.
Software Engineering 5
Project Cost Estimation (Estimate Uncertainty)
Estimation accuracy can improve with more information about the project
Early estimates are more likely to be inaccurate than later
More uncertainties in the start
Software Engineering 6
Experience Based Approach
You document these in a spreadsheet, estimate them individually and compute the
total effort required.
It usually helps to get a group of people involved in the effort estimation and to ask
each member of the group to explain their estimate.
Software Engineering 7
Problem with Experience Based Approach
The difficulty with experience-based techniques is that a new software project may
not have much in common with previous projects.
Software development changes very quickly and a project will often use unfamiliar
techniques such as web services, application system configuration or HTML5.
If you have not worked with these techniques, your previous experience may not
help you to estimate the effort required, making it more difficult to produce
accurate costs and schedule estimates.
Software Engineering 8
Algorithmic Cost Estimation
Effort = A * SizeB
The most commonly used product attribute for cost estimation is code size.
Most models are similar but they use different values for A and B.
COCOMO (Cost Constructive Model) is widely used to estimate the effort and
cost.
Software Engineering 9
COCOMO (Basic Model)
The basic model aims at estimating the effort in a quick and rough fashion for
the most of the small to medium sized software projects.
Organic Mode
In the organic mode, small sized projects are developed by small team of experienced
developers in the very familiar environment.
Software Engineering 10
COCOMO (Basic Model)
Embedded Mode
In embedded mode, large size projects are developed. In this mode, projects to be
developed are unique, innovative and very complex (Real Time Systems, Complex
Interfaces).
Software Engineering 11
COCOMO (Basic Model)
E = a (KLOC)b
D = c (E)d
Project a b c d
Organic 2.4 1.05 2.5 0.38
Semi - detached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32
Software Engineering 12
COCOMO (Basic Model)
Software Engineering 13
COCOMO (Intermediate Model)
The basic model allowed for a quick and rough estimate, but it resulted in a lack
of accuracy.
Berry Boehm introduced an additional set of 15 cost drivers in the intermediate
model to take account of the software development environment.
Cost drivers are used to adjust the nominal cost of a project to the actual project
environment, hence increasing the accuracy of the estimate.
The cost drivers are grouped into four categories:
Product Attributes
Required software reliability (RELY)
Database Size (DATA)
Product Complexity (CPLX)
Computer Attributes
Execution time constraint (TIME)
Main storage constraint (STOR)
Virtual Machine Volatility (VIRT)
Computer Turnaround Time (TURN)
Software Engineering 14
COCOMO (Intermediate Model)
Personnel Attributes
Analyst capability (ACAP)
Application experience (AEXP)
Programmer Capability (PCAP)
Virtual Machine Experience (VEXP)
Programming Language Experience (LEXP)
Project Attributes
Modern Programming Practices (MODP)
Use of Software Tools (TOOL)
Required Development Schedule (SCED)
Each cost driver is rated for a given project environment. This rating varies from very
low, low, nominal, high, very high to extra high. Each of the rating is associated with the
multiplier values for the 15 cost drivers.
Software Engineering 15
COCOMO (Intermediate Model)
The multiplying factors for all 15 cost drivers are multiplied to get the Effort
Adjustment Factor (EAF).
The intermediate COCOMO equations take the form
E = a (KLOC)b * EAF
D = c (E)d
Project a b c d
Organic 3.2 1.05 2.5 0.38
Semi - detached 3.0 1.12 2.5 0.35
Embedded 2.8 1.20 2.5 0.32
Software Engineering 16