Software project scheduling is an activity that distributes estimated effort across the planned project duration by allocating the effort to specific software engineering tasks. During early stages of project planning a macroscopic schedule is developed. This type of schedule identifies all major process framework activities and the product functions to which they are applied. As the project proceeds each entry on the macroscopic schedule is refined into a detailed schedule. Here specific software tasks are identified and scheduled.
Basic principles software project scheduling:
Compartmentalization: The project must be compartmentalized into a number of
manageable activities and tasks. To accomplish compartmentalization, both the product
and the process are decomposed.
Interdependency: The interdependency of each compartmentalized activity or task must
be determined. Some tasks must occur in sequence while others can occur in parallel.
Some activities cannot commence until the work product produced by another is
available. Other activities can occur independently.
Time allocation: Each task to be scheduled must be allocated some number of work
units (e.g., person-days of effort). In addition, each task must be assigned a start date and
a completion date that are a function of the interdependencies and whether work will be
conducted on a full-time or part-time basis.
Effort validation: Every project has a defined number of staff members. As time
allocation occurs, the project manager must ensure that no more than the allocated
number of people has been scheduled at any given time.
Defined responsibilities: Every task that is scheduled should be assigned to a specific
team member. Defined outcomes: Every task that is scheduled should have a defined
outcome.
Defined milestones: Every task or group of tasks should be associated with a project
milestone. Program evaluation and review technique (PERT) and critical path method
(CPM) are two project scheduling Methods that can be applied to software development.