Project Scheduling
An Introduction
Prof. David Bernstein
James Madison University
Computer Science Department
bernstdh@jmu.edu
Motivation
The Question:
How long will it take to complete a specific (design or implementation) project (or part of a project)?
A Naive Approach:
Add the effort estimates for each task
An Overview of the Shortcomings of the Naive Approach:
Units Matter
Task Details Matter
Task Dependencies Matter
Personnel Capabilities Matter
Units Matter
Effort (\(E\)):
Measured in person-days or person-months
Time (\(T\)):
Measured in days or months
The Implication:
Thinking only about units, \(T = E / N\), which means that \(N\) (i.e., the number of people working on the project) matters
Task Details Matter
A Property of Very Small Tasks:
They can only be worked on by one person at a time (hence, \(T = E / N\) only applies when \(N = 1\))
A Property of Many Tasks:
Large values of \(N\) can make things worse (the famous "Mythical Man-Month")
Task Dependencies Matter
Sequential Tasks:
Must be completed in order
Simultaneous/Parallel Tasks:
Can be completed at the same time
Personnel Capabilities Matter
An Observation:
Different members of the team have different knowledge, skills, and abilities
Implications:
Personnel may make it impossible to complete tasks in parallel
A "person" is not a homogeneous thing
An Example You Have Experience With
The Questions:
How long will it take me to complete a particular major?
The Givens:
The courses that must be completed
The time required to complete each course (e.g., a block, a semester, a year)
The number of times I will need to take each course
When the courses are offered
The prerequisites for each course
An Example You Have Experience With (cont.)
Another Question You Might Ask:
Which courses can't I afford to miss or fail?
Generalizing This Question:
Which tasks can/can't be delayed without delaying the completion of the project?
An Example
The Setting:
The design and implementation of a new computer game
Where we are in the Process:
The major tasks in the process have been identified at a low level of detail
The time required for each task has been estimated
The task dependencies have been identified
An Example (cont.)
The Time Required for Each Task
An Example (cont.)
The Task Dependencies
Solving the Problem
Some Observations:
This problem is not unique to software projects
There are many ways to solve it (and variants of it)
Techniques:
Critical Path Methods
Gantt Charts
Program Evaluation and Review Technique
There's Always More to Learn