Continuous Integration: Improving Software Quality and Reducing Risk
For any software developer who has spent days in "integration hell," cobbling together myriad software components, Continuous Integration: Improving Software Quality and Reducing Risk illustrates how to transform integration from a necessary evil into an everyday part of the development process. The key, as the authors show, is to integrate regularly and often using continuous integration (CI) practices and techniques.
The authors first examine the concept of CI and its practices from the ground up and then move on to explore other effective processes performed by CI systems, such as database integration, testing, inspection, deployment, and feedback. Through more than forty CI-related practices using application examples in different languages, readers learn that CI leads to more rapid software development, produces deployable software at every step in the development lifecycle, and reduces the time between defect introduction and detection, saving time and lowering costs. With successful implementation of CI, developers reduce risks and repetitive manual processes, and teams receive better project visibility.
Review By: Dan Luciano
01/28/2008
"Continuous Integration" by Paul M. Duvall, et. al is an excellent book and should be on every software developer's book shelf. The book, written in a clear style with plenty of examples, is for all levels of developers, from novice to expert. The book is divided in to two parts: The first part gives an excellent background on the principles and practices of using a continuous integration approach to developing software. The second part is a more detailed explanation of those principles and practices.
The author uses an "integrate button" example throughout the book. The idea behind this example is that continuous integration needs to happen as easily as pushing a single button that integrates the entire software project from building the software to its final deployment. This approach makes it easy to see how all of the practices and principal are integrated.
The author explains that continuous integration involves continuous building, database integration, testing, inspections, deployment, and feedback. By following the author's advice, you can take many of the ideas and suggestions and implement them in your own full-featured continuous integration system.
The book also includes two excellent appendixes. The first is a list of continuous integrations resources from Web sites and articles for tools and products. The second gives advice and suggestions on how to evaluate continuous integration tools. The book also has an excellent companion Web site.
I was able to take many of the examples and suggestions in the book and use them immediately in my own projects. The chapter in the book that was the most useful to me was the chapter on continuous database integration. This was a part of my integration process that was severely lacking. After reading the chapter, I was able to fill in a critical missing part of my own continuous integration practice.
I would highly recommend this book to everyone interested in making continuous integration a part of their development process. This is one of the best books I have read in the last few years on an agile methodology topic, and now the book has become a prominent piece in my library. I just can't say enough good things about this book!