Applied Software Project Management
Total Page:16
File Type:pdf, Size:1020Kb
Applied Software Project Management Andrew Stellman and Jennifer Greene Beijing • Cambridge • Farnham • Köln • Sebastopol • Taipei • Tokyo Applied Software Project Management Andrew Stellman and Jennifer Greene Copyright © 2006 O’Reilly Media, Inc. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (safari.oreilly.com). For more information, contact our corporate/institutional sales department: (800) 998-9938 or [email protected]. Publishing Editors: Mary T. O’Brien and Andrew Odewahn Production Editor: Jamie Peppard Cover Designer: MendeDesign Interior Designer: Marcia Friedman Printing History: November 2005: First Edition. The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. The Theory in Practice series designations, Applied Software Project Management, and related trade dress are trademarks of O’Reilly Media, Inc. Clear Case, ClearQuest, Rational Robot, Rational Rose, Rational Unified Process, Requisite Pro, and TestManager are registered trademarks of IBM. Microsoft Project, C#, and Visual SourceSafe are registered trademarks of Microsoft. Six Sigma is a registered trademark of Motorola, Inc. UNIX is a registered trademark of The Open Group. Perforce is a registered trademark of Perforce Software, Inc. Java is a registered trademark of Sun Microsystems. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher and authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. This book uses RepKover™, a durable and flexible lay-flat binding. ISBN: 978-0-596-00948-9 [M] [8/09] TABLE OF CONTENTS CHAPTER 0 PREFACE ix 1 INTRODUCTION 1 Tell Everyone the Truth All the Time 3 Trust Your Team 4 Review Everything, Test Everything 4 All Software Engineers Are Created Equal 5 Doing the Project Right Is Most Efficient 6 Part I: Tools and Techniques 7 Part II: Using Project Management Effectively 10 Part One TOOLS AND TECHNIQUES 12 SOFTWARE PROJECT PLANNING 15 Understand the Project Needs 16 Create the Project Plan 23 Diagnosing Project Planning Problems 30 3 ESTIMATION 33 Elements of a Successful Estimate 34 Wideband Delphi Estimation 39 Other Estimation Techniques 48 Diagnosing Estimation Problems 49 4 PROJECT SCHEDULES 53 Building the Project Schedule 54 Managing Multiple Projects 66 Use the Schedule to Manage Commitments 69 Diagnosing Scheduling Problems 70 5 REVIEWS 73 Inspections 74 Deskchecks 84 Walkthroughs 86 Code Reviews 87 Pair Programming 91 Use Inspections to Manage Commitments 92 Diagnosing Review Problems 93 6 SOFTWARE REQUIREMENTS 97 Requirements Elicitation 98 Use Cases 105 This is the Title of the Book, eMatter Edition Copyright © 2009 O’Reilly & Associates, Inc. All rights reserved. Software Requirements Specification 110 Change Control 120 Introduce Software Requirements Carefully 124 Diagnosing Software Requirements Problems 127 7 DESIGN AND PROGRAMMING 131 Review the Design 133 Version Control with Subversion 134 Refactoring 149 Unit Testing 156 Use Automation 165 Be Careful with Existing Projects 166 Diagnosing Design and Programming Problems 167 8 SOFTWARE TESTING 171 Test Plans and Test Cases 172 Test Execution 178 Defect Tracking and Triage 180 Test Environment and Performance Testing 181 Smoke Tests 183 Test Automation 184 Postmortem Reports 186 Using Software Testing Effectively 189 Diagnosing Software Testing Problems 196 Part Two USING PROJECT MANAGEMENT EFFECTIVELY 200 9 UNDERSTANDING CHANGE 203 Why Change Fails 204 How to Make Change Succeed 214 10 MANAGEMENT AND LEADERSHIP 231 Take Responsibility 232 Do Everything Out in the Open 236 Manage the Organization 238 Manage Your Team 243 11 MANAGING AN OUTSOURCED PROJECT 255 Prevent Major Sources of Project Failure 256 Management Issues in Outsourced Projects 260 Collaborate with the Vendor 268 12 PROCESS IMPROVEMENT 277 Life Without a Software Process 278 Software Process Improvement 282 Moving Forward 293 BIBLIOGRAPHY 295 INDEX 303 viii TABLE OF CONTENTS This is the Title of the Book, eMatter Edition Copyright © 2009 O’Reilly & Associates, Inc. All rights reserved. Chapter 1 C HAPTER 1 Preface SOFTWARE PROJECT MANAGEMENT is the art and science of planning and leading software projects. It requires knowledge of the entire software development lifecycle: defining the vision, planning the tasks, gathering the people who will do the work, estimating the effort, creating the schedule, overseeing the work, gathering the requirements, designing and pro- gramming the software, and testing the end product. Throughout the process, there are many team members who are responsible for these tasks; the project manager needs to have enough knowledge of their work to make sure the project is staying on track. To be effective, a project manager must have a wide range of expertise. In this book, we provide an introduction to all of these areas so that you can guide the rest of your team on their tasks. We help you run successful software projects, and we help you diagnose and fix the ones that have gone off track. Goals of the Book This is a practical book. This book describes the specific tools, techniques, and practices that a project manager needs to put in place in order to run a software project or fix an ail- ing one. A project manager can use this book to diagnose and fix the most serious prob- lems that plague software projects. It contains essential project management tools, techniques, and practices, which have been optimized to be as straightforward and easy to ix implement as possible. It also contains advice for avoiding the problems that a project manager will typically encounter when bringing these tools into an organization. By the time you have read this book, you should be able to: • Define the scope of your project • Estimate the effort required to do the work and schedule your project • Conduct thorough reviews of documents and code • Gather software requirements and create specifications • Effectively manage the design, programming, and testing of the software • Provide guidance if your project runs into quality problems • Manage an outsourced project • Make effective changes to the way projects are run in your organization We have been researching and implementing these tools, techniques, and practices throughout our combined careers. Each of them is the culmination of years of trial and error in many different organizations across multiple industries. Every one of these prac- tices is the solution to a specific, chronic problem. Many people opt to live with the prob- lem, because the solution seems too complicated. Our ultimate goal in writing this book is to help you build better software. Often, the original idea (before we optimized it) came from a book that we read to solve a specific problem that we encountered on a software project (just like you are doing right now!). References to some of the books that we found most helpful appear in the text in order to help you learn more. Who Should Read This Book Many software organizations have trouble delivering high-quality software on time. Most of them have talented team members; almost all of them realize that there is a problem. People in these organizations may have already read books about management, quality, and programming. What all of these people have in common is a need to change the way a software organization works. They may not always recognize the nature of the problem, or what is causing delays or bugs. What they do know is that something needs to change. We wrote this book for anyone in a software organization where there are chronic prob- lems producing software on schedule and without defects. The intended readers of this book include: • A project manager responsible for a software development project and/or team • A programmer, designer, business analyst, architect, tester, or other member of a soft- ware team looking to improve the product he is working on x PREFACE • A quality assurance manager or team member who is attempting to implement defect prevention, or is responsible for establishing or improving an organization’s software process • A consultant hired to improve project management practices, software process, or over- all software quality in an organization • A project manager who has been put in charge of a project that has been outsourced Comments and Questions Please address comments and questions concerning this book to the publisher: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 (800) 998-9938 (in the United States or Canada) (707) 829-0515 (international or local) (707) 829-0104 (fax) We have a web page for this book, where we list errata, examples, and any additional information. You can access this page at: http://www.oreilly.com/catalog/appliedprojectmgmt We also have a companion site featuring additional information for project managers, trainers, educators, and practitioners here: http://www.stellman-greene.com To comment or ask technical questions about this book, send email to: [email protected] For more information about our books, conferences, Resource Centers, and the O’Reilly Network, see our web site at: http://www.oreilly.com Safari Enabled When you see a Safari® Enabled icon on the cover of your favorite technol- ogy book, that means the book is available online through the O’Reilly Net- work Safari Bookshelf. Safari offers a solution that’s better than e-books. It’s a virtual library that lets you easily search thousands of top technology books, cut and paste code samples, download chap- ters, and find quick answers when you need the most accurate, current information.