Channels ▼
RSS

Design

SCM: Continuous vs. Controlled Integration


Pablo Santos is a software engineer at Codice Software. He can be reached at psantosl@codicesoftware.com.

The rise and consolidation of Agile methodologies has introduced a new vision and spirit in software development. Concepts such as refactoring, pair programming, and collective code ownership are common for developers worldwide.

But Agile has not only influenced the way software is analyzed, designed, and written. It also has changed the way it is assembled. Today almost everyone in the software industry has at least heard about continuous integration tools and techniques.

In this article, I analyze the pros and cons of continuous integration, and examine whether there are still opportunities to look for even more agile processes supported by Software Configuration Management (SCM) Best Practices.

Freeride Software Development

So what are the most relevant features that Agile software development brings to scene? Well, the answer to this question depends heavily on who is answering. Here I highlight some features that as a subset of agile that I call "freeride" -- trying to capture part of the spirit of agile software development:

  • Enforce change. Ranging from refactor to collective code ownership, the message is clear -- change whatever needs to be changed to create better code and give the right answers to customer requests.
  • Create a real team. Agile methods put people first, opposite the traditional project management and software engineering techniques which fiercely look for reducing staff dependency. And just as each time I mention the word "team", Tom DeMarco and Timothy Lister's Peopleware chapter on making teams jell comes to my mind, "team" being defined as a group of people working together towards a common goal, not just a bunch of programmers sitting together.
  • Fun. This won't ever fit in every organization, but some of them will need to compete in a global market. So getting the best out of talented individuals will be a key point. Achieving such a goal usually involves taking care of motivation, and fun is then important.

Not all organizations or projects will benefit from or be able to adopt agile techniques. Big projects with hundreds of developers and high personnel rotation aren't normally good agile candidates. In fact, the standard way to achieve agility on such environments is by splitting teams into smaller ones. And when this isn't possible, a tall hierarchy chain is required, which is incompatible with agile techniques.

But even on those environments there are certain techniques which help introduce more agile working methods. And the same techniques can benefit small agile teams to overcome many of the problems derived from some extended SCM practices.

The Role of SCM in Agile

What is the role of software configuration management in agile processes? Normally SCM is just perceived as a commodity, as a service to be used by developers. But SCM can play a key role contributing in the creation of the right environment to achieve the desired agile goals. The problem is that basically not every version control or SCM tool fits reaching those goals. Most of them fail, giving developers enough freedom to choose the best suitable process and instead force to follow the one which is closer to the tool's capabilities.

Agile is all about changing code safer, adapting to requirements faster, and listening to the customer better. And some of the most extended SCM agile practices fail giving developers the freedom to perform changes without being concerned about project's stability.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video