Every activity that contributes to the success of a project becomes integral part of the organization. Same is the case with Configuration Management. In every Software House today, SCM practices are applied in one form or the other. Thus we must understand where SCM activities fit in our organization, so that we can capitalize on them to further improve our productivity.
From activity perspective, Software Configuration Management can fairly be placed in the center of all project activities including Project Management, Development, Quality Assurance and Site Operations.
Software Configuration manager interacts with all of these different functional units of a software house, thus further emphasizing its importance in an organization.
General SCM Workflow
While keeping SCM definition in perspective, let’s go through the general workflow of Software Configuration Management activities that are carried out in a medium sized software house and how they are intertwined with Software Development activities.
SCM Workflow starts as soon as project management decides what new features are to be added to existing or new software in next iteration, depending upon whatever Software Development Methodology they are using.
Once new changes are decided, Developers start coding these changes into existing program by updating source code. They add new lines of code, add new third party components that are needed for new features, delete some redundant files and so on. At this stage, SCM ensures identification of new items that are added to the system. Controls access and permissions on these items between multiple developers, and records all changes applied to existing project source code.
While developers are coding these new functionalities, SCM requires that health of the changing source code is monitored at convenient intervals to make sure there are no surprises related to broken dependencies of software at later stages. In case there are some discrepancies, SCM ensures availability of change reports so that culprits can be identified.
Once development is complete, SCM further verify system state by executing unit and automated tests before handing the build to Quality Assurance for their consumption.
When QA has verified that current release is production ready, it again falls in the domain of configuration management, to configure the software product for prime time and hand it over to Site Operations, who deploy the product for end customers.
As you might have noticed, boundaries of Software Configuration Management overlap with all other engineering departments to some extent. In organizations where proper SCM practices are not implemented explicitly, SCM activities are still carried out, however in this case, individuals in other departments step-up to share these responsibilities.
For example, in such an organization, Project Manager would be ensuring complete execution of the SCM workflow i.e. handing over builds from one department to other till they are deployed on production, manages project dependencies etc.
Developers will ensure there are no conflicts submitted to the project source code, no dependencies are left out on their local machine and even resolve conflicts or revert back some source files in case they are mistakenly overwritten.
Without a configuration manager, executing Unit and Automated tests becomes responsibility of Quality Assurance team. Thus they ensure quality of the product, right from developers’ hands.
Site Operations in this scenario would apply final configurations to the build and deploy it on the production server.
At the end, it all depends upon time, monetary and space resources each organization has on its disposal, which would decide whether they need a specialized individual to take up SCM responsibilities, or to groom existing resources from other departments to take up these additional responsibilities.