Featured Whitepapers
- Forrester Research: Optimizing Globally Distributed Software Development Using Subversion
- An Integrated Approach to Requirements and Quality Management
- Continuous Testing With ElectricCommander
- Agile CMMI at a Large Investment Bank
- Realize Effective Distributed Development Via a Virtual Software Factory
- Build & Deployment Automation for the Lean Economy
Upcoming & Recent Webcasts
- A New Kind of Engineering
- Managing Change in Rugged COTS Systems Development
- Keeping Control of Costs and Schedules When Requirements Change
- Three Simple Things that Will Help You Adopt Agile in Your Enterprise
- Customer speak: Teams, Insights, Results with Quality Driven Software
- Build & Deployment Automation for the Lean Economy
Applying CM to Agile Teams |
| Print | |
| Written by Mario Moreira | ||||
| Monday, 14 July 2008 11:39 | ||||
A variety of Agile methods and practices have now been
around for a solid 10 years and existed for at least another 10 years prior. Configuration Management (CM) for Agile
development has now been discussed since the turn of the century. So what are the core principles of CM and how
can CM help Agile teams? CM is a recognized engineering discipline that provides processes and technologies to identify and control items to ensure integrity and quality of the product under development. CM focuses on four principals that include identification, control, audit, and report (a.k.a., status accounting). Typically, the four principles are instantiated into version control, change control, problem management, build management, release engineering, CM audits, and metrics and reporting on CM activities and baselines. Simply put, the key to CM is that it enables development teams to identify the pieces that make up an application. By identifying the pieces, an application or organization is better able to control changes to the pieces, therefore the environment. So what does this mean to Agile? Are these principals relevant in an agile development?
The short answer
is yes and ‘identify' and ‘control' are critical to the ability to rapidly
change which is a key part of Agile. The
long answer is that CM should be tailored to meet the pace of agile
development. CM should support the Agile working process while not sacrificing the CM
principles. CM should ensure the
integrity of the value stream, by eliminating waste and being lean while
enabling control of the changes.
Part of this means that what gets
prioritized or ranked as having the highest value is what should get
delivered. By identifying all of the
pieces of a value stream, you can more easily identify the waste. There will always be rejected work, incomplete
work, and defects by the end of an iteration, and CM principles can help
identify them.
In many cases, CM
finds itself in an organization that has a traditional methodology that
consists of waterfall or sometimes a hybrid that has some parallel phases. Less frequently, but more often than in the
past, CM finds itself in an organization that is Agile (or part Agile and part
traditional). In all cases, as Agile gets
introduced, the implementation of CM should be adjusted to fit the need of
Agile development methodology. So, the
question is, what are some of the adjustments to CM to ensure that it fits the need
of Agile development while still maintaining the principles of CM? Some areas to consider are the following: The ability to perform continuous builds also implies that you have both the tools and processes in place to manage this frequency. Implementing build tools such as CruiseControl or BuildForge (and there are many others) will help to achieve this. Another option is to script a build function upon check-in.
In addition, there is a strong need to understand the
current build practice and adapt it with the build types that are needed
(private, shared, integration, release) and levels of builds (component,
product, etc). This helps determine
where the bottle-necks are - ergo, where the waste is. The number of branches that are needed depends on the Agile project and how it integrates with other projects. If the Agile project is small and independent of other projects, having a private workspace off of the mainline is not unreasonable. However, as the team gets larger, the need to have another layer of integration between personal workspace and main-line may be needed, but one should attempt to keep this a minimum if possible to reduce effort in integration.
With the rapid
pace of Agile also comes the potential need for automated merging. Most CM tools today come with this feature so
this should be a given in most cases. If
not, consider upgrading. This becomes
more of a need the larger the Agile project is or when more people must touch
the same code modules. o Compare the stories or requirements that were prioritized for the release vs. what was delivered (inventory or requirements). o Identify the additional changes made not identified in the value stream (over-production or extra features). o Capture time spent on recovery from broken builds (defects). Broken builds are outages and should be measured.
o
Identify
the number of builds that occurred vs. what was used further down the migration
path (extra processing). This determines
what the downstream processes can actually handle. CM is critical to the success of all software development methodologies. The CM principles ensure the integrity of the product under development. However, CM may be implemented differently as long as the CM principles remain intact. When moving from a more traditional methodology to Agile, consider the importance of adjusting the CM processes to meet the pace of agile development and ensure the integrity of the value stream. Focusing on implementing CM to best support shorter releases, continuous build, workspaces, branching and merging, automation, CM roles, and CM metrics is a way to support Agile and derive the benefits therein.
Mario Moreira is a Columnist for CMCrossroads Journal, a VP of Architecture & Methodology, an Author of CM publications, and has worked in the SCM field since 1986. He has experience with numerous SCM technologies and processes and has implemented SCM on over 100 applications/products, which include establishing global SCM infrastructures. He has an MA in Mass Communication with an emphasis on communication technologies. Mario also brings years of Project Management, Software Quality Assurance, Requirement Management, facilitation, and team building skills and experience. Mario has released a new SCM book entitled, “Software Configuration Management Implementation Roadmap”. It can be found at www.wiley.com, www.wileyeurope.com, and www.amazon.com (search for Mario Moreira). It includes step-by-step guidance for implementing SCM at the organization, application, and project level with labor-saving templates on CD. You may reach Mr. Moreira by email at Mario.Moreira@cmcrossroads.com
Set as favorite
Bookmark
Email this
Hits: 4055 Trackback(0)Comments (1)
|
|
... This is helpful, but more info would be more helpful. For example, how should identification practices change in an agile environment? Should we be identifying a different set of "stuff", or identifying it with a different type of identification scheme? You say change control must adapt to the short iterations, but beyond "discussing" changes in a daily meeting, how should a CM person record and keep status when things are changing so quickly? I appreciate the "what" aspects of this article, but I need more "how." |
|

A variety of Agile methods and practices have now been
around for a solid 10 years and existed for at least another 10 years prior.
