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
Defining Agile SCM: Past, Present & Future |
| Print | |
| Written by Brad Appleton, Robert Cowham and Steve Berczuk |
| Saturday, 11 October 2008 19:00 |
|
History of Agile SCM Prior to the February 2001 gathering in Snowbird, UT that resulted in the Agile Manifesto and the name "Agile Development Methods," Agile methods were called "Lightweight" or "Minimalist" methods. From 1995-2000, hardly anyone knew of any of them except for Extreme Programming (XP), though there were several others during that time (including Scrum, ASD, Crystal, DSDM, and FDD). Discussions of the application of SCM to such methods were fairly limited:
To our knowledge, the term "Agile SCM" was first coined in 2000-2002 by Brad Appleton and Steve Berczuk (before "Agile" was trendy & popular) while collaborating together on their SCM Patterns book[7], and in a subsequent appendix they wrote for Ann Hass' book on SCM Principles and Practices[8]. Being part of the software patterns community in the late 1990's made both Brad & Steve privy to numerous discussions with, and review-drafts of papers from Agile pioneers such as Kent Beck, Ward Cunningham, Martin Fowler, Alistair Cockburn, Robert Martin, Michael Beedle, and others who would later found the Agile movement, create the Agile manifesto, and author the first books on eXtreme Programming, Refactoring, and Scrum. Some of those early discussions (prior to 2000) even took place on the original wiki-web (first created by Ward Cunningham), and many of those discussions are still chronicled there (albeit rather dated by now). Interest in, and articles about, Agile SCM seemed to grow slowly at best from 2000-2004. About the only other folks writing specifically about Agile/XP and SCM were Darcy Weber (CM Strategies for RAD), Christensen (Tracking Change in Rapid and eXtreme Development), and Bendix & Ekman (see the ASCM project). The CMCrossroads community & portal sprouted at that time, as did the CMWiki-web And there were some initial exploratory (and heated) discussions there on some of the forums (and also the version-control maillist, when it still existed). In April 2003 the CM Journal had its first issue devoted to the topic of Agility and the following month gave birth to the regular "Agile SCM" column. Somewhere near the end of 2004, there was a small "spurt" in articles on the subject (by authors other than articles and presentations by Steve, Brad, and Rob, and the annual CM Journal issue devoted to that particular subject). Several SCM tool vendors strarted to enter the SCM+Agile arena at that time and offered whitepapers and marketing geared towards an Agile audience. Since 2005, interest in "Agile" SCM has been growing a bit more quickly, no doubt due to the popularity of the "Agile" buzzword becoming more mainstream and making its way into more organizations and SCM tools marketing. A collection of links on the CMWiki to Agile SCM Articles chronicles some of this history at http://cmwiki.com/AgileSCMArticles. Also in 2005, the greater project management community began to build momentum toward embracing Agile techniques and values, and their manifesto-like Declaration of Interdependence (DOI) was born. Since software CM has close ties with both project management and development, the DOI helped strengthen connections between CM with agile and project management, and Scrum is quickly becoming the most widely adopted Agile method. Increased economic trends towards globalization have also increased the focus on collaboration & feedback across geographically dispersed sites. And the subject of 'scaling' agile methods become the most popular in the Agile community during 2005 and 2006. So it is clear that much more "Agile SCM" history no doubt remains to be written. What is Agile SCM? "Agile" names a family of methods (rather than one particular method), that includes Feature-Driven Development (FDD), Scrum, Extreme Programming (XP), Crystal Clear, DSDM, and others. Some of the various agile methods have very significant differences, but they all share the common values and principles of the Agile manifesto. Very often people use "Agile" as a synonym for XP and/or think that all agile methods are more-or-less like XP (because XP is what they typically hear the most about, and often has the most "attitude" to go with it). FDD and XP for example are markedly different, yet both share the values and principles espoused by the Agile Manifesto. In addition to holding common "Agile" values and principles, much of the theory and application behind Agile methods has its roots in the principles and techniques of Lean Production and the Theory of Constraints or TOC (including Critical Chain). These days, Six Sigma has fashioned a "merger" with Lean called (surprise) "Lean Six Sigma" (or just "Lean Sigma") that has paved the way for certain aspects of Six Sigma to "leak into" what it means for "CM" to be Agile. Agile SCM is not CM-Lite! To reiterate: Agile SCM takes nothing away from traditional SCM but seeks to achieve the same results in perhaps a slightly different manner while remaining true to the basic principles of SCM. So it builds upon traditional SCM and still contains the traditional SCM non-development activities of configuration planning, identification, control, status-accounting, audit & review, build & release management, and the corresponding process for managing those activities. Agile SCM does however inject the agile mind-set (and some would say paradigm-shift) into the discipline of CM. With that, comes an emphasis on flow and throughput of the project value-stream, and operating in service to that and to those who create value. Sometimes this has led to the slogan "Add nothing but value; remove nothing but waste!" when it comes to any from of process change or improvement in a Lean/Agile environment. One way in which the "mind-set" can manifest itself in SCM is in emphasizing "flow" more than "discrete events" (e.g., rigid baselines, and authorization/access controls), and treating the integrated "whole" as greater than the sum of its separately assembled parts. This can be difficult for many to adopt, particularly when it comes to practices like continuous integration and test-driven development using fine-grained tasks and many commits and integrations during the lifetime of the complete implementation of a requested feature, fix or enhancement. Agile Manifesto
We propose some equivalents or alternatives that add value to SCM. Individuals and Interactions suitably supported by Processes and Tools One view of agile methods is that it is a license to hack and requires less discipline than traditional methods. In fact the reverse is true - agile methods typically require greater discipline and skills than traditional methods. A key tenet of Lean methods is that in order to "move fast" you can't afford errors and problems and thus need to be rigorous. Applying this to SCM suggests that better understanding of SCM principles and tool usage by individuals and encouraging them, or making it easier, to do the right thing, is better than enforcing the process and absolutely forbidding the wrong thing. Working Software and CM Processes over Comprehensive Documentation Applying this also to the system being produced, we seek to automate as much as possible the production of supporting documentation (such as traceability reports). Information should not be repeated, and there should be a single master version. Customer Collaboration over Contract Negotiation We value transparency and traceability that is maintained by the tools without overburdening the practitioners Responding to Change over Following a Plan Agile Principles We have selected and adapted those that we consider the most relevant.
Who are the Customers of SCM? Orderly flow of change & evolution Systems that do not consider their evolution tend to become brittle and fragile - resistant to change. Activities such as refactoring can seem like unnecessary overheads, and yet their long term worth has been proven to many. Software must evolve gracefully, which requires supporting practices such as unit and acceptance test frameworks. Do your SCM processes have equivalent frameworks so that process can evolve in a well supported manner? Repeatability, Reproducibility, Traceability Traceability should be something that can satisfied at the touch of a button with information collected unobtrusively - not at the cost of manual reporting and cross referencing, or of significant extra effort on a as part of their daily work by developers. The 3 Pillars of (Vetruvian) architecture
These classic principles have influenced architects through ages, including Louis Sullivan, Le Corbusier and Mies van der Rohe with equivalent statements of "form follows function". As suggested by Jon Zingmark ([14]), the notion of venustas is often neglected. One of the requirements is short lead-time in delivery of software which calls for more focus on what you are supposed to deliver than on how you deliver it. We should aim to abstract the principles as much as possible and to automate the low levels in order to take care of venustas as close to the customer needs as possible. Aspiring to be Configuration Directors rather than Configuration Managers
Thus we can manage configurations of CIs, but we work with other people in the development team to direct the overall configuration and delivery according to CM requirements. What can we do as SCM professionals to direct our teams to achieve SCM principles in an agile manner, without seeking to control every last action? What training, education, inspiration, vision and support are necessary to achieve this? How can we empower the team members and let appropriate organization emerge from within the team and yet satisfy the traditional requirements of CM. The challenge is to get really involved with the team and work as part of the whole effort. This is something that experienced CM professionals have long been doing, but we all know how easy it is to slip back into a somewhat "ivory tower" mode, where we can almost be viewed as adversaries of the development team, people who "get in the way" of them doing their job. Conclusions about Agile SCM, and Next Time - Part Deux! The term "Agile" and the ideas behind it are no better or different from other labels (often called "fads") like Object-Orientation or [software/design] Patterns. They had lots of hype and buzz and they had some legitimate improvements to contribute to the state of the practice (even if the ideas themselves weren't new - that's not necessary in order to have great impact/influence). But once everything was all "hyped out" they faded into the woodwork, as a natural, acknowledged, part of the fundamental knowledge we should use and apply everyday. Many tools/vendors are already headed in that direction, and have recognized the trend foretold by Tom Friedman (The World is Flat), Peter Fingar (Extreme Competition) and others like Dan Pink, John Seely Brown, and more. With CollabNet, MS VSTS and Rational Jazz, the emphasis is on connecting and collaborating. Ways of doing software development and CM that fail to acknowledge that, and at least the first five of what Steve McConnell calls the Ten most important ideas in software engineering are going to have a tougher go of things than they have in the past. As to whether or not "Agile CM" legitimately exists in its own right, that is determined by the people who end up actually doing it, and we count ourselves as well as other contributors to CMCrossroads as amongst the vanguard (although some would call it "good practice" as opposed to "Agile"!). Just as there are many different "styles" of architecture, and each has its appropriate context and use, so too are there different "styles" of CM, each with its appropriate context and use. There is more than one way (style) of doing "good" CM (and many more ways of doing it badly), and not all "good" ways will have the same "style", nor should they. The proof of the pudding, as ever, remains in the eating, and we thus welcome contributions/comments as to our success or otherwise of our efforts so far! Next time we will be looking at the application and relevance of ideas from Lean Development, TOC, Six Sigma, and will also consider applying agile ideas to Change Control and CCB aspects of CM, as well as Value based software engineering (VBSE) References: [13] Myself and Other More Important Matters, by Charles Handy, Arrow Books, 2007 (ISBN 9780099481881). [14] Private email by Jon Zingmark. Robert Cowham has been in software development for over 20 years in roles ranging from programming to project management. He continues his involvement in development projects but spends most of his time on SCM Consultancy and Training. He is the Chair of the Configuration Management Specialist Group of the British Computer Society, has a BSc in Computer Science from Edinburgh University and is a Chartered Engineer (CEng MBCS CITP). You can reach him by email at rc@vaccaperna.co.uk Steve Berczuk is a Technical Lead for an Agile Software Development consulting company. He has been developing software applications since 1989, often as part of geographically distributed teams. In addition to developing software he helps teams use Software Configuration Management effectively in their development process. Steve is co-author of the book Software Configuration Management Patterns: Effective Teamwork, Practical Integration and a Certified ScrumMaster. He has an M.S. in Operations Research from Stanford University and an S.B. in Electrical Engineering from MIT. You can contact him at steve@berczuk.com.
Set as favorite
Bookmark
Email this
Hits: 10591 Trackback(0)Comments (1)
|
| Last Updated on Thursday, 23 July 2009 12:54 |

[Note that this article was first published in the May 2007 issue of the CM Journal] Given the theme of this month's CM Journal we would like to revisit our definition of Agile SCM. In our earliest articles on the topic, we defined Agile SCM as "the pragmatic application of sound CM principles & practices in accordance with Agile values, using Lean thinking, to serve the needs of the business!" ([1][2]) We wish to elaborate what that means in terms of SCM for Agile development, but even more importantly in terms of how we should apply Agile, Lean and their related principles to SCM processes and procedures.
