Chapt 8
Chapt 8
The chapter describes the process of building and monitoring schedules for software
development projects. To build complex software systems, many engineering tasks need to occur
in parallel with one another to complete the project on time. The output from one task often
determines when another may begin. Software engineers need to build activity networks that take
these task interdependencies into account. Managers find that it is difficult to ensure that a team
is working on the most appropriate tasks without building a detailed schedule and sticking to it.
This requires that tasks are assigned to people, milestones are created, resources are allocated
for each task, and progress is tracked.
Root Causes for Late Software
1. Perform a detailed project estimate for project effort and duration using historical data.
2. Use an incremental process model that will deliver critical functionality imposed by deadline,
but delay other requested functionality.
3. Meet with the customer and explain why the deadline is unrealistic using your estimates
based on prior team performance.
4. Offer an incremental development and delivery strategy as an alternative to increasing
resources or allowing the schedule to slip beyond the deadline.
Project scheduling is an activity that distributes estimated effort across the planned project
duration by allocating the effort to specific software engineering tasks.
One view is that the end-date for the software release is set externally and that the software
organization is constrained to distribute effort in the prescribed time frame.
Another view is that the rough chronological bounds have been discussed by the developers
and customers, but the end-date is best set by the developer after carefully considering how
to best use the resources needed to meet the customer’s needs.
Schedules evolve over time as the first macroscopic schedules are refined into the detailed
schedule for each planned software increment.
Adding people to a project after it is behind schedule often causes the schedule to slip further
The relationship between the number of people on a project and overall productivity is not
linear (e.g. 3 people do not produce 3 times the work of 1 person, if the people have to work
in cooperation with one another)
The main reasons for using more than 1 person on a project are to get the job done more
rapidly and to improve software quality.
Scheduling
Task networks (activity networks) are graphic representations can be of the task
interdependencies and can help define a rough schedule for particular project
Scheduling tools should be used to schedule any non-trivial project.
Program evaluation and review technique (PERT) and critical path method (CPM) ) are
quantitative techniques that allow software planners to identify the chain of dependent tasks
in the project work breakdown structure (WBS) that determine the project duration time.
Timeline (Gantt) charts enable software planners to determine what tasks will be need to be
conducted at a given point in time (based on estimates for effort, start time, and duration for
each task).
The best indicator of progress is the completion and successful review of a defined software
work product.
Time-boxing is the practice of deciding a priori the fixed amount of time that can be spent on
each task. When the task's time limit is exceeded, development moves on to the next task
(with the hope that a majority of the critical work was completed before time ran out).
Periodic project status meetings with each team member reporting progress and problems
Evaluation of results of all work product reviews
Comparing actual milestone completion dates to scheduled dates
Comparing actual project task start-dates to scheduled start-dates
Informal meeting with practitioners to have them asses subjectively progress to date and
future problems
Use earned value analysis to assess progress quantitatively
Estimation approaches
Formal estimation
Parametric models COCOMO, SLIM, SEER-SEM
model
One technique for software project estimation involves the use of regression equations. These
equations allow you to calculate an estimate for a particular project metric such as effort or
duration by simply inserting the calculated, or estimated, size of your project into the appropriate
equation.
This estimation technique is commonly used to produce indicative or "ballpark" project estimates
early in the life of a project. This technique is not sufficiently accurate to produce an estimate that
could be relied on for quoting or business case requirements. A "ballpark" estimate can be used
for an early indication of whether a project idea is feasible, or when you are short of time and
detailed information.
Estimation using comparison allows you to achieve more detailed estimates than can be gained
using regression equations. Estimates using comparison are aligned more specifically to the
attributes of the project being planned rather than being based on those of the "average" project
Estimation using comparison involves a technique based on comparison of your planned project
with a number of projects.
Analogy based estimation is another technique for early life cycle macro-
estimation. Analogy based estimation involves selecting one or two completed
projects that most closely match the characteristics of your planned project
Analogy based estimation differs from the comparison based estimation above,
in that comparison based estimation uses the medians from a group of similar
projects. Analogy operates with one, or perhaps two past projects selected on
the basis of their close similarity to the proposed project. Comparing a planned
project to a past project is commonly used in an informal way when
"guesstimating", consequently it is a familiar technique to the practitioner.
---> A detailed schedule is redefined for each entry in the macroscopic schedule.
Compartmentalization
Interdependency
Time allocation
Effort allocation
Effort validation
Defined responsibilities
Defined outcomes
Defined milestones
Critical path:
- The tasks on a critical path must be completed on schedule to make the whole
project on schedule.
T7 T8
T1 T2 T3 T4
T5 T6
Scheduling
Scheduling of a software project does not differ greatly from scheduling of any
multitask Engineering effort.
Two project scheduling methods:
- Program Evaluation and Review Technique (PERT)
- Critical Path Method (CPM)
Both methods are driven by information developed in earlier project planning
activities:
- Estimates of effort
- A decomposition of product function
- The selection of the appropriate process model
- The selection of project type and task set
Both methods allow a planer to do:
- determine the critical path
nodes 6 and 9 indicates that the system files must be converted before the user test can
take place, but that the resources and time required to prepare for the user test (writing
the user manual and user training) are on another path. Numbers on the opposite sides
of the vectors indicate the time allotted for the task.
The PERT chart is sometimes preferred over the Gantt chart, another popular project
management charting method, because it clearly illustrates task dependencies. On the
other hand, the PERT chart can be much more difficult to interpret, especially on
complex projects. Frequently, project managers use both techniques.
Development start
Plan (Expected)
Compare progress with Corrective
target and standards actions
Standards of
performance
NO
Satisfactory?
Yes
¿Project NO
finished?
Yes
Development end
Controlling activities:
Develop standards of performance.
Set conditions or measurements that will exists when tasks are
correctly done.
Establish monitoring and reporting systems.
Determine necessary data, who will receive it, and when they will
receive it
Reward and discipline
Praise, remunerate, and discipline applicable personnel.
Document controlling methods.
Document the standards, methods of reporting and control, bonus
plans et al., decisions points, and so on.