Skip to main content

The importance of continuous integration

Leading a team of developers in the effort of building a robust, quality software product should involve the establishment of some process and tools to assist the team effort and serve as a safety net for the errors of getting people to work together. Continuous integration is, I believe, a crucial element of that process. Introduced by Martin Fowler and Matt Foemmel (see article Continuous Integration), continuous integration establishes the practice of frequent integration of work developed by the several team members verified by automated build and testing of integrated code within a clean sandbox. This practice is valuable for several reasons:
  • It promotes the development of a clear process of building/deployment independent of any specificity of developer's platforms. Code that exists on a single platform only is bound to become dependent on specific aspects of that platform without anyone really noticing the dependencies until trying to port to other platforms. The existence of the integration clean sandbox allows these specific dependencies issues to not go unnoticed.
  • It promotes the development of testing. Being based on the premise of "test often" it makes the testing development part of the team's process. The fact that there is a platform built specifically for build and testing verification transforms, from the developer's perspective, testing efforts into an even more useful and justifiable effort.
  • It allows for quick detection of code integration issues by providing the clean slate for bringing all the code together. The little quirks of code combining can be detected by effective smoke/regression testing.
How hard is it to put in place continuous integration ? It depends a lot on where you are in your development process when you decide to take it up. If your team already makes use of build tools (e.g. Ant, Maven, even Make), makes use of a version control system (e.g. CVS, Subversion) and already does some kind of automated testing (e.g. xUnit) it can become pretty straightforward (You do use these don't you?!?). Continuous integration becomes simply a matter of setting up the integration sandbox and establishing the automation to detect changes in the version control system, building the changed system and testing the changes. You do not even need to go very far to accomplish that. You can find already systems that give you the continuous integration functionality that you need. At Tizra we have chosen to use the Cruise Control open-source, free framework for our continuous integration process (BSD-style license). It does pretty much what we need to do and keeps us on top of any integration issue that might arise from our development effort. It provides us unit tests results gathering, reporting and historical stats gathering for all checks. Continuous integration should be, in my opinion, an important practice for any serious software development company and I, for one, will make every effort to ensure it is put in place in every project I work with.

Comments

Popular posts from this blog

Online Publishing for Tough Times

"I didn't invent the rainy day, man. I just own the best umbrella" Almost Famous In an economic climate that led Publishers Weekly to predict 2009 would be "the worst year for publishing in decades," eBook sales are growing at more than 100% a year, according to the International Digital Publishing Forum (IDPF). We think it's time more content owners—both inside and outside the traditional publishing industry—had access to serious online publishing tools that will open up this kind of opportunity. That's why we're rolling out free, self-service signups to Tizra Publisher. This is the same software that MIT Press is using to sell a collection of more than 170 computer science books on its CISnet site , and you can get your hands on it right now… FREE 60 SECOND SIGNUP If you'd like to learn a bit more, here's quick overview of what Tizra Publisher can do ( click the little TV icon at the bottom to see it big! ).

Technical Podcasts

If there is something the web as surely changed, it was the way that software engineers need to work. It is now a crucial aspect of our work to be able draw from the huge internet knowledge base out there in an efficient way to get to the right answers. Part of that information extraction is related to the keeping-up-to-date effort that every developer is required to accomplish to continue to be productive. While previous a software engineer could rely mostly on print material, nowadays we need to rely as well on content available on the net. Podcasts are such a source that can bring an amazing amount of information to the mix of knowledge one needs these days. If you are a software engineer and have not jumped into the podcast wagon yet, I suggest you do so. Here is a list some technical podcasts that we hear at Tizra: The Java Posse : a fantastic podcast on Java development. Containing news info update, analysis of tools, overall software development discussions. Software as She Dev...

Why Books in Browsers? A Closer Look at e-book Publishing Software Choices

What’s an ebook?   For many, the first thought is of a Kindle, Nook or similar device, designed for a single purpose and packed with texts downloaded from a single retailer.  However, it’s easy to forget just how new that notion of ebook publishing software is...or how quickly it’s changing. Vintage Rocket eBook (left) and SoftBook devices show how quickly the basic definition of an ebook can change.  (From the collection of Tizra founder David Durand.) As broadband connections and computing power become more pervasive, the idea of “books in browsers” or “books in the cloud” is gaining traction.  As has already happened in other media with services like Hulu, Netflix and Spotify, book publishers are starting to see the value in streaming content direct to users as they need it, rather than requiring them to download it to their own device before use. The Case for Books in Browsers: Delivering books or content in browsers is ideal for publishers that wan...