|What is it?
||Configuration Management (CM) plays a central role to keep a development team synchronized. A classical definition can be found for example in CMMI for development: “The purpose of Configuration Management (CM) is to establish and maintain the integrity of work products using configuration identification, configuration control, configuration status accounting, and configuration audits.“Common configuration Management practices are:
- Identifying and organizing the configuration items (configuration items: work products that undergoes changes during the product lifecycle and needs to be maintained, e.g. software code, documentation, requirements, and more)
- Maintaining change requests and systematically controlling the changes to the configuration items
- Managing the status of configuration items
- Creating and managing product baselines (baseline: a set of specifications or work products that has been formally reviewed and agreed on, which thereafter serves as the basis for further development)
Relationship between versions of work products and baselines
|Lean / Agile Configuration Management (CM) Concepts
||The goals of applying lean and agile principle to CM are
- to reduce the development time by avoiding waste and delays in the development process,
- and to get fast feedback about the integration and quality of the product.
An important point to remember is that a lean configuration management process is also continuously adapted and improved. For the CM process to profit from the lean and agile software development principles, we should keep in mind the following aspects:
- Add support for parallel multiple development branches, because large programs will be organized in a set small agile teams.
- Avoid centralized Change Control Boards (CCB) that control all changes – Instead control non-strategic decisions on changes in the distributed organization of Scrums and using the cadence of the Sprints. Reserve centralized decisions for changes that impacts the whole program or organization.
- Let the agile team assumes the CM role instead of a dedicated Configuration Manager. The daily management of configuration items can be handled by the self-organizing team, while the Configuration Manager at the program level defines enterprise-wide aspects such as a CM strategy and CM tools, and support the teams when needed.
- Use automated tools – Automated continuous integration helps to reduce the integration and testing delays and allow quick feedback about the product quality.
- Continuously observe and adapt the CM tools and process. For example, avoid complex branching or baselining mechanism if your team does not need them, or observe where long build times are slowing down the team and improve these procedures.
This describes the role of the Configuration Manager at the Project or Agile Team Level. The Configuration Manager will typically:
- Adapt the CM Plan with assistance from the (agile) team, the IT project manager or Scrum Master. Communicate the CM Plan to the team.
- Ensure team compliance with CM Handbook and CM Plan.
- Manage the CM System and the Configuration Libraries
- Identify the configuration item,
- Control configuration
||  Configuration Management Best Practices: Practical Methods That Work in the Real World – Bob Aiello, Leslie Sachs – Addison Wesley Pub Co Inc (10. August 2010)
 Practical Perforce von Laura Wingerd von O’Reilly Media (25. November 2005). This book describes in particular branching and merging in agile environments.