Introduction
Software project management begins with a set of activities that are collectively called project planning
The manager and the software team must estimate the work that is to be done, the resources required and the time that will be taken to complete the project
Estimates should always be made with the future needs in mind and also taking into account the various degree of uncertainty
Process and project metrics provides the historical perspective and a powerful input for the generation of quantitative estimates
As estimation lays a foundation for all other project planning activities, project planning paves the way for successful software engineering.
Project Planning Objectives
- The objective of software project planning is to provide a framework that enables the project manager to make some reasonable estimates of resources, cost and schedule
- These estimates are made at the beginning of a software project and should be updated regularly as the project progresses towards completion
- The planning objective is achieved through a process of information discovery that leads to the formulation of reasonable estimates
Software Scope
First activity in the planning of the software project is the determination of the scope of the software
Scope of the software describes the data and control to be processed, function, performance, constraints, interfaces and reliability
Obtaining information necessary for scope
Feasibility
Resources
The second task involved in software planning is the estimation of the resources required to accommodate the software development effort
Project Development Resources
Each resource is specified with 4 characteristics :
- Description of the resource.
- Statement of availability.
- Time when the resource will be required.
- Duration of time that resource will be applied
Software Project Estimation
Software is the most expensive element of virtually all computer-based systems
Cost over run can be disastrous for the software developer
To achieve a reliable cost and effort estimates, a number of options arise :
- Delay estimation until late in the project.
- Base estimates on similar projects that have already been completed.
- Use relatively simple decomposition techniques to generate project cost and effort estimates.
- Use one or more empirical models for software cost and effort estimation.
- The first option, however attractive, is not practical
The second option can work reasonably well, if the current project is quite similar to the past efforts and other project influences are equivalent
Decomposing techniques take a divide and conquer approach to software project estimation
Empirical estimation models can be used to complement decomposition techniques and offer a potentially valuable estimation approach in their own right
Decomposition Techniques
- Software project estimation is a form of problem solving
- in most cases, the problem to be solved is too complex to be considered in one piece
- The decomposition approach can be seen from two different points of view
- Decomposition of the problem.
- Decomposition of the process.
Software Sizing
Since the estimate of the project is only as good as the estimate of the size of the work to be accomplished, sizing represents the software project planner's first major challenge
If a direct approach is taken, size can be measured in LOC (lines of code).
If an indirect approach is chosen, size is represented as FP (function points).
Putnam and Myers's four different approaches to the sizing problem
Problem based Estimation
The project planner begins with a bounded statement of software scope
From this statement it attempts to decompose the software into various problem functions that can each be estimated individually
LOC or FP (the estimation variable) is then estimated for each function
When LOC is used as the estimation variable, decomposition is absolutely essential and is often taken to considerable levels of detail
For FP estimates, rather than focusing on function, each of the information domain characteristics as well as the 14 complexity adjustment values (discussed in the previous chapter) are estimated
The resultant estimates can then be used to derive a FP value that can be tied to past data and used to generate an estimate
Process-based Estimation
The most common technique for estimating a project is to base the estimate on the process that will be used
The process is decomposed into a relatively small set of tasks and the effort required to accomplish each task is estimated
It begins with a delineation of the software functions obtained from the project scope
A series of software activities must be performed for each function.
Once the problem functions and process activities are melded, the project planner estimates the effort (e.g., person-months) that will be required to accomplish each software for each software function
Cost and effort for each function and software process activity are computed as the last step
This estimation is performed independently of LOC or FP estimation
Empirical Estimation Models
The COCOMO Model
Software Equation
Make / Buy Decision
Outsourcing
Automated Estimation Tools