Software Configuration Management 101

Not to bore you with generic definitions and explanations, just keep this principle in mind: configuration is a particular arrangement or pattern of a group of related elements. The term “related” is probably the most important in this definition, emphasizing the relation and interaction of these elements at a particular point in time.

Configuration management as a concept traces back to the manufacturing of a wide range of goods and products. Ultimately, managing configurations meant having a solid vision of the end product supported by a documented list of its details and the way they “interact”. Therefore, to alter the end product, a manager would need to change the documented description, and thus, directly influence production accordingly.

This simple principle has made its way to software development for an obvious reason — a need to have constant access to the latest version of a given configuration and be sure that none of the other elements conflict. This makes configuration management a small, but one of the most important parts of managing changes in all types of projects/software.

We believe in simplicity, so enjoy this real-life analogy of a project configuration management challenge.

Welcome to our imaginary home repair project!

Step 1. Identifying and creating a basic project configuration

Simple as one-two-three: identify variable components of your project and think which ones require your control over them, and which don’t.

Initial product configuration

(your final repaired home aka product). Remember the principle of “related things”? In our home repair project, the final result would be documented in the design project, describing placements of different decorative/functional elements, such as cable wires for lighting elements, TVs, and other appliances in relation to each other in a common space/environment. Decorative details, that won’t influence functionality don’t matter in this case, but electric wiring diagrams and a list of construction materials will surely matter. Why? Well, if at some point you decide to add another electric socket for your entertainment system, it might be too late to ask your contractor to do it and impossible to change the planned infrastructure.

Initial project configuration

(repair works aka project). This stage includes things like a list of requirements from your contractor related to operations (legal time limitations for making noise in residential areas, large vehicles carrying construction materials parking regulations, your neighbor’s repair works schedule because you’ve decided to share a mechanical screed, etc.). All these factors may vary during the project implementation and must be tracked on time to avoid damage.

After you’ve identified your constants and variables you know which elements require control and tracking for your project to succeed. Congratulations, you’re ready to shape your basic configuration.

  1. Assign simple and clear names to all configuration elements. In case their count grows to hundreds, document your naming principle.
  2. Define where and how you will store the documentation and physical items (ex. Kitchen tile samples), and place all these elements in the defined storage (ex. garage). We’ve done this before — don’t forget to document the location of each element in your garage, label the boxes if needed for faster access.
  3. Grant access to relevant materials to everyone, who will be using them (ex. give your contractor a key to the garage or share a document with a list of materials he might need). Sorry, repeating the action — document the list of people who have access to certain elements in the most detailed way possible.

Bingo, your basic configuration is ready! Just notify all the parties in interest and make sure they understand the guidelines.

Step 2. Developing a project configuration management plan.

The basic configuration is great, however, the project will start changing at the very beginning of its active implementation. The goal of this step is to define the way you’ll manage and control these changes.

We are back at our home repair site.

Well, if you decided that the entertainment center is an absolute must, you’ll need to notify the designer of this new requirement, he will need to approve with an electrician, if approved, the electrician should document this new electrical outlet in the diagram, approve it with you to avoid misunderstandings, and place the new version of a diagram to the agreed storage. Don’t forget to label this version as “new” + dd/mm/yy, and label the previous version as “old” + dd/mm/yy altered. Correct, nothing goes to waste. Now, make sure you control all the updates in these diagrams regularly. This might sound too much for an electric socket, but when it comes to developing complex systems, any gaps in these steps might become mission-critical.

  1. Work with third parties in interest — your neighbors. Make sure they are informed about the process and have no objections regarding noise or construction dirt. Notify the contractor about the changes in case the need arises.
  2. Working with samples (testing features or configurations). Every time you bring a new kitchen tile sample from the store to show the designer, stack them on a dedicated “to review” shelf. Go over these samples with the designer regularly, get rid of the ones that don’t fit or are too expensive and place all the rest on the “final” shelf. This will be the place to look when making your final choice.
  3. Working with your configuration management plan. You have to decide who can make alterations to the plan (ex. family member), how will he or she implement these changes, and make sure that everyone involved in the project is notified on time.

Step 3. Controlling configuration during the project implementation.

No rocket science. Since you have identified the means of control (ex. Making calls, tracking box and shelf labels in the garage, etc.) now you have to put them into action, and perform corrective or preventive action on time if the need arises.

Managing rules should be defined for every configuration element/group of elements. Updating and changing them should be assigned to relevant responsible people. Controlling these people and changes should be scheduled and implemented via relevant means.

Originally published at https://ajustee.com.

--

--

--

Centralized Application Configuration Storage & Management Solution — https://ajustee.com

Love podcasts or audiobooks? Learn on the go with our new app.

Animating an Accordion in Salesforce Lightning

Overview of TMT Core Ecosystem

Real-Time Solutions for Last-Mile Connectivity

Use CameraX with Image Segmentation android project.

Medusa Hacktoberfest 2021

Less known Pandas groupby applications in Python

Controlling Python Async Creep

Quality (also a post mortem)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Ajustee

Ajustee

Centralized Application Configuration Storage & Management Solution — https://ajustee.com

More from Medium

AWS Certified Solutions Architect (Associate) Exam Journey and Tips — Part 2

Part 1: How Service Oriented Architecture Gave Birth to DevOps

microservices-vs-devops

A Deep Dive into Unit Testing

Deployment of Git and Github as Software Version Control System + Proof of Concept (PoC) Process of…