The Practical, Start-to-Finish Guide to Planning and Leading Iterative Software Projects
Iterative processes have gained widespread acceptance because they help software developers reduce risk and cost, manage change, improve productivity, and deliver more effective, timely solutions. But conventional project management techniques don’t work well in iterative projects, and newer iterative management techniques have been poorly documented. Managing Iterative Software Development Projects is the solution: a relentlessly practical guide to planning, organizing, estimating, staffing, and managing any iterative project, from start to finish.
Leading iterative development experts Kurt Bittner and Ian Spence introduce a proven, scalable approach that improves both agility and control at the same time, satisfying the needs of developers, managers, and the business alike. Their techniques are easy to understand, and easy to use with any iterative methodology, from Rational Unified Process to Extreme Programming to the Microsoft Solutions Framework.
Whatever your role–team leader, program manager, project manager, developer, sponsor, or user representative–this book will help you
- Understand the key drivers of success in iterative projects
- Leverage “time boxing” to define project lifecycles and measure results
- Use Unified Process phases to facilitate controlled iterative development
- Master core concepts of iterative project management, including layering and evolution
- Create project roadmaps, including release plans
- Discover key patterns of risk management, estimation, organization, and iteration planning
- Understand what must be controlled centrally, and what you can safely delegate
- Transition smoothly to iterative processes
- Scale iterative project management from the smallest to the largest projects
- Align software investments with the needs of the business
Whether you are interested in software development using RUP, OpenUP, or other agile processes, this book will help you reduce the anxiety and cost associated with software improvement by providing an easy, non-intrusive path toward improved results–without overwhelming you and your team.
The Practical, Start-to-Finish Guide to Planning and Leading Iterative Software Projects
Iterative processes have gained widespread acceptance because they help software developers reduce risk and cost, manage change, improve productivity, and deliver more effective, timely solutions. But conventional project management techniques don’t work well in iterative projects, and newer iterative management techniques have been poorly documented. Managing Iterative Software Development Projects is the solution: a relentlessly practical guide to planning, organizing, estimating, staffing, and managing any iterative project, from start to finish.
Leading iterative development experts Kurt Bittner and Ian Spence introduce a proven, scalable approach that improves both agility and control at the same time, satisfying the needs of developers, managers, and the business alike. Their techniques are easy to understand, and easy to use with any iterative methodology, from Rational Unified Process to Extreme Programming to the Microsoft Solutions Framework.
Whatever your role–team leader, program manager, project manager, developer, sponsor, or user representative–this book will help you
- Understand the key drivers of success in iterative projects
- Leverage “time boxing” to define project lifecycles and measure results
- Use Unified Process phases to facilitate controlled iterative development
- Master core concepts of iterative project management, including layering and evolution
- Create project roadmaps, including release plans
- Discover key patterns of risk management, estimation, organization, and iteration planning
- Understand what must be controlled centrally, and what you can safely delegate
- Transition smoothly to iterative processes
- Scale iterative project management from the smallest to the largest projects
- Align software investments with the needs of the business
Whether you are interested in software development using RUP, OpenUP, or other agile processes, this book will help you reduce the anxiety and cost associated with software improvement by providing an easy, non-intrusive path toward improved results–without overwhelming you and your team.


eBook
Available on Compatible NOOK devices, the free NOOK App and in My Digital Library.
Related collections and offers
Overview
The Practical, Start-to-Finish Guide to Planning and Leading Iterative Software Projects
Iterative processes have gained widespread acceptance because they help software developers reduce risk and cost, manage change, improve productivity, and deliver more effective, timely solutions. But conventional project management techniques don’t work well in iterative projects, and newer iterative management techniques have been poorly documented. Managing Iterative Software Development Projects is the solution: a relentlessly practical guide to planning, organizing, estimating, staffing, and managing any iterative project, from start to finish.
Leading iterative development experts Kurt Bittner and Ian Spence introduce a proven, scalable approach that improves both agility and control at the same time, satisfying the needs of developers, managers, and the business alike. Their techniques are easy to understand, and easy to use with any iterative methodology, from Rational Unified Process to Extreme Programming to the Microsoft Solutions Framework.
Whatever your role–team leader, program manager, project manager, developer, sponsor, or user representative–this book will help you
- Understand the key drivers of success in iterative projects
- Leverage “time boxing” to define project lifecycles and measure results
- Use Unified Process phases to facilitate controlled iterative development
- Master core concepts of iterative project management, including layering and evolution
- Create project roadmaps, including release plans
- Discover key patterns of risk management, estimation, organization, and iteration planning
- Understand what must be controlled centrally, and what you can safely delegate
- Transition smoothly to iterative processes
- Scale iterative project management from the smallest to the largest projects
- Align software investments with the needs of the business
Whether you are interested in software development using RUP, OpenUP, or other agile processes, this book will help you reduce the anxiety and cost associated with software improvement by providing an easy, non-intrusive path toward improved results–without overwhelming you and your team.
Product Details
ISBN-13: | 9780132702560 |
---|---|
Publisher: | Pearson Education |
Publication date: | 06/27/2006 |
Series: | Addison-Wesley Object Technology Series |
Sold by: | Barnes & Noble |
Format: | eBook |
Pages: | 672 |
File size: | 9 MB |
Age Range: | 18 Years |
About the Author
Kurt Bittner works for IBM on software development solutions strategy. In a career spanning 24 years, he has successfully applied an iterative approach to software development in a number of industries and problem domains. He was a member of the original team that developed the IBM Rational Unified Process and is a co-author with Ian Spence of Use Case Modeling, published by Addison-Wesley in 2002.
Ian Spence is a chief scientist and principle consultant at Ivar Jacobson Consulting, specializing in the adoption of the Unified Process and the iterative, use-case driven approach that it recommends. He has more than 20 years of experience in the software industry, including more than 10 years of experience in managing and participating in iterative projects. He is currently involved in the development of the next generation of lightweight software development processes and is a co-author with Kurt Bittner of Use Case Modeling, published by Addison-Wesley in 2002.
Read an Excerpt
PrefacePreface
"No plan survives contact with the enemy."
Field Marshall Helmuth von Moltke, 1800-18911
If we could plan perfectly, if nothing out of the ordinary ever occurred, if things always went as planned, there would be no need for iterative development. Iterative development is founded on the recognition that we need an approach that enables us to make progress in the face of change, or perhaps in spite of change. Iterative development is basically a dynamic planning and management approach that incorporates, even seeks out, new information to manage risks and deliver incremental value continuously throughout the project.
Iterative development is not particularly new. It has been around for a long time, and it has probably evolved independently a number of times. Because it tends to focus on situational responses, it has not tended to be well documented, and for this reason it has appeared to be ad hoc. Our goal with this book is to change thatto provide a systematic introduction to managing iterative development that you can apply to your own projects.
At the core of the iterative approach is the explicit management of risk as the guiding principle behind the project management approach. The project is divided up into a series of iterations, each of which is directed at mitigating a set of risks by implementing scenarios that will force the confrontation and mastery of the risks. Our goal is to take these concepts and breathe life into them by bringing them down to ground level. We aim to present a simple, straightforward, and practical approach to organizing,estimating, staffing, and managing the project, but one that can be applied to very small projects and yet be scaled up to very large programs. In doing this we aim to promote a pragmatic approach that attacks the problem of obtaining results in a predictable, repeatable, non-chaotic way.
Our experience is based on helping many companies adopt iterative development using the IBM Rational Unified Process (RUP),2 but the techniques presented here are not only applicable to Unified Process3 projects; they represent a general approach to any iterative software development effort. They are equally useful when managing an iterative project using Extreme Programming,4 Microsoft Solution Framework for Agile Software Development,5 or any other agile or iterative software development process.
This book is focused on making the techniques of managing iterative development understandable and accessible to anyone with a basic background in managing software projects. It strives to provide you with the practical guidance you need to start managing your iterative and incremental projects in a controlled, agile, and disciplined fashion.The Challenge of Managing Software Development Projects
Managing software development projects is challenging: Responding to a rapidly changing business and technological environment means that teams are always pushing the limits of the possible. This pressure to deliver results is compounded by the fact that their are never enough of the right people with the right skills; the technology is evolving too fast. Yet teams must respond and succeed, for the stakes are very high. Almost everything done in the business world today requires software, so the success of the business often rests on the success of some team developing a solution that consists of a lot of software.
Software development projects must be able to respond with speed and agility to rapid and incessant change in both the business requirements and the implementation technology. Agility in software development is essential for businesses to succeed today and, more importantly, in the future.
The critical importance of software in supporting the day-to-day operations of businesses and providing competitive advantage is leading to another emerging trend: governance. In short, because business success rests on software success, business executives need to understand how their investments in information technology and software development are paying off. They demand visibility and accountability; the stakes are simply too high for them not to understand project status and trajectory. In addition, in many environments, the criticality of software to safety or business processes means that there is a need for auditabilitya need to prove that what was done was authorized and approved. Governance of software development is also here to stay.
Finally, software development is a highly creative and collaborative endeavor in which success requires a fine degree of coordination between many people from many different disciplines, often working across different geographies and time zones and sometimes across cultural borders. The levels of invention and innovation that are fundamental to good software development mean development is not a mechanical process that can be fully planned at the start and then monitored during the execution. They also cause software development projects to exhibit frustrating diseconomies of scalethat is, a large project costs much more per line of code than a small project6illustrating that the industry has still not learned how to manage creativity, novelty, and complexity very well.
Iterative development provides a solution to these three challengesit provides an approach that is agile and responsive to the needs of the business while still providing the necessary controls and oversight needed to govern the development process and while fostering the creativity and collaboration needed to solve complex business problems. Learning the Art of Managing Software Development
In every endeavor, good management matters. More than thirty years ago Frederick Brooks wrote something that still rings true today:
In many ways, managing a large computer programming project is like managing any other large undertakingin more ways than most programmers believe. But in many other ways it is differentin more ways than most professional managers expect.7
This quote succinctly highlights the two major traps that people fall into when considering the management of software development projects:
- Developers may fail to recognize the value added by professional management practices on a software project, seeming to feel that the role of the manager on a project is similar to the role of government in Henry David Thoreau's work On the Duty of Civil Disobedience: "that government is best which governs least."
- Managers may fail to understand that technical details matter and that they cannot be completely delegated; no project can be managed without really understanding the work being done.
To be successful, the software project manager needs to have a firm foundation in traditional management practices but also needs to know what makes developing software different from other types of projects. To manage the project, the manager needs to understand the work well enough to be able to tell whether the work is on track. At the same time, managers who understand only the technical work and not how to motivate and lead teams are also lostthey never get their teams working as a cohesive unit.
Managing software development is like managing anything else, only more so. The time pressures and resource constraints tend to be so amplified and the number of alternatives so dizzying that the manager's abilities are sorely tested. We have found that an iterative development approach is key to solving many of these problems. We have also observed that the difference between success and failure of a software development effort rests largely on the skills of the manager of the project.8 This is not to discount the value of the rest of the team or the approach they follow; it merely underscores that few project teams can be successful without good management.Who Should Read This Book
This book is principally for the people responsible for the successful delivery of projects that have a significant amount of software as part of their solution. These people have a variety of job titles and responsibilities, ranging from a team leader with informal day-to-day leadership responsibility for a small software development team, to a project manager managing the production of a major release of a software product, to a program manager overseeing many collaborating projects, each with its own project manager. In short, we target the people who must make decisions about what to do, when to do it, and why.
This book will provide benefits to all members of the project's leadership team and anyone else who is concerned with the overall business success of the project. It is especially relevant for those project managers faced with the challenge of managing an iterative development project, whether they are novice or experienced project managers:
- If you are a novice project manager, the pragmatic approach presented will provide you with the guidance that you need to successfully manage your project in a controlled iterative fashion and will give you a framework with which you can acquire the skills you do not already have.
- If you are an experienced project manager faced with your first iterative software development project, this book will help you to continue to exploit your existing management experience and best practices while transitioning to a more agile, iterative, and incremental software development approach. If you have tried iterative approaches but remain unconvinced of their benefit, we hope this book will fill in the missing information in a credible way, making you a believer in the approach.
- If you are the leader of a team that is working iteratively, this book will provide you with an approach to leading your team that will enable it to support and interact more effectively with the broader project management team and project board.
- If you are a project sponsor, program manager, or user representative, this book will help you to understand how to interact with, support, and exploit the benefits of the iterative development of the software projects that you commission.
- If you are the leader of a discipline team (such as requirements, architecture, and so on), this book will provide an understanding of the role the project management team plays in establishing and sustaining an iterative development environment within which your team can excel.
In this book, we bridge the gap between the two most common, and often adversarial, positions adopted with respect to the management of iterative development projectsthe informal approach traditionally promoted by developer-centric methodologies and the more formal approach traditionally promoted by the project management communityby describing a single, layered, easy to use, agile, adaptive, and scalable approach.
We also broaden the scope of the discussion to include the sponsoring business itself, something that is often overlooked to the detriment of the result the project provides to the business. This is the area where software development projects ultimately compete with other investments for funding, a perspective to which our iterative projects must be aligned.
By adopting this holistic, management-aware approach we hope to bring together groups of people who often are not, unfortunately, aligned to achieve project success.How This Book Is Organized
This book is intended to provide practical guidance on managing iterative projects and programs. The book is divided into two parts.
In Part I, "The Principles of Iterative Project Management," we present the basic principles of managing iterative software development projects. This part of the book focuses on the principles and best practices that underlie the successful management of iterative and incremental software development projects. If you are new to iterative development, Part I will give you a good foundation in the basics of iterative project management, although there are also some new insights for those already familiar with iterative approaches.
In Chapter 1, "What Is Iterative Development?" we explore what it means to develop software in an iterative and incremental fashion by examining how different project roles experience iterative development (for example, the developer, the customer, and the project manager).
In Chapter 2, "How Do Iterative Projects Function?" we discuss how an iterative and incremental project functions by examining what makes an iterative project successful and the key project characteristics that enable this success.
In Chapter 3, "Controlling Iterative Projects," we discuss how iterative projects are controlled. This chapter introduces the concepts of the time box, a standard project lifecycle for iterative development projects, and the objective measurement of results. It also introduces the phases of the Unified Process and explains how they facilitate controlled iterative development regardless of the iterative development method followed.
In Chapter 4, "Are You Ready for Iterative Project Management?" we discuss what you need to have in place before embarking on an iterative development project. This includes discussing some of the adjustments that often have to be made to team structures and personal attitudes to provide an environment conducive to and supportive of the adoption of iterative and incremental project management practices.
In Part II, "Planning and Managing an Iterative Project," we discuss how to plan, manage, and assess an iterative project, including how to plan projects and iterations, assess results, and adapt plans. We conclude by presenting how to adapt the approach to very small projects and very large projects and programs, and how to introduce iterative development to a new project team.
In Chapter 5, "A Layered Approach to Planning and Managing Iterative Projects," we examine the layering of the project and plans, which is essential to enable effective, controlled, iterative, and incremental development and to provide a scalable management solution. We also introduce the concept of an evolution as the mechanism for the iterative development of a major release of a software product. This chapter provides the framework for the more specific planning and assessment chapters that follow.
In Chapter 6, "Overall Project Planning," we describe how to create an overall roadmap for an iterative project. We examine techniques and mechanisms for planning the entire project lifecycle and the set of releases to be produced. We introduce some simple principles for lifecycle planning and use these to illustrate the process involved in creating an overall project plan.
In Chapter 7, "Evolution and Phase Planning," we present the principles for planning and managing an individual evolution and its phases. We examine the patterns found within an evolution and how to adapt these based on the forces at work on the project. This includes patterns of managing risks, estimating, and organizing the work into iterations.
In Chapter 8, "Iteration Planning," we present the principles of planning and managing an iteration within a phase. We examine patterns for managing an iteration and how to adapt these based on the forces at work on the project.
In Chapter 9, "Iteration, Phase, and Project Assessments," we examine how the assessment process works across the layers of an iterative project, looking in particular at the role of the iteration and phase assessments and how these affect the adaptive planning of the project and enable the entire project to be effectively controlled.
In Chapter 10, "A Scalable Approach to Managing Iterative Projects," we examine how to apply the principles and patterns presented in the previous chapters to various project sizes, concluding our "how to" guide for the planning and management of iterative projects. This includes guidance on how to scale the process down for the management of small and very small projects and up for the management of large projects and programs. Chapter 10 will be of special interest to those engaged in program management or those who find themselves working on projects that contribute to a larger program.
In Chapter 11, "Getting Started with Iterative Project Management," we conclude the book by providing advice on how to transition to an iterative software development process and how to introduce iterative development practices iteratively. This material will be useful to anyone embarking on their first iterative project or trying to introduce iterative management techniques into either projects or organizations.
In addition, we provide several comprehensive appendices.
- Appendix A, "A Brief Introduction to Use-Case Driven Development," provides a brief summary of the use-case driven development approach that is used to provide a concrete framework for the examples in Appendix C and throughout the book.
- Appendix B, "Outlines, Templates, and Checklists," provides detailed, reusable versions of the outlines, templates, and checklists referenced and presented throughout the body of the book.
- Appendix C, "Examples," provides a more detailed presentation of the example plans excerpted throughout the body of the book.
1
Von Moltke wrote a number of works on military theory. His main thesis was that military strategy consists of a system of alternatives because only the start of a military operation could be planned. As a result, he considered the main task of military leaders to consist of understanding all possible outcomes.
2 See http://www-306.ibm.com/software/rational/.
3 Other variants of the Unified Process include the Essential Unified Process (see http://www.ivarjacobson.com) and the Agile Unified Process (see http://www.ambysoft.com/unifiedprocess/).
4 See http://www.extremeprogramming.org or http://www.xprogramming.com.
5 See http://www.microsoft.com.
6 This is discussed in depth by Walker Royce in Software Project Management: A Unified Framework (Addison-Wesley, 1998).
7 Frederick P. Brooks, The Mythical Man Month: Essays on Software Engineering, Twentieth Anniversary Edition (Reading, MA: Addison-Wesley, 1995).
8 An observation backed up by the Standish Group's CHAOS Report; see http://www.standishgroup.com/.
We will return to the Standish CHAOS Report and the topic of project success in Chapter 2, "How Do Iterative Projects Function?"
© Copyright Pearson Education. All rights reserved.
Table of Contents
Foreword xix
Preface xxiii
Acknowledgments xxxiii
PART I THE PRINCIPLES OF ITERATIVE PROJECT MANAGEMENT 1
Chapter 1 What Is Iterative Development? 3
Chapter 2 How Do Iterative Projects Function? 43
Chapter 3 Controlling Iterative Projects 77
Chapter 4 Are You Ready for Iterative Project Management? 123
PART II PLANNING AND MANAGING AN ITERATIVE PROJECT 157
Chapter 5 A Layered Approach to Planning and Managing Iterative Projects 159
Chapter 6 Overall Project Planning 203
Chapter 7 Evolution and Phase Planning 243
Chapter 8 Iteration Planning 291
Chapter 9 Iteration, Phase, and Project Assessments 339
Chapter 10 A Scalable Approach to Managing Iterative Projects 393
Chapter 11 Getting Started with Iterative Project Management 429
PART III APPENDICES 455
Appendix A A Brief Introduction to Use-Case Driven Development 457
Appendix B Outlines, Templates, and Checklists 481
Appendix C Examples 541
Index 601
Preface
Preface
"No plan survives contact with the enemy."
Field Marshall Helmuth von Moltke, 1800-1891 1
If we could plan perfectly, if nothing out of the ordinary ever occurred, if things always went as planned, there would be no need for iterative development. Iterative development is founded on the recognition that we need an approach that enables us to make progress in the face of change, or perhaps in spite of change. Iterative development is basically a dynamic planning and management approach that incorporates, even seeks out, new information to manage risks and deliver incremental value continuously throughout the project.
Iterative development is not particularly new. It has been around for a long time, and it has probably evolved independently a number of times. Because it tends to focus on situational responses, it has not tended to be well documented, and for this reason it has appeared to be ad hoc. Our goal with this book is to change thatto provide a systematic introduction to managing iterative development that you can apply to your own projects.
At the core of the iterative approach is the explicit management of risk as the guiding principle behind the project management approach. The project is divided up into a series of iterations, each of which is directed at mitigating a set of risks by implementing scenarios that will force the confrontation and mastery of the risks. Our goal is to take these concepts and breathe life into them by bringing them down to ground level. We aim to present a simple, straightforward, and practical approach to organizing, estimating, staffing, and managing the project, but one that can be applied to very small projects and yet be scaled up to very large programs. In doing this we aim to promote a pragmatic approach that attacks the problem of obtaining results in a predictable, repeatable, non-chaotic way.
Our experience is based on helping many companies adopt iterative development using the IBM Rational Unified Process (RUP), 2 but the techniques presented here are not only applicable to Unified Process 3 projects; they represent a general approach to any iterative software development effort. They are equally useful when managing an iterative project using Extreme Programming, 4 Microsoft Solution Framework for Agile Software Development, 5 or any other agile or iterative software development process.
This book is focused on making the techniques of managing iterative development understandable and accessible to anyone with a basic background in managing software projects. It strives to provide you with the practical guidance you need to start managing your iterative and incremental projects in a controlled, agile, and disciplined fashion.
The Challenge of Managing Software Development Projects
Managing software development projects is challenging: Responding to a rapidly changing business and technological environment means that teams are always pushing the limits of the possible. This pressure to deliver results is compounded by the fact that their are never enough of the right people with the right skills; the technology is evolving too fast. Yet teams must respond and succeed, for the stakes are very high. Almost everything done in the business world today requires software, so the success of the business often rests on the success of some team developing a solution that consists of a lot of software.
Software development projects must be able to respond with speed and agility to rapid and incessant change in both the business requirements and the implementation technology. Agility in software development is essential for businesses to succeed today and, more importantly, in the future.
The critical importance of software in supporting the day-to-day operations of businesses and providing competitive advantage is leading to another emerging trend: governance. In short, because business success rests on software success, business executives need to understand how their investments in information technology and software development are paying off. They demand visibility and accountability; the stakes are simply too high for them not to understand project status and trajectory. In addition, in many environments, the criticality of software to safety or business processes means that there is a need for auditabilitya need to prove that what was done was authorized and approved. Governance of software development is also here to stay.
Finally, software development is a highly creative and collaborative endeavor in which success requires a fine degree of coordination between many people from many different disciplines, often working across different geographies and time zones and sometimes across cultural borders. The levels of invention and innovation that are fundamental to good software development mean development is not a mechanical process that can be fully planned at the start and then monitored during the execution. They also cause software development projects to exhibit frustrating diseconomies of scalethat is, a large project costs much more per line of code than a small project 6 illustrating that the industry has still not learned how to manage creativity, novelty, and complexity very well.
Iterative development provides a solution to these three challengesit provides an approach that is agile and responsive to the needs of the business while still providing the necessary controls and oversight needed to govern the development process and while fostering the creativity and collaboration needed to solve complex business problems.
Learning the Art of Managing Software Development
In every endeavor, good management matters. More than thirty years ago Frederick Brooks wrote something that still rings true today:
In many ways, managing a large computer programming project is like managing any other large undertakingin more ways than most programmers believe. But in many other ways it is differentin more ways than most professional managers expect. 7
This quote succinctly highlights the two major traps that people fall into when considering the management of software development projects:
- Developers may fail to recognize the value added by professional management practices on a software project, seeming to feel that the role of the manager on a project is similar to the role of government in Henry David Thoreau's work On the Duty of Civil Disobedience: "that government is best which governs least."
- Managers may fail to understand that technical details matter and that they cannot be completely delegated; no project can be managed without really understanding the work being done.
To be successful, the software project manager needs to have a firm foundation in traditional management practices but also needs to know what makes developing software different from other types of projects. To manage the project, the manager needs to understand the work well enough to be able to tell whether the work is on track. At the same time, managers who understand only the technical work and not how to motivate and lead teams are also lostthey never get their teams working as a cohesive unit.
Managing software development is like managing anything else, only more so. The time pressures and resource constraints tend to be so amplified and the number of alternatives so dizzying that the manager's abilities are sorely tested. We have found that an iterative development approach is key to solving many of these problems. We have also observed that the difference between success and failure of a software development effort rests largely on the skills of the manager of the project. 8 This is not to discount the value of the rest of the team or the approach they follow; it merely underscores that few project teams can be successful without good management.
Who Should Read This Book
This book is principally for the people responsible for the successful delivery of projects that have a significant amount of software as part of their solution. These people have a variety of job titles and responsibilities, ranging from a team leader with informal day-to-day leadership responsibility for a small software development team, to a project manager managing the production of a major release of a software product, to a program manager overseeing many collaborating projects, each with its own project manager. In short, we target the people who must make decisions about what to do, when to do it, and why.
This book will provide benefits to all members of the project's leadership team and anyone else who is concerned with the overall business success of the project. It is especially relevant for those project managers faced with the challenge of managing an iterative development project, whether they are novice or experienced project managers:
- If you are a novice project manager, the pragmatic approach presented will provide you with the guidance that you need to successfully manage your project in a controlled iterative fashion and will give you a framework with which you can acquire the skills you do not already have.
- If you are an experienced project manager faced with your first iterative software development project, this book will help you to continue to exploit your existing management experience and best practices while transitioning to a more agile, iterative, and incremental software development approach. If you have tried iterative approaches but remain unconvinced of their benefit, we hope this book will fill in the missing information in a credible way, making you a believer in the approach.
- If you are the leader of a team that is working iteratively, this book will provide you with an approach to leading your team that will enable it to support and interact more effectively with the broader project management team and project board.
- If you are a project sponsor, program manager, or user representative, this book will help you to understand how to interact with, support, and exploit the benefits of the iterative development of the software projects that you commission.
- If you are the leader of a discipline team (such as requirements, architecture, and so on), this book will provide an understanding of the role the project management team plays in establishing and sustaining an iterative development environment within which your team can excel.
In this book, we bridge the gap between the two most common, and often adversarial, positions adopted with respect to the management of iterative development projectsthe informal approach traditionally promoted by developer-centric methodologies and the more formal approach traditionally promoted by the project management communityby describing a single, layered, easy to use, agile, adaptive, and scalable approach.
We also broaden the scope of the discussion to include the sponsoring business itself, something that is often overlooked to the detriment of the result the project provides to the business. This is the area where software development projects ultimately compete with other investments for funding, a perspective to which our iterative projects must be aligned.
By adopting this holistic, management-aware approach we hope to bring together groups of people who often are not, unfortunately, aligned to achieve project success.
How This Book Is Organized
This book is intended to provide practical guidance on managing iterative projects and programs. The book is divided into two parts.
In Part I, "The Principles of Iterative Project Management," we present the basic principles of managing iterative software development projects. This part of the book focuses on the principles and best practices that underlie the successful management of iterative and incremental software development projects. If you are new to iterative development, Part I will give you a good foundation in the basics of iterative project management, although there are also some new insights for those already familiar with iterative approaches.
In Chapter 1, "What Is Iterative Development?" we explore what it means to develop software in an iterative and incremental fashion by examining how different project roles experience iterative development (for example, the developer, the customer, and the project manager).
In Chapter 2, "How Do Iterative Projects Function?" we discuss how an iterative and incremental project functions by examining what makes an iterative project successful and the key project characteristics that enable this success.
In Chapter 3, "Controlling Iterative Projects," we discuss how iterative projects are controlled. This chapter introduces the concepts of the time box, a standard project lifecycle for iterative development projects, and the objective measurement of results. It also introduces the phases of the Unified Process and explains how they facilitate controlled iterative development regardless of the iterative development method followed.
In Chapter 4, "Are You Ready for Iterative Project Management?" we discuss what you need to have in place before embarking on an iterative development project. This includes discussing some of the adjustments that often have to be made to team structures and personal attitudes to provide an environment conducive to and supportive of the adoption of iterative and incremental project management practices.
In Part II, "Planning and Managing an Iterative Project," we discuss how to plan, manage, and assess an iterative project, including how to plan projects and iterations, assess results, and adapt plans. We conclude by presenting how to adapt the approach to very small projects and very large projects and programs, and how to introduce iterative development to a new project team.
In Chapter 5, "A Layered Approach to Planning and Managing Iterative Projects," we examine the layering of the project and plans, which is essential to enable effective, controlled, iterative, and incremental development and to provide a scalable management solution. We also introduce the concept of an evolution as the mechanism for the iterative development of a major release of a software product. This chapter provides the framework for the more specific planning and assessment chapters that follow.
In Chapter 6, "Overall Project Planning," we describe how to create an overall roadmap for an iterative project. We examine techniques and mechanisms for planning the entire project lifecycle and the set of releases to be produced. We introduce some simple principles for lifecycle planning and use these to illustrate the process involved in creating an overall project plan.
In Chapter 7, "Evolution and Phase Planning," we present the principles for planning and managing an individual evolution and its phases. We examine the patterns found within an evolution and how to adapt these based on the forces at work on the project. This includes patterns of managing risks, estimating, and organizing the work into iterations.
In Chapter 8, "Iteration Planning," we present the principles of planning and managing an iteration within a phase. We examine patterns for managing an iteration and how to adapt these based on the forces at work on the project.
In Chapter 9, "Iteration, Phase, and Project Assessments," we examine how the assessment process works across the layers of an iterative project, looking in particular at the role of the iteration and phase assessments and how these affect the adaptive planning of the project and enable the entire project to be effectively controlled.
In Chapter 10, "A Scalable Approach to Managing Iterative Projects," we examine how to apply the principles and patterns presented in the previous chapters to various project sizes, concluding our "how to" guide for the planning and management of iterative projects. This includes guidance on how to scale the process down for the management of small and very small projects and up for the management of large projects and programs. Chapter 10 will be of special interest to those engaged in program management or those who find themselves working on projects that contribute to a larger program.
In Chapter 11, "Getting Started with Iterative Project Management," we conclude the book by providing advice on how to transition to an iterative software development process and how to introduce iterative development practices iteratively. This material will be useful to anyone embarking on their first iterative project or trying to introduce iterative management techniques into either projects or organizations.
In addition, we provide several comprehensive appendices.
- Appendix A, "A Brief Introduction to Use-Case Driven Development," provides a brief summary of the use-case driven development approach that is used to provide a concrete framework for the examples in Appendix C and throughout the book.
- Appendix B, "Outlines, Templates, and Checklists," provides detailed, reusable versions of the outlines, templates, and checklists referenced and presented throughout the body of the book.
- Appendix C, "Examples," provides a more detailed presentation of the example plans excerpted throughout the body of the book.
Footnotes
1 Von Moltke wrote a number of works on military theory. His main thesis was that military strategy consists of a system of alternatives because only the start of a military operation could be planned. As a result, he considered the main task of military leaders to consist of understanding all possible outcomes.
2 See http://www-306.ibm.com/software/rational/.
3 Other variants of the Unified Process include the Essential Unified Process (see http://www.ivarjacobson.com) and the Agile Unified Process (see http://www.ambysoft.com/unifiedprocess/).
4 See http://www.extremeprogramming.org or http://www.xprogramming.com.
5 See http://www.microsoft.com.
6 This is discussed in depth by Walker Royce in Software Project Management: A Unified Framework (Addison-Wesley, 1998).
7 Frederick P. Brooks, The Mythical Man Month: Essays on Software Engineering, Twentieth Anniversary Edition (Reading, MA: Addison-Wesley, 1995).
8 An observation backed up by the Standish Group's CHAOS Report; see http://www.standishgroup.com/. We will return to the Standish CHAOS Report and the topic of project success in Chapter 2, "How Do Iterative Projects Function?"
© Copyright Pearson Education. All rights reserved.