Agile SCM: It’s All Related

  • , The Oregon Experiment , and A Pattern Language

  • The Hillside Group’s web site: www.hillside.net

SCM in Context

The pattern language for agile SCM starts with the basic idea of an Active Development Line . In essence, an Active Development Line is a codeline that has a Codeline Policy that permits frequent check-ins. If you have worked with a team developing software you might be concerned more about someone breaking the build because of a careless change than with how often code changes. While delayed integration does cause problems, your concerns about breaking the build will be valid. For Active Development Line to work you need to have other patterns in place to give you some confidence that the rapid changes will not harm to codeline quality too much.

To address the issues of build integrity, you want to be able to build the code before checking it in as well as test it. To build the code you need to have a place to put the code, a Private Workspace gives you a place to put the code, do your development, testing etc. To verify that the code builds, developers can do a Private System Build pre-check-in. And once the developers check the code in, it is built in integration environment using an Integration Build .

A Private System Build is a build that is as close as possible to the Integration Build (and official system build). Setting up a Private System Build can help you avoid issues caused by developers having a different approach to building that the Integration Build .

After each developer checks the code in, you will still need to integrate the code in a central place. To build the code in an integration workspace, set up an Integration Build which is the “official” build.

The first step in addressing testing issues is to define a Smoke Test that developers run pre-check-in. A Smoke Test is a basic test of the important aspects of the system. The Smoke Test that you run before checking in code covers essential functionality, and runs quickly. “Essential” and “quickly” are both concepts that you have to decide how to define for your project, but if your goal is an agile codeline, you don’t want a 1 hour smoke test. This leaves the issue of How do I really test the code? Unit Test and Regression Test address this.

A Unit Test is a low level, detailed test of interfaces that developers run on the code that they are working with. You can write your unit tests using a unit testing framework such as JUnit for Java code, cppUnit for C++ code, etc, but that is not essential to have unit tests.

A Regression Test is an exhaustive system level test that verifies that known problem have not re-appeared in the code. Construct unit tests based on known issues, or by an analysis of likely failure points. Always run the Regression Test after the Integration Build , or before checking code in to a codeline that you need to be stable.

Lastly, the Codeline Policy is a description of what procedures to follow before checking code in. A Release Line may have a more restrictive policy than an Active Development Line , for example.

The figure below shows how the patterns fit together. An arrow from pattern A to pattern B means, in effect, that pattern B is necessary to ‘complete’ pattern A. This is a structural relationship and does not have any defined implications about the sequence in which the patterns are implemented. The key thing is that you

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 bookSoftware Configuration Management Patterns, a columnist in The CM Journal and The Agile Journal at CMCrossroads.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 an engineer and ScrumMaster at Humedica where he's helping to build next-generation SaaS-based clinical informatics applications. 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.