Software Configuration

A Guide To Software Configuration Management

Summary:

Most enterprises need to manage change in three key areas: custom developed corporate software; packaged application suites and related customizations; and the Web. In many cases, it is advantageous to manage them all together ó application code, web content and digital assets ó hence the umbrella term of Enterprise Change Management or ECM. The changes generated in any of these areas of development invariable ripple through the entire organization. Change can be made manageable with integrated systems for software configuration management (SCM) which can include packaged application change management, and web content management (WCM). Software Configuration Management is the ability to control and manage change in a software project.

Body:

Software configuration management (SCM) solutions provide a wide array of benefits for companies across all industries. In fact, a survey performed by industry analyst firm Forrester claims that companies who don’t use automated SCM solutions, and instead choose to manage software changes in a manual or ad hoc fashion, experience problems such as poor software quality, dissatisfied customers, higher IT costs, and loss of business continuity due to production downtime. Change is inherent and ongoing in any software project. The ability to track control such changes in a proper manner form the basis of a good software project. Software Configuration Management tries to bridge this gap by defining a process for change control. Change Management defines processes to prevent unauthorized changes, procedures to follow when making changes, required information, possibly workflow management as well. Change management is orders of magnitude more complex than version control of software. Software configuration management must be practiced for any software system from the moment any work on the software system begins to when support ceases for that system.

The goals of SCM are generally:

  • Configuration identification – Identifying configurations, configuration items and baselines.
  • Configuration control – Implementing a controlled change process. This is usually achieved by setting up a change control board whose primary function is to approve or reject all change requests that are sent against any baseline.
  • Configuration status accounting – Recording and reporting all the necessary information on the status of the development process.
  • Configuration auditing – Ensuring that configurations contain all their intended parts and are sound with respect to their specifying documents, including requirements, architectural specifications and user manuals.
  • Build management – Managing the process and tools used for builds.
  • Process management – Ensuring adherence to the organization’s development process.
  • Environment management – Managing the software and hardware that host the system.
  • Teamwork – Facilitate team interactions related to the process.
  • Defect tracking – Making sure every defect has ‘traceability’ back to the source.

With the introduction of cloud computing the purposes of SCM tools have become merged in some cases. The SCM tools themselves have become virtual appliances that can be instantiated as virtual machines and saved with state and version. The tools can model and manage cloud-based virtual resources, including virtual appliances, storage units, and software bundles. The roles and responsibilities of the actors have become merged as well with developers now being able to dynamically instantiate virtual servers and related resources.

Benefits for project leaders

When you automate the hand-offs related to changes, you achieve faster code turnover, shorter development cycles, easier adaptability to market changes and better use of an individual developerís special skills. You are able to:

  • Account for and report the progress of development efforts
  • Prevent unauthorized access to assets
  • Coordinate, track and manage change activities

Benefits for developers

Developers have concerns that are different from those of management. Managing change prevents these common day-to-day aggravations that developers face in ad hoc team development:

  • What happened to this piece of code? It worked yesterday!
  • Why isn’t that graphic on the website yet?
  • I thought there was a bug in this code, but now I can’t reproduce it.
  • What happened to the fix I added to this code last week?
  • Did the right changes go into the release?
  • What issues have been assigned to me for resolution?

Benefits for business managers

Executive management will see benefits for the business bottom line:

  • Ability to deliver revisions, updates and cross-platform versions, faster
  • Improved customer satisfaction
  • Less time wasted fixing old code
  • Confidence that web content is correct and the site is stable
  • Higher productivity of a valuable resource – talented developers
  • Confidence that each release addresses all the requested changes

When you use a version control system for your developed software, you can:

  • Establish a workflow for review, approval, and incorporation of changes (the control part)
  • Trace all changes to your baseline system (usually created with the first production deployment) even when several developers are working on the code at the same time
  • Control who has access to the code, and the types of changes they can make
  • Use automatic identification features (usually a numbering system) that are provided to track the progression of changes to each area of your code. The formal name for this is configuration identification

That last bullet means that you can have several different versions of any part of your code and still be able to understand what you have. This helps when you are making a lot of enhancements that need to be tested separately before they are moved into production. It also means that if a new software bug is introduced, you have a way to trace back and find out which change in the code caused the bug. At that point, the code change can be rolled back to the working version while the bug is investigated and (hopefully) fixed.

To really do this right, there are also a couple of other things you will need to do:

  • Audit your configuration once in a while; compare what you have in your software environments with what is stored and identified in your version control system
  • Create a report of your audit findings

Overall, software configuration management saves you money. This happens because having organized and versioned code goes a long way towards preventing mistakes, re-work, and duplicated effort between multiple developers. The documentation provided by a version control system provides an automated means of communication between members of a development team, meaning fewer misunderstandings about who is working on what. All of this adds up to better productivity and cost savings. You can probably figure out that the best time to start software configuration management is at the beginning of development. If you haven’t done that, though, it’s not too late. There are some great open source systems out there, as well as many that will require an investment. Find a system, decide on a specific date/time, get your code organized, suspend any changes temporarily, and place all the code pieces into your version control system. With this baseline, some coordination, and a bit of effort, you can manage your code and be confident that changes are controlled and documented.

Reference websites:

ieeexplore.ieee.org,dbmaestro.com, seguetech.com,en.wikipedia.org, pvcs.synergex.com, ibiblio.org

Related Articles

What Is Software Testing?

Software Testing – The Tools Of The Trade

Mobile Application Development Trends

Let's Talk About Your Needs