Characteristics of the Agile SCM Solution

[article]
Summary:
This article focuses on the characteristics of SCM solutions, tool, and environments that are necessary to for agile development to succeed, particularly about agile SCM striving to be as transparent and "frictionless", automating as much as possible.

In the last two columns we spoke about the people and process/practice characteristics of agile development, and of an agile SCM environment. This month, we would like to focus on the characteristics of SCM solutions and tool/environments that are necessary to achieve these goals, particularly about agile SCM striving to be as transparent and frictionless, automating as much as possible.

Around the turn of the century, (year 2k), we began seeing software projects that were attempting to try a new development approach called Agile. Most were implementing Extreme Programming, and their reasons were to reduce cost, improve software quality, better manage project risk, and to offer the business quicker functionality in the form of frequent releases incorporating smaller sets of change.

Since then I've been fascinated with the agile movement.  I began to study the SCM requirements created out of the agile movement. This list of features and characteristics is not intended to be a complete list of everything required, just the ones that are most important and somewhat different from traditional SCM.

Research was based on feedback from customers, participation on agile news groups, involvement with projects implementing agile methods and discussions with individuals in local user groups.  In this research I discovered 6 characteristics of SCM solutions that stand out as major discussion points for the agile community when it comes to SCM.  These 6 characteristics or features will provide the main focus of this article.

Frictionless Code Integration

Agile projects require frictionless code integration, which is defined in many ways in the SCM industry and accomplished by using a number of different features currently available on the market. In short:

  • It's the freedom to change code in your private workspace without being interrupted by the SCM tool. (Optimistic Locking, Concurrent Development, etc)
  • It's being able to work on your private workspace in a disconnected mode (off the LAN), and having the tools to reconnect your workspace later easily and quickly.
  • It's having tools available to quickly and easily synchronize your private workspace with the repository. Synchronizing involves the ability to automatically or interactively merge file changes.
  • When branching is required for the project, it's the ability to integrate changes from one branch to another in a quick and easy manner.

There are many tools on the market that provide flexible locking models. Some agile projects, in the interest of keeping things simple, prefer to have no branching, which eliminates the need for branch merging.  It really depends on how the project structures its releases.  When a project desires branching, it's important for an agile SCM solution to quickly and easily integrate changes from one branch to another. 

Remember the agile project's needs typically require off-line development (say on the bus on the way home), and thus the need to easily reconnect their private workspace to the repository.  This feature typically is a "refresh" type of function that resets the states of each component in the workspace, giving the Developer a sense for how much integration is required before committing code.

Refactoring Support

Agile projects change file names and directory locations quite often as they constantly simplify their code. This practice of simplifying and making the code cleaner is called Refactoring. SCM tools have traditionally struggled when supporting changing file and directory names and locations. People outside of the SCM community oftentimes don't understand the challenges of tracking file history with prior releases of code as the files are changing 

Agile SCM enables Developers to make quick and easy changes to their code with little friction, while keeping track of file and change history. The SCM tool should offer a solution that feels as simple as Windows Explorer or any other operating system CRUD operation.  Agile SCM solutions must enable the Developer to change their file names anytime they want and present them with an easy to understand interface to connect file history when and where appropriate.

Refactoring Support is probably one of the biggest challenges facing the SCM Tool market.  There are tool vendors that are working hard to better support Refactoring. I predict that over the next several years, Refactoring Support in the SCM Tools market it will be relatively commonplace. 

About the author

Brad Appleton's picture Brad Appleton

Brad Appleton is a software CM/ALM solution architect and lean/agile development champion at a large telecommunications company. Currently he helps projects and teams adopt and apply lean/agile development and CM/ALM practices and tools. He is coauthor of the book Software Configuration Management Patterns, a columnist for the CMCrossroads and AgileConnection communities at Techwell.com,  and a former section editor for The C++ Report. You can read Brad's blog at blog.bradapp.net.

About the author

Steve Berczuk's picture Steve Berczuk

Steve Berczuk is a Principal Engineer and Scrum Master at Fitbit. The author of Software Configuration Management Patterns: Effective Teamwork, Practical Integration, he is a recognized expert in software configuration management and agile software development. Steve is passionate about helping teams work effectively to produce quality software. He has an M.S. in operations research from Stanford University and an S.B. in Electrical Engineering from MIT, and is a certified, practicing ScrumMaster. Contact Steve at steve@berczuk.com or visit berczuk.com and follow his blog at blog.berczuk.com.

About the author

Steve Konieczka's picture Steve Konieczka

Steve Konieczka is President and Chief Operating Officer of SCM Labs, a leading Software Configuration Management solutions provider. An IT consultant for fourteen years, Steve understands the challenges IT organizations face in change management. He has helped shape companies’ methodologies for creating and implementing effective SCM solutions for local and national clients. Steve is a member of Young Entrepreneurs Organization and serves on the board of the Association for Configuration and Data Management (ACDM). He holds a Bachelor of Science in Computer Information Systems from Colorado State University. You can reach Steve at steve@scmlabs.com.

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!