Page 121 - DCAP304_DCAP515_SOFTWARE_PROJECT_MANAGEMENT
P. 121

Unit 6: Effort Estimation




              Discuss the First Boot                                                           Notes
              Create the User Account

          Introduction

          Among the important practical problems in software engineering is software estimation – the
          estimation of development schedules and the assessment of productivity and quality. Is it possible
          to apply mathematical and scientific principles to software estimation, so that development
          schedules, productivity, and quality might be objectively ascertained or estimated rather than
          being a matter of opinion?
          The debate over this question is familiar. In the case of development schedules, for example,
          many programmers find it self evident that accurate and objective estimates are not possible.
          One reader of an early version of this paper commented, “Software practitioners know about
          poor predictability from empirical evidence. I don’t need to prove it...”
          On the other hand, there are a large number of design methods, development processes, and
          programming methodologies that claim or hint at objective estimation of development schedules,
          project complexity, and programmer productivity.

          6.1 Effort Estimation

          Many People Have Referred to Estimation as a “BLACK ART.” This makes some intuitive sense:
          at first glance, it might seem that estimation is a highly subjective process. One person might
          take a day to do a task that might only require a few hours of another’s time. As a result, when
          several people are asked to estimate how long it might take to perform a task, they will often
          give widely differing answers. But when the work is actually performed, it takes a real amount
          of time; any estimate that did not come close to that actual time is inaccurate.
          To someone who has never estimated a project in a structured way, estimation seems little more
          than attempting to predict the future. This view is reinforced when off-the-cuff estimates are
          inaccurate and projects come in late. But a good formal estimation process, one that allows the
          project team to reach a consensus on the estimates, can improve the accuracy of those estimates,
          making it much more likely that projects will come in on time.




             Notes  A project manager can help the team to create successful estimates for any software
             project by using sound techniques and understanding what makes estimates more accurate.

          6.1.1 Elements of a Successful Estimate

          A sound estimate starts with a Work Breakdown Structure (WBS). A WBS is a list of tasks that, if
          completed, will produce the final product. The way the work is broken down dictates how it will
          be done. There are many ways to decompose a project into tasks. The project can be broken
          down by feature, by project phase (requirements tasks, design tasks, programming tasks, QA
          tasks, etc.), or by some combination of the two. Ideally, the WBS should reflect the way previous
          projects have been developed.

          A useful rule of thumb is that any project can be broken down into between 10 and 20 tasks. For
          large projects (for example, a space shuttle), those tasks will be very large (“Test the guidance
          system”); for small projects (like writing a simple calculator  program), the  tasks are  small
          (“Build the arithmetic object that adds, multiplies, or divides two numbers”). The team must




                                           LOVELY PROFESSIONAL UNIVERSITY                                   115
   116   117   118   119   120   121   122   123   124   125   126