Continuous Integration: Improving Software Quality and Reducing Risk
Buy it now
One Minute Bottom Line
A book on Continuous Interation was due for a long time, and the wait is finally over with this excellent book. If you're in the software profession, this is a must have book. This book will also help you choose the right sofware tools you need for Continuos Integration. Another plus point about this book is that it is intended to a wide range of audience and is not specific to any platform or language.
The first part of the book addresses the fundamental practices of CI and the second part describes how to create a full-featured CI system including database integration, testing, inspection, deployment and feedback. The authors finish by giving the you resources, evaluations and approaches in best determining the proper CI tools for the job.
P.S: Every chapter in this book starts with a short, inspirational and sometimes funny quote. Just to make this review more interesting as well, I have included these quotes at the end of each chapter. Each and every quote is very appropriate to the chapter.
Part I: A Background on CI: Principles and Practices
This part is an introduction to CI and examines the concept and its practices from the ground up. It is aimed toward those readers not familiar with the core practices of CI.
Chapter 1. Getting Started. This chapter gives you a simple overview of the features of CI, and also shows you how to incorporate additional processes into your CI system, such as testing, deployment and feedback etc.
If you have never used CI before, you'll get to know what a Build is, why you need a version control repository, what a CI server is, why you need a build script and feedback mechanism with examples. Later, in this chapter the author explains the four features of CI.
The final few sections of this chapter are dedicated to source code compilation, database integration, testing, inspection, deployment and documentation and feedback.
Quote: First, master the fundamentals
Chapter 2. Introducing Continuous Integration familiarizes you with the common practices and how to get to CI. Once you're done with this chapter you should and will be able to talk to others about CI quite confidently and why you need it in your development process.
The author answers some very interesting questions like:
1. What is the value of CI?
2. What prevents teams from using CI?
3. How do I get to "Continuous" Integration?
4. When and how should a project implement CI?
5. How long does it take to implement CI?
The author also discusses seven practices to follow when using CI; commit code frequently, fix broken builds immediately, all tests and inspections must pass and so on.
Quote: Assumption is the mother of all screw-ups.
Chapter 3. Reducing Risks Using CI. As the name suggests, identifies the key risks CI can mitigate using scenario based examples. This was the most interesting chapter and the one which I assure you all development teams have been through.
Here are some scenarios explained in this chapter which we all find relatable:
1. "It works on my machine"
2. Regression testing
3. Duplicate code
4. Test coverage
Quote: Quality means doing it right when no one is looking.
Chapter 4. Building Software at Every Change.
The author in this chapter identifies some of the practices for building software, the benefits of using a CI server to perform an integration build whenever a change occurs. You will also learn how to stage your builds and the different aspects of choosing and using a separate integration build machine for CI.
Quote: The whole damn universe has to be taken apart, brick by brick, and reconstructed.
Part II: Creating a Full-Featured CI System
This part expands the core concepts you learnt in Part 1 into other effective processes performed by CI systems, such as testing, inspection, deployment and feedback.
Chapter 5. Continuous Database Integration
To quote from the book "CDBI is the process of rebuilding your database and test data any time a change is applied to a project's version control repository". And in this chapter, you'll learn all you need to know to incorporate database integration into a build process. You'll also learn which database files need to be committed to a version control repository. The author finishes this chapter by looking at effective CDBI practices.
Quote: Things do not change, we change.
Chapter 6. Continuous Testing
An excellent chapter in which the author shows you how to segregate tests into four automatable categories mapping to unit, component, system and functional tests and how a CI system can be configured to execute tests in an efficient manner.
Quote: Practice makes perfect.
Chapter 7. Continuous Inspection Continuous Inspection, takes you through some automated and continuous inspections (static and dynamic analysis) using different tools and techniques. A few of the tools covered in this chapter are: JavaNCSS, NDepend, PMD, Simian and so on.
Quote: That man is great who can use the brains of others to carry out his work.
Chapter 8. Continuous Deployment
Yet another excellent chapter which explores the process of deploying software using a CI system so that it can be functionally tested. Some of the practices which are discussed in this chapter are:
- Release a working software any time, any place,.
- Label a repository's assets
- Produce a clean environment
- Label each build
- Run all tests and so on.
Quote: If you want a thing done well, do it yourself.
Chapter 9. Continuous Feedback
Describes and demonstrates the use of continuous feedback devices
(such as e-mail, RSS, X10 and Ambient Orb) so that you are notified on
build success or failure as it happens. I really enjoyed reading this
chapter as well, since I had no clue that we could get feedback from CI
other than an email. This chapter also discusses the use of windows
taskbar monitor, sounds, and also wide-screen monitors.
For each of the feedback mechanism, the author gives the requirements, advantages and disadvantages of using them with the CI system.
Quote: As a general rule, the most successful man in life is the man who has the best information.
Epilogue : The Future of CI
Appendix A. CI Resources explores the future possibilities of CI.
Appendix B. Evaluating CI Tools Assesses the different CI servers and related tools in the market, their applicability to the practices described in the book, advantages and disadvantages of each, and explains how to use some of these tools interesting features.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)