Page 111 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 111

Unit 5: Software Project Planning



            5.6 Project Scheduling and Staffing                                                   Notes

            After establishing a goal on the effort front, we need to establish the goal for delivery schedule.
            With the effort estimate (in person-months), it may be tempting to pick any project duration
            based on convenience and then fix a suitable team size to ensure that the total effort matches the
            estimate. However, as is well known now, person and months are not fully interchangeable in
            a software project. Person and months can be interchanged arbitrarily only if all the tasks in the
            project can be done in parallel, and no communication is needed between people performing the
            tasks. This is not true for software projects—there are dependencies between tasks (e.g., testing
            can only be done after coding is done), and a person performing some task in a project needs to
            communicate with others performing other tasks. As Brooks has pointed out, “man and months
            are identical only for activities that require no communication among men, like sowing wheat
            or reaping cotton. This is not even approximately true of software.”
            However, for a project with some estimated effort, multiple schedules (or project duration) are
            indeed possible. For example, for a project whose effort estimate is 56 person-months, a total
            schedule of 8 months is possible with 7 people. A schedule of 7 months with 8 people is also
            possible, as is a schedule of approximately 9 months with 6 people. (But a schedule of 1 month
            with 56 people is not possible. Similarly, no one would execute the project in 28 months with 2
            people.) In other words, once the effort is fixed, there is some flexibility in setting the schedule
            by appropriately staffing the project, but this flexibility is not unlimited. Empirical data also
            suggests that no simple equation between effort and schedule fits well.

            The objective is to fix a reasonable schedule that can be achieved (if suitable number of resources is
            assigned). One method to determine the overall schedule is to determine it as a function of effort.
            Such function can be determined from data from completed projects using statistical techniques
            like fitting a regression curve through the scatter plot obtained by plotting the effort and schedule
            of past projects. This curve is generally nonlinear because the schedule does not grow linearly
            with effort. Many models follow this approach. The IBM Federal Systems Division found that
            the total duration, M, in calendar months can be estimated by M = 4.1E.36. In COCOMO, the
            equation for schedule for an organic type of software is M = 2.5E.38. As schedule is not a function
            solely of effort, the schedule determined in this manner is essentially a guideline.
            Another method for checking a schedule for medium-sized projects is the rule of thumb called
            the square root check. This check suggests that the proposed schedule can be around the square
            root  of  the total effort in person-months.  This  schedule  can  be  met if suitable resources  are
            assigned to the project. For example, if the effort estimate is 50 person-months, a schedule of
            about 7 to 8 months will be suitable. From this macro estimate of schedule, we can determine
            the schedule for the major milestones in the project. To determine the milestones, we must first
            understand the manpower ramp-up that usually takes place in a project. The number of people
            that can be gainfully utilized in a software project tends to follow the Rayleigh curve. That is,
            in the beginning and the end, few people are needed on the project; the peak team size (PTS)
            is needed somewhere near the middle of the project; and again fewer people are needed after
            that. This occurs because only a few people are needed and can be used in the initial phases
            of requirements analysis and design. The human resources requirement peaks during coding
            and unit testing, and during system testing and integration, again fewer people are required.
            Often, the staffing level is not changed continuously in a project and approximations of the
            Rayleigh curve are used: assigning a few people at the start, having the peak team during the
            coding phase, and then leaving a few people for integration and system testing. If we consider
            design and analysis, build, and test as three major phases, the manpower ramp-up in projects
            typically resembles the function shown in Figure 5.7. For ease of scheduling, particularly for


                                             LOVELY PROFESSIONAL UNIVERSITY                                   105
   106   107   108   109   110   111   112   113   114   115   116