Welcome to Agile ALM. This book has three main goals. The first is to describe Agile Application Lifecycle Management (ALM) in practical terms and to provide a plan for rolling out Agile strategies and best-of-breed tools. The second purpose is to explain how to create ALM toolboxes based on standard tools used in advanced, real-world cases. The third goal is to give you some guidance on how to choose the best tools, use them correctly, and integrate them while applying Agile strategies. These three goals are the focus of this book.
In these pages, I have tried to present all the information you’ll need to implement Agile ALM. I hope the book will also help you understand and put into practice the “tool chains” needed for automating builds, tests, and continuous integration for your applications, so you’ll be able to deliver quality applications without wasting time on repetitive tasks or hunting for the right set of strategies and tools.
The book starts with an overview of Agile ALM and then takes you deeper into the details. First, we’ll look at toolsets at a higher level and then dive into the essentials you’ll need in order to achieve success. It’s worth noting that while some version-specific information is bound to change over time, the overall approach of this book will remain relevant, even as tools and strategies mature and evolve. The tool explanations are timeless because they focus on basic concepts and how to use the tools, rather than on details that will change from version to version.
You will learn how to integrate tools that are effective and flexible enough to accompany the entire development process and yet, can be arranged seamlessly in an open architecture. You will also learn how to look at the tool infrastructure as a mash-up so you can change and replace individual facets on the fly. The tools discussed in the book are free for the most part. In rare cases, where no free tool is available to achieve a specific task, or when the paid alternatives have worthwhile features, I’ll introduce commercial tools. Still, most of the products described in the book are moderately priced.
Although ALM strives to be language-agnostic, the tools we’ll look at in the book are Java-focused, for two reasons. First, Java engineers represent the largest target audience of this book. Second, as in most heterogeneous system environments, you will find one leading system that integrates subsystems. Java is one of the leading, if not the leading language and platform to influence other platforms (like .NET).
This book serves as a bridge between new innovative approaches to development like Scrum, BDD, and Scala and more traditional approaches, such as bridging the abstract Scrum template to traditional functional and technical release management, or to continuous integration with Scala and Cobol. This book doesn’t promote any one set of solutions. Rather, it serves as an explanation and a reality check for different technologies; this can be useful to more conservative companies and adopters.
I have tried to find a balance between high-level management overviews (along with basic explanations) and technical details (with many hands-on examples). I hope that this combination will succeed in making this book a comprehensive “one-stop shop” for you.