2015 Trends in Configuration Management
Trends in Software Configuration Management discipline allow you to focus and redefine the standards set so far in working environments.
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.
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
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
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.
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.
- GitHub for Windows from GitHub.
- GitHub for Mac OS X from GitHub.
- SourceTree from Atlassian.
- Tower used by Google, Apple, Salesforce, Adobe, Amazon, Ebay, Yahoo …
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.
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.
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.
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.
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.
Jenkins shows the largest number of activities in the graphs. This system has numerous plugins that allow integrating external systems.
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.
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.
- 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.