10 Keys to Successful Software Projects: An Executive Guide 2000-2006 Construx Software Builders, Inc. All Rights Reserved. www.construx.com Background
State of the Art vs. State of the Practice The gap between the best software engineering practice and the average practice is very wide perhaps wider than in any other engineering discipline. Fred Brooks Software Development Best Practices 3 Typical Project Outcomes 100% 90% Project Outcomes 1994-2004 Percentage 80% 70% 60% 50% 40% 30% 20% 10% 0% 1994 1996 1998 2000 2002 2004 Failed Late / Over Budget On Time / On Budget Source: Standish Group Chaos Report, 1994, 1996, 1998, 2000, 2002, 2004 Software Development Best Practices 4
Average Practice is Close to the Worst Practice Mean Mean % of Org s Expected Distribution Actual Distribution Effectiveness Software Development Best Practices 5 Productivity Varies Significantly 10:1 variations in productivity between different companies working in the same industries Productivity is a learned characteristic and can be changed Software Development Best Practices 6
Most Common Sources of Cancellations and Overruns 1. Ill-defined or changing requirements 2. Poor project planning/management 3. Uncontrolled quality problems 4. Unrealistic expectations/inaccurate estimates 5. Naive adoption of new technology Software Development Best Practices 7 10 Keys to Success
Key #1 Clear Vision Clear Vision Project teams work toward the goals you set for them Too many goals = no goals Good vision statement describes what to leave out prioritizes Product vision affects achievement of business goals Software Development Best Practices 10
Example: What kind of Rapid Development do you want? Speed oriented Schedule-risk oriented Visibility oriented Without clear vision you can end up with a project outcome completely counter to your goals Software Development Best Practices 11 Speed-Oriented Practices-- Better Best Case... 6 Months: Nominal Schedule Average Project Rapid Project Software Development Best Practices 12
Worse Worst Case 6 Months: Nominal Schedule Average Project Rapid Project Risk of Overrun Software Development Best Practices 13 Sometimes it s Justified (sometimes not) 6 Months: Nominal Schedule Average Project Rapid Project Risk of Overrun Competitor Software will release needs to be next version ready of their for the holiday productsales season Software Development Best Practices 14
Key #2 Stable, Complete, Written Requirements Requirements Requirements change is the most common software project risk Comprehensive, 100% stable requirements are usually not possible, but... Most requirements changes arise from requirements that were incompletely defined in the first place, not changing markets or other similar reasons Software Development Best Practices 16
Techniques for Defining Stable Requirements Requirements workshop User interface prototyping User interview Use cases User manual as spec Usability studies Incremental delivery Requirements reviews/inspections Software Development Best Practices 17 Key #3 Detailed User Interface Prototypes
User Interface Prototypes Addresses the most common project risk changing requirements Involves users with a hot medium Correlated with lower costs, shorter schedules, and higher user satisfaction Significant skill required to develop prototypes successfully Software Development Best Practices 19 Key #4 Effective Project Management
Project Management Poor planning/management is the second most common project risk Project planning/management is a high leverage area Some people don t appreciate the leverage of project management they ve never seen good project management! Software Development Best Practices 21 Project Manager Responsibilities Where do most project managers come from? What are they trained to do? Good software management require significant software-specific expertise Scope estimation Cost, effort & schedule computation Lifecycle selection QA planning Technical staffing Project tracking Risk management Data collection Software Development Best Practices 22
Key #5 Accurate Estimates Need for Accurate Estimates Unrealistic/unjustified expectations are a major cause of project problems State of the art is dramatically better than the state of the practice For example, the average project overruns its planned schedule by more than 100% (and many projects are much worse) Software Development Best Practices 24
Typical Estimation Effectiveness Over/Under Percentage in Effort Estimates 20% 0% -145% Without Historical Data Variance between -145% to +20% (Mostly Level 1 and 2) From 120 Projects in Boeing Information Systems Software Development Best Practices 25 Improved Estimation Over/Under Percentage in Effort Estimates 20% 0% -145% Without Historical Data Variance between -145% to +20% (Mostly Level 1 and 2) With Historical Data Variance between +20% to -20% (Level 3) From 120 Projects in Boeing Information Systems Software Development Best Practices 26
Improved Estimation 600% Project Performance Compared to Estimate Actual Results as a Percentage of Estimated Results 500% 400% 300% 200% 100% 0% 0 1 2 3 4 SW-CMM Level From a set of U.S. Air Force projects Software Development Best Practices 27 Effect of Estimation Accuracy Non-linear impact due to planning errors, upstream defects, high-risk practices Underestimation Cost Effort Schedule Linear impact due to Parkinson s Law Overestimation < 100% 100% >100% Target as a Percentage of Nominal Estimate Software Development Best Practices 28
Accurate Estimation Estimation is a specialized technical skill Treat estimation as a mini-project More on this topic momentarily Software Development Best Practices 29 Key #6 Two-Phase Budgeting
Cone of Uncertainty and Estimate Refinement Project Scope (effort, cost, or features) 4x 2x 1.5x 1.25x 1.0x 0.8x 0.67x 0.5x 0.25x Time Software Development Best Practices 31 Good and Bad Budgeting Project scope (effort, cost, features) Most estimates and budgets are created here 4x 2x 1.5x 1.25x 1.0x 0.8x 0.67x Reliable budgets aren t possible until here 0.5x 0.25x Time Software Development Best Practices 32
Two-Phase Budgeting Project scope (effort, cost, features) 4x Large, wholeproject Budget 2x Small exploratory 1.5x budget 1.25x 1.0x 0.8x 0.67x 0.5x 0.25x Time Software Development Best Practices 33 Benefits of 2-Phase Budgeting Delays commitment until time when a commitment can be meaningful Forces activities that should occur upstream actually to occur upstream Requirements, technical planning, quality planning, etc. Helps set realistic expectations for all project stakeholders Improves coordination with non-software groups Improves execution by putting plans on more informed basis Software Development Best Practices 34
Key #7 A Focus on Quality General Principle Defect creation is a function of effort Defect detection is a function of QA activities Goal is to minimize gap between defect insertion and defect detection/correction Cumulative Defects Risk of Extra Cost Typical Project Risk of Extra Cost Well-Run Project Time Defect creation Defect removal Time Extra Development Capacity Software Development Best Practices 36
Defect Cost Increase (DCI) Activity in which a Defect Is Introduced Requirements Average Cost to Correct Architecture Construction Requirements Architecture Construction System test Post-Release Activity in Which a Defect Is Detected Software Development Best Practices 37 One Solution: Fix Defects Earlier! Activity in which a Defect Is Introduced Requirements Fix Here Don t Wait to Fix Here Average Cost to Correct Architecture Construction Requirements Architecture Construction System test Post-Release Activity in Which a Defect Is Detected Software Development Best Practices 38
Another Solution: Reduce Defect Cost Increase! Activity in which a Defect Is Introduced Requirements Average Cost to Correct Architecture Construction Requirements Architecture Construction System test Post-Release Activity in Which a Defect Is Detected Software Development Best Practices 39 Where Costs Come From: Lifecycle Cost Profile Typical Project (Pathological Project) Relative Effort Advanced Project (Healthy Project) Requirements Architecture Detailed Design Construction Testing and Debugging Software Development Best Practices 40
Where Costs Come From: Lifecycle Cost Profile (cont.) Typical Project (Pathological Project) Relative Effort Advanced Project (Healthy Project) Unplanned rework Process overhead Requirements Architecture Detailed Design Construction Testing and Debugging Software Development Best Practices 41 Why Focus on Quality? For most projects, unplanned defect correction work is the largest cost driver (40-80% of total) Can focus on quality for sake of economics (as above) Can focus on quality for sake of quality (not needed nearly as often) Quality must be planned into the project; it can t just be tacked onto the end Software Development Best Practices 42
Key #8 Technology Expertise Technology Expertise Many projects suffer because of poor adoption of new technology New technology = high risk Golf analogy Technology as golf clubs Best practices as technique Expertise in technology matters; software engineering technique matters much more Software Development Best Practices 44
Key #9 Active Risk Management Software is Risky Business KPMG Study: 55% of runaway projects did no risk management 38% did some, but half of those didn t use their risk findings after the project was underway 7% didn t know whether they did risk management Total: About 80% of runaway projects did no meaningful risk management Software Development Best Practices 46
Role of Risk Management About as many projects fail as are delivered on time More than 50% of projects show their problems during initial development About 25% show their problems during initial planning Active risk management keeps small problems from turning into big, projectkilling problems Software Development Best Practices 47 Relationship to Business Risk Taking Perception is that high-energy companies take risks Reality is that most companies are beset by risks from all sides they aren t choosing which risks they take Key to success: Manage non-strategic risks so that you can take strategic risks Software Development Best Practices 48
Key #10 Remember, Software Is Created By Humans Cocomo II s View of Software Project Influences Product Complexity Analyst Capability (general) Programmer Capability (general) Time Constraint Personnel Continuity Multi-site Development Required Software Reliability Documentation Match to Lifecycle Needs Applications Experience Use of Software Tools Platform Volatility Storage Constraint 1.76 1.63 1.59 1.56 1.54 1.52 1.51 1.50 1.49 1.46 2.00 2.38 Process Maturity Language and Tools Experience Database Size Platform Experience Architecture and Risk Resolution Precedentedness Developed for Reuse Team Cohesion Development Flexibility 1.43 1.43 1.42 1.40 1.38 1.33 1.31 1.29 1.26 Software Development Best Practices 50
Importance of Human Influences Human Influences make a 14x difference in total project effort & cost, according to Cocomo II Capability factors alone make a 3.5x difference Experience factors alone make a 3.0x difference Consensus of studies is that similarlyexperienced developers vary by about 20x in productivity and quality of work Software Development Best Practices 51 Where do Variations Exist? Researchers have found 20:1 variations in: Coding speed Debugging speed Defect-finding speed Percentage of defects found Bad-fix injection rate Design quality Amount of code generated from a design Teamwork Etc. Software Development Best Practices 52
Some Implications Success of Google, Amazon, Microsoft, etc. Matching workers and workstyles Value of retention programs Importance of staff development Software Development Best Practices 53 Conclusion
Project Success Success = Planning * Execution Assign values between 0%-100% for Planning and Execution. Multiply to determine your chance of success. Software Development Best Practices 55 Contact Info Steve McConnell Construx Software 10900 NE 8 th Street, Suite 1350 Bellevue, WA 98005 (425) 636-0100 stevemcc@construx.com Software Development Best Practices 56
Training Consulting Tools sales@construx.com www.construx.com +1 (425) 636-0100