To frame our discussion, consider:
What is the role of planning in facilitating the development of software?
How do plans assist in the management of project resources?
How do we arrive at effort and cost estimates for software products?
The objective of software project planning is to provide a framework that enables the project manager to estimate the resources, cost, and schedule. Project planning is an iterative process with periodic stepwise refinements.
The project manager is largely responsible for all project planning. The designers and developers of the project following the recommendations of each activity should produce artifacts and feedback which provides the project manager with a measure of project progress. The project manager reviews these measures and decides what if any corrective actions are necessary to keep the project on schedule. These actions may involve reallocating resources, adjusting schedule, relaxing requirements, increasing training, etc.
A new project is initiated by a statement of work (SOW), what we are calling the problem definition. The SOW describes the software product that the customer wants you to produce. The project manager should initiate a System Design activity to produce an architecture for the system. This may require that the project manager first select an appropriate method for performing a first pass at Requirements Elicitation and Requirements Analysis, and perform those activities before enough information is available to the designers to create an architecture.
The long-term project plan describes the resources to be used for the entire length of the project. It should detail what is to be done and by whom.
The short-term plan certainly encompasses plenty of risks. The best way to handle risks are to:
| Human | Select the individuals with the necessary skills to accomplish the activity. |
| Hardware | Specify the development system, the target system, and other hardware elements. |
| Software | Project management Tools Support Tools Analysis and Design Tools Programming Tools Testing Tools Prototyping Tools |
| Time | The time needed to build system is related to the size of the system, which in turn is related to the number of functions desired, and the number of individuals involved and their productivity. 40-20-40 60-15-25 |
| Information | Project documentation Agreed upon changes |
| Organization | Identified roles of individuals and the expectations of those roles. |
| Quality | The characteristics of the product that in a real sense govern its value to the customer. |
| Money | Software is labor intensive. Controlling and managing money is typically a matter of controlling labor costs. |
2. Develop an empirical model for software cost and effort. Construct a model based on historical data from prior projects. Establish the values of the given set of parameters for the current project, and the model produces the estimates requested.
Cost - $
Effort - person-month
Relationship
C = f(E)
Cost = cost/person-month * estimated person-months
What is effort related to?
Coverage
Requirements through delivery?
Design through delivery?
Requirements through maintenance?
a, b, and c are derived through the use of regression analysis on data from previous projects.
| Organic | b=2.4, c=1.05 |
| A relatively small team develops software in a known environment. Those involved generally have significant experience with projects of this type. These tend to be small projects. | |
| Embedded | b=3.0, c=1.12 |
| These projects involve the development where the intended environment poses significant constraints. The product is "embedded" in an environment which is inflexible. | |
| Semidetached | b=3.6, c=1.20 |
| This is an intermediate. The team may show a mixture of experience and inexperienced people. The project may be larger than that in the organic type. |
| Cost Drivers | Rating | |||||
| very low | low | nominal | high | very high | extra high | |
| Product Attributes | ||||||
| Reliability | .75 | .88 | 1.00 | 1.15 | 1.40 | |
| Data base | .94 | 1.00 | 1.08 | 1.16 | ||
| Product Complexity | .70 | .85 | 1.00 | 1.15 | 1.30 | 1.65 |
| Computer Attributes | ||||||
| Execution Time | 1.00 | 1.11 | 1.30 | 1.66 | ||
| Main Storage | 1.00 | 1.06 | 1.21 | 1.56 | ||
| Virtual Machine Volatility | .87 | 1.00 | 1.15 | 1.30 | ||
| Computer Turnaround Time | .87 | 1.00 | 1.07 | 1.15 | ||
| Personnel Attributes | ||||||
| Analyst Capabilities | 1.46 | 1.19 | 1.00 | .86 | .71 | |
| Applications Experience | 1.29 | 1.13 | 1.00 | .91 | .82 | |
| Programmer Capability | 1.42 | 1.17 | 1.00 | .86 | .70 | |
| Virtual Machine Experience | 1.21 | 1.10 | 1.00 | .90 | ||
| Prog. Lang. Experience | 1.14 | 1.07 | 1.00 | .95 | ||
| Project Attributes | ||||||
| Use of modern prog. Tech. | 1.24 | 1.10 | 1.00 | .91 | .82 | |
| Use of Software Tools | 1.24 | 1.10 | 1.00 | .91 | .83 | |
| Development Schedule | 1.23 | 1.08 | 1.00 | 1.04 | 1.10 | |
Go To Lecture [Outline] [Overview]
Go To [Course Outline]
Boehm, B. (1981) Software Engineering Economics. Englewood Cliffs, NJ: Prentice-Hall.
van Vliet, H. (1993) Software Engineering: Principles and Practice. New York: John Wiley.