2015 Trends in Configuration Management

Published June 30, 2015

Trends in Software Configuration Management discipline allow you to focus and redefine the standards set so far in working environments.

Introduction

The process of Software Configuration Management (SCM) should ensure the conditions for software development easy. A good definition of SCM process enables developers to work together and efficiently. The process includes tools, patterns and standards of use for SCM properly defined.

This paper shows the status of some tools that support the SCM from the data obtained from the following sources: Google Trends and StackOverflow.

The tools tested were selected from my experience working as a Software Configuration Manager. New tools may be included later.

Software Configuration Management Activities

The classic definition of activities described by Roger S. Presman in his book “Software Engineering: A Practical Approach” are:

  • Configuration identification
  • Change control
  • Status accounting
  • Configuration audit

A little more recent, Bob Aiello presents in his book “Configuration Management Best Practices” the following activities:

  • Source code management
  • Build engineering
  • Environment configuration
  • Change control
  • Release engineering
  • Deployment

Both definitions are correct in my opinion, each with its own focus. In this document Aiello’s will be used to show the tools analyzed according to their activity.

1. Source Code Management

1.1 Version control system

Systems analyzed: Subversion, Git, Mercurial, CVS.

Git shows a greater number of registration in both graphs. These values reflect the popularity and acceptance of this system of version control. Among the main features of this system are its integrity of information and speed.

1.2 Control of Roles and Users

Git is the version control system most used according to revised charts. Git does not comprise management of roles and user permissions within its features. Therefore these tools are adopted to ensure safety in source code repositories.

Tools analyzed: Gitosis, Gitolite.

Gitolite has the greatest records to perform the analysis. The high level of granularity of this system makes it a powerful tool when you want to establish the safety of source code repositories.

1.3 Work flow

Git-flow provides the recommended methodology using Git. The work flow smoothly adapts to different teams and projects regardless size or location. For more information about the flow the following link should be checked:

1.4 UI tools

UI tools analyzed:

Visual tools help to manage the source code to ensure high levels of usability in relation to the Git system. These tools allow all users to use, in a simple way, the benefits provided by the version control system. It also improves the process of integration into the team.

Tower and SourceTree are the tools that I recommend. The main features that support my decision are:

  • User interface friendly and intuitive.
  • Git-Flow integration as proposed workflow.
  • Integration with external systems and execute scripts.

Reference sites reviewed during the search: 10 Reference sites, Clientes para Mac OS X.

2. Build Engineering

2.1 Build tools

Construction tools allow you to organize dependencies and to run the necessary tasks to acheive the final software product.

Tools analyzed: Make, Ant, Scons, CMake, Maven, Gradle.

Maven has for some time with the highest popularity. Figures are largely due to the posibility to simply modeling the logic to be constructed. As a suggestion recommend not to lose sight of Gradle. This tool has been adopted by teams like Eclipse to make their buildings.

3. Environment Configuration

This area greatly depends on the project used and the characteristics of each development group. Therefore it has not been analyzed in the same way as the other ones.

In general the intention is to establish the same scenario: programming machines, test servers and final servers product. Each scenario should be configured the same packages, dependencies and applications in order to avoid errors during the testing and deployment.

As recommended elements two systems that help standardize and share settings work environments quickly and reliably shown: Docker y Vagrant.

Docker shows higher rates in the charts analyzed. Docker a version control system at operating system level. Docker uses the philosophy of Git but at a lower level. If you like Git you will like to use Docker. I recommend to review this tool.

4. Change Control

4.1 Projects management

In this area we have analyzed the project management systems.

Tools analyzed: Redmine, Jira, Mantis BT, Trac.

Jira and Redmine show higher levels in the analyzed graphs, both systems have excellent features. In my personal experience working with Redmine I have identified a very good adaptation (through plugins) with the other systems mentioned in the article.

5. Release Engineering

5.1 Continuous systems integration

Continuous integration systems allow, among other activities, to execute the following tasks: Night buildings, integration testing, documentation generation, statistical code analysis, reporting.

Tools analyzed: Hudson, Jenkins, Atlassian Bamboo.

Jenkins shows the largest number of activities in the graphs. This system has numerous plugins that allow integrating external systems.

6. Deployment

The deployment of the systems can be carried out manually, semiautomatically or fully automatic. Automatic deploys are frequently performed using continuous integration tools as described in the previous section.

Given the trends seen before (Git, SourceTree, Git-Flow) I would recommend Git-FTP for semiautomatically variants. This tool was described in the paper Cómo configurar Git-FTP en SourceTree, showing its benefits to the SCM process.

Manual deployment variants are made using classic FTP clients such as FileZila.

Final Thoughts

Trends in the SCM provide an insight of the behavior of the methods, tools and patterns. In this paper, the tools used in the process are thoroughly examined.

The highly relevant elements identified in the study allow us to establish a favorable environment for the development of software. An example of the combination of these systems is shown in Modelo de Gestión de Configuración con herramientas código abierto. Collaboration and communication among them is vital to the success of the group.

Working groups should select tools for the specific environment because there are many variants. However, keeping in mind these graphs during the selection of tools for software development environment will help raise productivity levels and reduce errors.

Significant Revisions

  • SHRIKRISHNA, H. (2015): Orchestrating Docker.
  • JOHN, F. (2012): Jenkins The Definitive Guide.
  • BOB, A. (2011): Configuration Management Best Practices. Practical Methods that work in the real world. Addison-Wesly.
  • PETER, S (2011): Software Build Systems. Principles and Experience. Addison-Wesly.
  • PAUL, M. (2007): Continuous Integration. Improving Software Quality and Reducing Risk
  • ROGER, S. P. (2005): Ingeniería de Software. Un enfoque práctico.
  • STEVE, B. (2002): Software Configuration Patterns: Effective Teamwork, Practical Integration. Addison-Wesly.
Published June 30, 2015