Applied Software Project Management
Chapter 1. Introduction
Section 1.1. Tell Everyone the Truth All the Time
Section 1.2. Trust Your Team
Section 1.3. Review Everything, Test Everything
Section 1.4. All Software Engineers Are Created Equal
Section 1.5. Doing the Project Right Is Most Efficient
Section 1.6. Part I: Tools and Techniques
Section 1.7. Part II: Using Project Management Effectively
Part I: Tools and Techniques
Chapter 2. Software Project Planning
Section 2.1. Understand the Project Needs
Section 2.2. Create the Project Plan
Section 2.3. Diagnosing Project Planning Problems
Chapter 3. Estimation
Section 3.1. Elements of a Successful Estimate
Section 3.2. Wideband Delphi Estimation
Section 3.3. Other Estimation Techniques
Section 3.4. Diagnosing Estimation Problems
Chapter 4. Project Schedules
Section 4.1. Building the Project Schedule
Section 4.2. Managing Multiple Projects
Section 4.3. Use the Schedule to Manage Commitments
Section 4.4. Diagnosing Scheduling Problems
Chapter 5. Reviews
Section 5.1. Inspections
Section 5.2. Deskchecks
Section 5.3. Walkthroughs
Section 5.4. Code Reviews
Section 5.5. Pair Programming
Section 5.6. Use Inspections to Manage Commitments
Section 5.7. Diagnosing Review Problems
Chapter 6. Software Requirements
Section 6.1. Requirements Elicitation
Section 6.2. Use Cases
Section 6.3. Software Requirements Specification
Section 6.4. Change Control
Section 6.5. Introduce Software Requirements Carefully
Section 6.6. Diagnosing Software Requirements Problems
Chapter 7. Design and Programming
Section 7.1. Review the Design
Section 7.2. Version Control with Subversion
Section 7.3. Refactoring
Section 7.4. Unit Testing
Section 7.5. Use Automation
Section 7.6. Be Careful with Existing Projects
Section 7.7. Diagnosing Design and Programming Problems
Chapter 8. Software Testing
Section 8.1. Test Plans and Test Cases
Section 8.2. Test Execution
Section 8.3. Defect Tracking and Triage
Section 8.4. Test Environment and Performance Testing
Section 8.5. Smoke Tests
Section 8.6. Test Automation
Section 8.7. Postmortem Reports
Section 8.8. Using Software Testing Effectively
Section 8.9. Diagnosing Software Testing Problems
Part II: Using Project Management Effectively
Chapter 9. Understanding Change
Section 9.1. Why Change Fails
Section 9.2. How to Make Change Succeed
Chapter 10. Management and Leadership
Section 10.1. Take Responsibility
Section 10.2. Do Everything Out in the Open
Section 10.3. Manage the Organization
Section 10.4. Manage Your Team
Chapter 11. Managing an Outsourced Project
Section 11.1. Prevent Major Sources of Project Failure
Section 11.2. Management Issues in Outsourced Projects
Section 11.3. Collaborate with the Vendor
Chapter 12. Process Improvement
Section 12.1. Life Without a Software Process
Section 12.2. Software Process Improvement
Section 12.3. Moving Forward
Bibliography
A project manager can use this book to diagnose and fix the most serious
problems that plague software projects. It contains essential project management
tools, techniques, and practices, which have been optimized to be as straightforward
and easy to 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 practices is the solution to a specific, chronic
problem. Many people opt to live with the problem, 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.