Software project scheduling is an action 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 process framework activities and the product functions to which they are applied. Scheduling Principles 1 Compartmentalization The product and process must be decomposed into a manageable number of activities and tasks 2 Interdependency Tasks that can be completed in parallel must be separated from those that must completed serially 3 Time allocation Every task has start and completion dates that take the task interdependencies into account 4 Effort validation Project manager must ensure that on any given day there are enough staff members assigned to completed the tasks within the time estimated in the project plan 5 Defined Responsibilities Every scheduled task needs to be assigned to a specific team member 6 Defined outcomes Every task in the schedule needs to have a defined outcome (usually a work product or deliverable) 7 Defined milestones A milestone is accomplished when one or more work products from an engineering task have passed quality review Gantt chart A Gantt chart, commonly used in project management, is one of the most popular and useful ways of showing activities (tasks or events) displayed against time On the left of the chart is a list of the activities and along the top is a suitable time scale (Figure: Gantt chart) Each activity is represented by a bar; the position and length of the bar reflects the start date, duration and end date of the activity. This allows you to see at a glance: What the various activities are When each activity begins and ends How long each activity is scheduled to last Where activities overlap with other activities, and by how much The start and end date of the whole project