by Michael Hüttermann

ISBN13: 978-1-9351-8263-4
360 Pages
User Level: Beginner
Publication Date: September 2, 2011
Available eBook Formats: PDF, ePub, Kindle

Book page at Manning
Book page at
Book page at

Source Code
Free Chapter 1
Free Chapter 2

Seminars, Training
Project support
Relevant papers, talks, interviews

Follow the author
Author's web site
Author's blog

07/30/11 Delay, now release date is scheduled for August 2011
04/10/11 Delay, now release date is scheduled for July 2011
11/11/10 Delay, now release date is scheduled for April 2011
07/12/10 Delay, now release date is scheduled for November 2010
07/02/10 Manuscript accepted, passed to production
06/27/10 Incorporated Manning's (3/3) review (8 individual reviews)
06/23/10 Another, the last publisher's review received
06/17/10 Agile ALM in early access (MEAP)
06/14/10 Manning provides review (3/3) (was scheduled for March)
05/31/10 Last chapter edited by Manning
05/23/10 Manning's editing was scheduled to be completed today
04/23/10 Manning editor on the project (timeline: 2 chapters a week)
04/08/10 Incorporated Manning's (2/3) review
03/28/10 I've submitted the completed manuscript in time
09/15/09 I've started writing the manuscript

Java Champion Michael Hüttermann is a freelance delivery engineer and expert for DevOps, Continuous Delivery and SCM/ALM.

sd asdf sad fasfsfsdadsfsd sdf fasfsdf adsf adsf fsadfsa afsdfxxxx sf sd fsda fsd asasdfsdf

My book "Agile ALM" introduces a new vision for streamlining your development process: Agile application lifecycle management (ALM). You'll learn powerful practices like Task-Based Development for aligning activities to tasks resulting in traceable artifacts, Continuous Integration, in which you frequently and systematically integrate, build, and test an application in development and Scrum as an agile approach to release management. This book synthesizes technical and functional elements. The effect is a more comprehensive and practical approach to the disciplines test, release, integration, build, requirements, change and configuration management, see Figure 1.

Figure 1. ALM addresses different disciplines and development phases

Agile ALM is about people, culture, processes and tools. In a nutshell, Agile ALM
o Is the marriage of business management to software engineering
o Targets processes and tools working together seamlessly, without silos (silos are for farmers!)
o Spans development phases and project roles to foster communication and team collaboration
o Enriches ALM with Agile strategies
o Is based on Software Configuration Management and version control
o Is based on a set of lightweight tools, enabling a team to collaborate efficiently
o Includes artifact types to continuous integration, inspection and deployment including Java, Groovy, Scala, Cobol, .NET, and others
o Sets up and uses an unified infrastructure

This book will also enable you to understand and put into practice entire "tool chains" for automating the builds, tests, and Continuous Integration of your applications. Because efficient tool chains can radically improve the speed and fluidity of the development process, this book demonstrates how to integrate state-of-the-art lightweight tools (like Jenkins, JIRA, Maven, and a lot more). Many of the tools and examples are Java-based, but the Agile ALM principles apply to all development platforms and examples show how you can bridge different languages and systems. This book provides all the information that you need to implement Agile ALM in one comprehensive resource. With this guidance you will be able to deliver quality applications without wasting time on repetitive tasks, or spending time hunting for a toolbox of strategies and tools.

Agile ALM is a guide for Java developers, testers, release managers, (technical) project managers and decision makers who want to integrate flexible agile practices and lightweight tooling along software development phases. People with Java skills will profit most from this book, especially those who already use or plan to use the tools introduced here. The book is especially for the interested IT professional who wants to get familiar with Agile ALM, as well as for (future) users of the tools seeking advice for advanced use and best practices for applying Agile strategies.

o A thorough introduction to ALM and Agile ALM
o Integrated, Java-based tool chains, based on Maven, and others
o Guidance how to implement Agile strategies, including Scrum and Continuous Integration
o Advanced real world use cases
o Tons of good practices helping to underpin your individual Agile ALM approach

Part 1 Introducing Agile and Application Lifecycle Management (ALM)
1. Getting started with Agile ALM
2. ALM and Agile strategies

Part 2 Functional ALM
3. Using Scrum for release management
4. Task-based development

Part 3 Integration management and releasing
5. Integration management and releasing
6. Productive development environment
7. Advanced continuous integration: Tools and recipes

Part 4 Outside-in development and barrier-free development and testing
8. Requirements and test management
9. Collaborative and barrier-free, with Groovy and Scala

Chapter 1 illustrates what Agile ALM is for and what its features are. In this chapter we learn about challenges common to software development. We discuss how this prompts the evolution in software engineering that lead to the Agile Application Lifecycle Management.

Chapter 2 gives a deeper look into Agile in the context of ALM and describes the Agile ALM approach that we will implement in the rest of the book.

Chapter 3 fills out the parts that are missing from what I call "textbook" Scrum with respect to lifecycle management. This chapter not only introduces the basics of Scrum, but also shows you additional strategies to extend Scrum for Agile ALM. We will implement Scrum, also bridging from Scrum (and its functional release management) to technical release management.

Chapter 4 discusses task-based development. In this chapter, we will look at strategies and two popular tool chains enabling task-based development. Tools covered: JIRA/Greenhopper, Bamboo, Eclipse, FishEye, Mylyn, Trac.

Chapter 5 covers integration management and releasing. Technical releasing consists of building the software and providing the final product to the user. Build management (comprised of compiling scripts, and packaging and distributing components) is essential for Agile ALM. This chapter covers Maven, Subversion and Artifactory.

Chapter 6 illustrates strategies and tools to set up controllable, highly maintainable environments, isolating systems that you cannot fully control in productive development environments. We will discuss the basics of productive workspaces, illustrating with examples. We will also cover Mockito, Cargo and TeamCity.

Chapter 7 details and implements specific aspects of Agile ALM in the context of Continuous Integration. We will discuss various approaches to integrate different artifact types. We will also discuss how to bridge different version control systems to enable feature branching. Other hotspots of this chapter are staging software without re-building as well as auditing. Tools covered: Jenkins, Sonar, Subversion/Git, and others.

Chapter 8 focuses on the requirements management and testing part, and then on integrating them with the coding phase. Outside-in is explained, in detail, by discussing concrete use cases in the context of acceptance tests and behavior-driven development. We will discuss solutions based on Selenium, TestNG, Fit/FitNesse, FEST, XStream, GivWenZen, Excel.

Chapter 9 continues to detail collaborative development and testing. With Groovy and Scala, this chapter discusses different languages for barrier-free development and testing, including behavior-driven development (with easyb and specs2).