Development will typically want to use the most recent working and tested state of the codeline rather than wait for a formal build and baselining activity that takes as long to baseline as it takes to complete a multiple development tasks.
Agile development will require what it deems the true construction portion of software development (namely build and test) to be as automated and integrated as possible so it can be executed as frequently and as quickly as possible. Development would be able to use the current configuration (latest baseline plus approved changes) as the basis for each development task. Additionally, rigorous build/test criteria would be allowed prior to each task-level commit, in order to preserve codeline integrity and stability while still enabling rapid integration and test feedback.
Key Agile Practices and Their SCM Implications
What are some of the key agile practices that organizations look to introduce? In a recent article, Peter Schuh identified a number of ways to add some agile without going to extremes:
- Automate and share the build process
- Implement a test framework and start writing unit tests
- Adopt a continuous integration process
- Plan and deliver in short iterations and small releases
- Identify and collaborate with your customer
- Manage your test data, don’t let it manage you
- Embrace collective ownership and share code
Let’s examine the impact that each of these has on SCM.
Automate and Share the Build Process
The build process is a core part of SCM. The fundamental SCM principles that apply are to always deliver a known reproducible build from a clean environment. This has a tendency to lead to a build master or build team producing the golden build and, thus, becoming a major bottleneck.