Spread Knowledge

CS615 - Software Project Management - Lecture Handout 37

User Rating:  / 0
PoorBest 

Related Content: CS615 - VU Lectures, Handouts, PPT Slides, Assignments, Quizzes, Papers & Books of Software Project Management

Scheduling

Understanding Schedule

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.

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.

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.

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.

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.

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:

  1. 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.
  2. Use an incremental process model to create a schedule to deliver the required functional module of the software product.
  3. Present the schedule created on the basis of past projects to the client.
    Explain the projected delays and the reasons for the same.
  4. 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.

Scheduling Fundamentals

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.

Some of the guidelines for creating a software project schedule are discussed below:

  1. Classification
  2. Interdependence
  3. Time and effort allocation
  4. Validation criteria
  5. Defined responsibilities and outputs

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.

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.

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.

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.

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 can track each person's effort and the progress of each activity towards closure.