|
|||||
Software
Project Management
(CS615)
LECTURE
# 37
8.
Scheduling
8.1
Understanding
Schedule
i.
Salient
Features:
Fred
Brooks, the well-known
author of The
Mythical-Man-Month [BRO95],
was once
asked how software projects
fall behind schedule. His
response was
as simple
as it was profound: "One day at a
time."
The
reality of a technical project
(whether it involves building a
hydroelectric
plant or
developing an operating system) is
that hundreds of small tasks
must
occur to
accomplish a larger
goal.
Some of
these tasks lie outside
the mainstream and may be
completed without
worry
about impact on project
completion date, Other tasks
lie on the
"critical"
path, these "critical" tasks
fall behind schedule, the
completion date
of the
entire project is 'put into
jeopardy,
The
project manager's objective is to
define all project tasks
build a network
that
depicts their interdependencies, identify
the tasks that are
critical within
the
network, and then track
their progress to ensure that
delay is recognized
"one
day at a time." To accomplish
this, the manager must have
a schedule
that
has been defined at a degree
of resolution that enables
the manager to
monitor
Progress and control the
project.
Software
project scheduling is an
activity that distributes estimated
effort
across
the planned project duration
by allocating the effort to
specific software
engineering
tasks.
It is
important to note, however,
that the schedule evolves
over time. During
early
stages of project planning, a
macroscopic
schedule is
developed. This
type of
schedule identifies all
major software engineering
activities and the
product
functions to which they are
applied.
As the
project gets under way,
each entry on the macroscopic
schedule is
refined
into a detailed
schedule. Here
specific software tasks
(required to
accomplish
an activity) are identified and
scheduled.
Scheduling
for software engineering
projects can be viewed from
two rather
different
perspectives. In the first, an end-date
for release of a computer-based
system
has already (and
irrevocably) been established.
284
Software
Project Management
(CS615)
The
software organization is constrained to
distribute effort within
the
prescribed
time frame. The second
view of software scheduling
assumes that
rough
chronological bounds have
been discussed but the
end-date is set by the
software
engineering organization. Effort is
distributed to make best use
of
resources
and an end-date is defined after careful
analysis of the ware.
Unfortunately,
the first situation is
encountered far more
frequently than the
second.
As a
project manager, you need to
assign durations to all
activities and
monitor
their progress.
You also
need to plan the order in
which the activities will be
performed as
well as
the start and end dates for
each activity. In short, you
need to create a
project
schedule.
The
plan includes not only
the scheduling of development
activities, but also
the
scheduling of project resources,
particularly people. To accomplish
this,
the
manager must have a schedule
that has been defined at a
degree of
resolution
that enables the manager to
monitor Progress and control
the
project.
The project schedule is one of
the most important parts of
the project
development
plan.
The
project schedule reflects
the start dates and end
dates for each activity
in
the
project. It also reflects the
resources required to complete
the activities. To
create a
schedule, you can use
project management tools.
To create
a schedule, you can use
project management tools,
e.g.:
·
Gantt
charts
·
Network-scheduling
techniques
No matter
how well the project
schedule is prepared, that schedule is
useless
unless it
is adhered to. It is the
project manager's responsibility to
withstand
pressure
and to assure that the
project is developed in an orderly
fashion,
according
to the schedule. Whenever
circumstances change, the
project
schedule
should then be updated to reflect
the new situation.
ii.
Need
for Project
Scheduling
Software
project have a tendency to get
out of control because of
the multiple
activities
that need to be monitored,
tracked, and controlled. When a
project
goes
out of control, the original
deadlines, the budget, and the
effort required
overshoot
the initial estimates. This
not only impacts the
product, but also the
credibility
of the development
team.
285
Software
Project Management
(CS615)
iii.
What
Delays Software Projects
There
are various reasons why a
software project is delayed.
Some of the
reasons
are listed below:
·
The
initial estimate of the effort and
resources required to complete
the
software
project was incorrect. (An
honest underestimate of the
amount of
effort
and/or the number of
resources that will be required to do
the
job).
·
Changing
customer requirements that
are not reflected in
schedule
changes.
·
Known
risks were not mitigated.
(Predictable and/or unpredictable
risks
were
not considered when the
project commenced).
·
Technical
difficulties surfaced during
software product
development.
(Technical
difficulties could not have
been foreseen in advance).
·
Human
difficulties, such as interpersonal
problems and team attitude,
became
unmanageable. (Human difficulties
that could not have
been
foreseen in advance,
e.g., Miscommunication among
project staff
resulting
in
delays).
·
A failure
by project management to recognize that
the project is
falling
behind
schedule and a lack of action to
correct the problem.
·
The
initial deadline set for
the project was unrealistic.
(An unrealistic
deadline
established by someone outside the
software development
group
and
forced on managers and practitioners
within the group).
Aggressive
(read "unrealistic") deadlines are a fact
of life in the
software
business
Sometimes such deadlines are demanded
for reasons that
are
legitimate,
from the point of view of
the person who sets the
deadline. But
common
sense says that legitimacy
must also be perceived by the
people
doing
the work.
iv.
How
to Prevent Delays
While
most of the above reasons
result in project delays,
unrealistic deadlines
cause
the maximum damage.
Unrealistic deadlines are caused
either by the
client
wanting a quick delivery or
the management wanting a return
business
nom a
client.
286
Software
Project Management
(CS615)
However,
unrealistic deadlines are the
norm for software projects.
You need
to
resolve the conflict between
an unrealistic deadline and the
constraints of
the
software development team.
As a
project manager you need to balance
the limited resources and
the final
deliverable
committed to the client. To do
this, you can follow the
points
listed
below:
a) Study
similar past projects for
the method of dealing with
similar
situations.
Use the historical information to
project time and
effort
estimates
for the current software
project.
b) Use an
incremental process model to
create a schedule to deliver
the
required
functional module of the
software product.
c)
Present the schedule created
on the basis of past
projects to the
client.
Explain
the projected delays and the
reasons for the
same.
d)
Present the incremental
model as a strategy for
developing the
software
product.
All the
strategies have their
advantages and disadvantages. If the
schedule
created
using inputs from the
past project does not
help meet the deadline,
you
can use
the incremental model. In
the incremental model, the
strategy is to
deliver
each module as and when it is
completed. However, historical
trends
show
that clients opt for
either strategy if provided
reasonable time and
effort
estimates.
8.2
Scheduling
Fundamentals
i.
Scheduling
Basics
Only a
small percentage of all the
activities in a software project
have a direct
impact on
the on-time completion of
the software project.
Therefore, you need
to
identify the activities that
are critical to the
completion of the project.
In
addition,
you ensure that all inputs
are available to complete
the critical
activities.
This is where a software
project schedule comes into
the picture.
The
goal of a software project
schedule is to determine the
duration of the
software
project and the phases
within the project. A
software project
schedule
enables you to distribute
the estimated effort to be spent
in
performing
the critical
activities.
There
are a few basic principles
that determine how a
software project
schedule
is created. To create a project schedule,
first you group
similar
activities
together. Then, you
determine the dependencies of
the different
activities.
Next, you allocate the
estimated time and resources to each
activity.
Finally,
you define the roles and
responsibilities and the output and
validation
criteria.
287
Software
Project Management
(CS615)
Some of
the guidelines for creating
a software project schedule
are discussed
below:
a)
Classification
b)
Interdependence
c)
Time
and effort allocation
d)
Validation
criteria
e)
Defined
responsibilities and outputs
a)
Classification
While
managing a software project,
you need to group similar
tasks and
activities
so that they are completed
successfully. The primary
tools used to
group
similar tasks are the
WBS and decomposition technique.
Using these
tools,
you can divide a software
project into different
phases. The phases
can
be
further subdivided into
activities. The software
project schedule is
prepared
according
to the arrangement of the
phases.
b)
Interdependence
As you
have seen, a software
project is composed of multiple
phases and each
phase is
composed of multiple activities.
Although each activity is
treated
separately,
it is linked to other activities. As a
project manager, you
determine
the
interdependence and sequence of activities.
For example, some
activities
can be
completed without any inputs
from other activities, whereas
other
activities
cannot start unless a
preceding activity is
completed.
c)
Time and Effort
Allocation
Each
activity in a software project
needs a certain amount of
time and effort
for
completion. To manage the
project, you assign start
and end dates to each
activity.
You also need to allocate appropriate
effort to each activity.
Most
software
projects operate with time
and effort constraints.
Therefore,
managing
within the available
resources is very important
for a software
project
manager.
d)
Validation Criteria
You also
determine the validation
criteria for time and effort
allocation in a
software
project. Determining the
validation criteria allows
you to ensure that
the
optimal level of resources is
available for a particular
activity. Suppose 5
people
are assigned to an activity
that requires an effort of
3.5 person days.
This
means resources allocated
are more than the
actual requirement.
e)
Defined Responsibilities and
outputs
As a
software project manager, you
assign roles and responsibilities to
all
people
assigned to a software project.
This defines the hierarchy
in the
development
team. You also define the outputs
from each activity. This
helps
in
identifying the results expected at
the end of every activity.
Next, you link
the
roles to the outputs. When
each role is linked to the
expected results, you
288
Software
Project Management
(CS615)
can track
each person's effort and the
progress of each activity
towards
closure.
289
Table of Contents:
|
|||||