Project Planning and Estimation: Chapters 23, 24
Project Planning and Estimation: Chapters 23, 24
Project Planning and Estimation: Chapters 23, 24
Chapters 23, 24
Software Engineering: A Practitioners Approach
Roger S. Pressman
Project Planning
When: need for software has already been established; stakeholders are on-board; coding is ready to begin What: project planning spans five major activitiesestimation, scheduling, risk analysis, quality management planning, and change management planning Who: software project managers, with information from stakeholders and engineers
Estimation
Planning requires estimation early-on, even though it is likely this commitment will be proven wrong Some degree of uncertainty is unavoidable when predicting into the future Solid techniques and concrete procedures help reduce the inaccuracy of estimates
Process-based estimation
Most commonly-used technique for project estimation Project is broken down into a relatively small set of tasks and the effort required to accomplish each task is estimated Begins with a delineation of software functions obtained from the project scope
Process-based estimation
A series of framework activities must be performed for each function Representative framework activities:
Customer communication Planning / risk analysis Engineering Construction / release
Process-based estimation
Once functions and activities are melded, the planner estimates the effort (personmonths) required to accomplish each activity per function Average labor rates are then applied to the estimated efforts (may vary per task) Cost and effort for each function and activity (row and column totals) are computed as the last step
Use-case estimation
A structural hierarchy is described for the project Any level of the hierarchy can be described by no more than 10 use-cases Each of the use-cases would encompass no more than 30 distinct scenarios
Use-case estimation
Use-cases for a large system are described at a much higher level of abstraction then use-cases for individual sub-systems Before use-cases can be used:
The level within the structural hierarchy is established Average length (in pages) of each use-case is determined The type of software (business, scientific, etc) is defined Rough architecture for the system is considered
Use-case estimation
Once those characteristics are established, empirical data can be used to determine estimated LOC or FP per each use-case for each level of the hierarchy Historical data are then used to calculate the effort required to develop the system
Reconciling estimates
The various estimation methods encountered result in multiple estimates which must be reconciled The goal of a reconciliation process is to produce a single estimate of effort, project duration, or cost Complicated methods might not yield a more accurate estimate, particularly when developers can incorporate their own intuition into the estimate. -- Philip Johnson, et al.
Reconciling estimates
Widely divergent estimates can often be traced to one of two causes:
The scope of the project is not adequately understood or has been misinterpreted by the planner Productivity data used for problem-based estimation is inappropriate for the application, obsolete, or has been misapplied.
The planner must determine the cause of the divergence to reconcile the estimates
Putnum-Norden-Rayleigh Curve
The PNR Curve provides an indication of the relationship between effort applied and delivery time for a software project There is a highly non-linear relationship between chronological time to complete a project and human effort applied
Putnum-Norden-Rayleigh Curve
The number of delivered lines of code L is related to effort and development time by the equation:
L = P E1/3t4/3
E is development effort in person-months P is a productivity parameter that reflects that result in high quality (typically 2,000-12,000) t is the project duration in calendar months
Putnum-Norden-Rayleigh Curve
Rearranged to solve for development effort:
E = L3/(P3t3)
E is effort expended (in person-years) over the entire project life-cycle L is lines of code (source statements) P is a productivity parameter that reflects that result in high quality (typically 2,000-12,000) t is the development time in years