Agile ALM Lightweight tools and Agile strategies MICHAEL HUTTERMANN II MANNING Shelter Island
contents preface xv acknowledgments about this book xix xvii about the cover illustration xxv *art 1 Introduction to Agile ALI. eog>ooot»«) f>ffl«ets^'60fl6ffls Getting started udth Agile AIM 3 1.1 Agile ALM at a glance 5 1.2 Evolution of software engineering: moving to Agile ALM SCM and the first ALM trial balloons 8 The dawn of ALM 13 Becoming Agile: Agile ALM 15 1.3 Building blocks of Agile ALM 17 Stakeholderfocus 17 * Views on releasing and Agile ALM 19 Service orientation, SaaS, IaaS, PaaS 19 * Task-based and outside-in 21 Configuration, customization, and plug-ins 22 The polyglot programming world 23 Open source culture 24 Open technology and standards 25 Automation 26 1.4 Comprehensive Agile ALM with lightweight tooling 26 Toolchains and accidental complexity tools 28 Effective and efficient tooling 29 27* Agile ALM
1.5 Example use case 30 1.6 Summary 33 ALM and Agile strategies 34 2.1 The Agile and project management 36 2.2 Agile strategies 40 Version control and a single coding stream 40 Productive workspaces 42 Continuous integration 43 Component repository 50 Quality, standards, and release cycles 51 2.3 The process pitfall, the illusion of control 53 Effectiveness and efficiency 54 Agile ALM and configuration items 54 Agile ALM as change enabler 57 2.4 Summary 57 'art 2 Functional Agile ALM 59 Using Scrum for release management 61 3.1 Getting started with Scrum release management 62 3.2 Implementing Scrum release management 68 The release 68 1 The release duration 70 The release content 72 Progress and size of working units 74 Release commitments 75 Synchronization points 76 Feature, teams, component teams, caretakers 78 * Delivery slots, frozen zone, and code freeze 79 * Staging software 81 Quality gates 83 3.3 Release planning vehicles 84 Release calendar 84 Release screenplay 85 3.4 Supporting strategies with Subversion 86 The one-medium approach 86 Hooks 88 * Flow and bcking 90 3.5 Summary 91 Task-based development 92 4.1 Prerequisites for task-based development 93 Coordinating changes 93 " Using changesets 94 Associating changesets with tasks 95
4.2 Our first toolchain JIRA, FishEye, Bamboo, and Mylyn 9*7 Managing tasks withjira 99* Working on tasks with Eclipse and Mylyn 103* Tracking source changes with FishEye 105 Build view with Bamboo 107 4.3 Trac bug tracking and project management 109 Installing Trac 111 * Thewiki 113* Timeline and sources 114* Roadmap and tickets 115 4.4 Summary 116 Paet 3 Integration and release management... 11' Integration and release management 119 5.1 The integration and release management 5.2 Maven feature set 124 POMs and dependencies 125 * Inheritance and aggregation 127* Lifecycles, phases, and goals 128 Maven and testing 130 * Maven ecosystem 131 5.3 Maven component repositories 132 function 120 Managing sources and binaries in conjunction 135 Artifactory's enterprise component repository 137* Using Subversion to serve a simple Maven repository 145 5.4 Releasing with Maven 150 Creating the branch and preparing the release 152 Creating the release 157* Testing the release 158* Useful Maven plug-ins for releasing 160* Using cryptography with Maven 161 Maven assembly 162 * Maven and outlook 167 5.5 Summary 169 Tooling beyond Creating a productive development environment 170 6.1 Congruent builds and workspace management 171 Workspace management and the VCS 171 * Workspace management and integrating code 172* Workspace management and running tests 173 * Workspace management and dependencies 174 * Workspace management and bootstrapping the development 177
6.2 Using Mockito to isolate systems 177 Isolation and dependency injection 178 ' Mocks in test-driven development 180 The flavor of behavior-driven development 182' Other handy features ofmockito 182 Antipatterns 184 6.3 Interfacing application containers with Cargo 185 6.4 Remote builds with TeamCity 187 6.5 Summary 190 Advanced CI tools and recipes 191 7.1 Integrating other artifact types: Cobol 193 Preconditions and basic thoughts 194 * FTP communication with Ant 195 * FTP communication with Java 199 7.2 Integrating other artifact types:.net 201 Using MSBuildt.obuild.NETprojects 202 * Using TeamCity to trigger.net builds 203 7.3 Configure: building (web) apps for multiple environments 207 Multiple artifacts with assemblies 208 * Applying different configurations 210* Using a distribution profile and executing the example 212 7.4 Building, auditing, and staging with Jenkins 213 Jenkins and triggering jobs 214 * Jenkins dashboard and Jenkins jobs 215 * Auditing with Jenkins and Sonar 218 Runningbuildfragments in Jenkins only 225 Injectingbuild numbers into applications 227 Jenkins, Artifactory, staging, and atomic deployment ofmaven artifacts 229 7.5 Using Git and git-svn bridge for feature branch-driven CI 238 Feature branching comes to the rescue 241 * The Lone Ranger problem and how the git-svn bridge can fix it 243 7.6 Summary 246 Part 4 Outside-in and barrier-free development 247 Requirements and test management 249 8.1 Collaborative tests 251 Data-driven tests 253 * Acceptance tests 254
Ubiquitous language 255 * Executable specifications 256 Behavior-driven development 256 8.2 Acceptance testing with TestNG, Selenium, XStream, and Excel 259 TestNG and the data-driven approach 259 Data-driven testing with XStream 262 Testing the web UI with Selenium, TestNG, and XStream 264 1 Data-driven testing with Excel 270 8.3 Acceptance testing with Fit, TestNG, and FEST 272 The application 272 The specification 273 Gluing the tests and processing the document 276 * Running tests with Ant 278 * Running tests with Maven and adding to a Maven site 280 8.4 BDD in FitNesse with GivWenZen 283 Testing with GivWenZen 285 GivWenZen and Java PropertyEditors 290 Addingfurther scenarios 293 Creating scenarios 295 8.5 Summary 296 Collaborative and barrier-free development with Groovy and Scala 297 9.1 Agile and polyglot with Groovy 298 Low ceremony and scripting 301 Domain-specific languages 302 * Testing with easyb and Spock 303 Groovy Maven ecosystem 305 9.2 BDD with specs2 and Scala 306 Scala/specs2 307 Specs2 forms 313 * Scala build ecosystem 315 9.3 Summary 315 index 319