| Contents | 6 |
---|
| About the Authors | 13 |
---|
| About the Technical Reviewer | 14 |
---|
| Acknowledgments | 15 |
---|
| Introduction | 16 |
---|
| Part 1 ICONIX and Agility | 19 |
---|
| Chapter 1 What Is Agility? (And Why Does It Matter?) | 20 |
| What Software Agility Isn t | 22 |
| The Goals of Agility | 23 |
| Why Is Agility Important? | 24 |
| What Makes a Project Agile? | 25 |
| Challenges of Being Agile | 28 |
| Agile Methodologies | 30 |
| Agile Fact or Fiction: What Does Being Agile Mean? | 39 |
| Summary | 40 |
| Top 10 Practices and Values That Make a Project Agile | 40 |
| Chapter 2 Characteristics of a Good Software Process | 41 |
| What s in a Software Development Process? | 42 |
| What Makes a Good Agile Logical Process? | 44 |
| Human Factors | 47 |
| Agile Fact or Fiction: Team Structure and Human Factors | 50 |
| Summary | 54 |
| Chapter 3 ICONIX Process: A Core UML Subset | 55 |
| A Brief History of ICONIX Process | 56 |
| What Can ICONIX Process Do for My Project? | 57 |
| ICONIX Process in Theory (aka Disambiguation and Prefactoring) | 57 |
| ICONIX Process in a Nutshell | 60 |
| More About Disambiguation | 69 |
| More About Prefactoring and Model Refactoring | 72 |
| Key Points to Remember | 72 |
| Summary | 75 |
| Chapter 4 A Core Subset of Agile Practices | 76 |
| Why Define a Core Subset of Agile Practices? | 76 |
| Agile ICONIX: The Core Subset of Agile Practices | 76 |
| Refactoring the Agile Manifesto | 86 |
| Agile Fact or Fiction (Continued) | 90 |
| Summary | 100 |
| Part 2 Agile ICONIX Process in Practice:The Mapplet Project | 101 |
---|
| Chapter 5 Introducing the Mapplet Project | 102 |
| So, What s a Mapplet, Anyway? | 102 |
| Mapplet Goals | 105 |
| Mapplet Requirements | 105 |
| Project Inception: A JumpStart Workshop in Action | 108 |
| Mapplet Architecture | 109 |
| Initial Use Case Modeling for the Mapplet | 110 |
| First Release Plan | 111 |
| More Information on ArcGIS As Used by the Mapplet | 112 |
| Summary | 113 |
| Chapter 6 Modeling the Mapplet (Release 1) | 114 |
| Beginning with a Prototype (and Just a Little Bit of Modeling) | 114 |
| Visual Acceptance Testing | 115 |
| First Pass Modeling Efforts (and Some Typical Modeling Mistakes) | 116 |
| Tightening Up the Model | 121 |
| Let s Take a Look at Some Code | 126 |
| Et Voila! The First (Working Prototype) Release | 134 |
| Summary | 135 |
| Chapter 7 Synchronizing the Model and Code: One Small Release at a Time | 136 |
| Keeping It Agile | 136 |
| Divergence of Code and Design over Time | 137 |
| Design Review | 138 |
| And Today s Lesson Is . . . | 160 |
| Summary | 160 |
| Chapter 8 Mapplet Release 2 | 161 |
| Customer Feedback on the First Release | 161 |
| How Persona Analysis Was Used to Drive the Requirements | 162 |
| Planning the Second Release | 164 |
| Analysis Review | 169 |
| Designing Release 2 | 170 |
| Source Code: Refactoring Is Still Useful After Doing Use Case Driven Modeling | 172 |
| Screenshots of the Finished Product | 179 |
| Agile Scorecard for the Mapplet Project | 180 |
| Summary | 181 |
| Part 3 Extensions to ICONIX Process | 182 |
---|
| Chapter 9 Agile Planning | 183 |
| Why Agile Planning? | 183 |
| Agile Planning Terminology | 185 |
| Agile Planning Building Blocks | 186 |
| Agile Planning Phases | 193 |
| Agile Planning Principles | 194 |
| Summary | 198 |
| Chapter 10 Persona Analysis | 199 |
| Extending ICONIX Process with Persona Analysis | 199 |
| The Three Pieces of the Jigsaw Puzzle | 200 |
| Building the UI Around a Target User | 202 |
| Using Interaction Design to Identify Alternate Scenarios | 205 |
| Keeping a Tight Rein on Complexity | 206 |
| Using Interaction Design to Identify Actors and Use Cases | 206 |
| The Finished Use Case | 207 |
| Visual Acceptance Test for Release 2 | 208 |
| Summary | 211 |
| Chapter 11 A Vanilla Test-Driven Development Example | 212 |
| A Brief Overview of TDD | 213 |
| A Vanilla TDD Example | 214 |
| Summary | 234 |
| Chapter 12 Test-Driven Development with ICONIX Process | 235 |
| How Agile ICONIX Modeling and TDD Fit Together | 235 |
| The Vanilla Example Repeated Using ICONIX Modeling and TDD | 235 |
| Summarizing ICONIX+TDD | 256 |
| Stop the Presses: Model-Driven Testing | 257 |
| Summary | 259 |
| Index | 260 |