There are now greater demands on software developers to produce better products at a quicker pace. Understanding the driving forces behind these IT trends is the first step in meeting the demands.
Successful companies understand that evolution and adaptation of business processes are essential for survival. It's a reality facing nearly every segment of business every single day—and IT, controlling many of the core processes that run today's enterprises, is the central driver for change. Faced with ever-growing, market-wide pressures, IT teams are seeking solutions from software configuration and change management vendors to meet the rapidly evolving needs of their businesses. Graduating from simple versioning tools to an enterprise software configuration management (SCM) solution could mean the difference between success and failure.
Surviving the Market
According to industry analysts, IT development teams must meet the following requirements to survive the next five years:
- Deliver quality, bug-free code
- Reduce complexity around integration
- Take the costs out of security
- Make innovations more timely, more compelling, and less costly
- Offer software at costs commensurate with the benefits received and measured by relevant metrics
Quality software that is delivered on time and works as intended is an absolute expectation, not a nebulous goal. To meet this demand, IT must commit to every stage of the design, development, and deployment lifecycle of their products.
So what can IT do to survive in this complex and demanding marketplace?
Ever-improving SCM products are addressing critical development needs of developers, IT managers, and CIOs by doing the following:
- Helping IT organizations reduce spending and improve service
- Addressing the demand to more tightly align IT with business needs that are often driven by internal governance issues and external regulatory and standards compliance
- Reducing the complexity of integrating the work of geographically distributed development teams who are working in multi-platform development environments
- Simplifying the development process associated with complicated applications
- Providing a better methodology for reusing artifacts; meeting shorter development cycles; and controlling and securing fast, reliable, and remote access
- Meeting the increased demand for greater administrative visibility into IT by providing a system of actionable metrics, offering role-based views of all application development and maintenance projects, and enhancing accountability standards
Savvy, forward-looking IT organizations have already adopted and are benefiting from the use of robust, integrated SCM products to meet this ever-increasing demand to adapt, control, streamline, monitor, and improve IT business processes.
Just Using Version Control? You May Be Hurting Yourself
There is still a tendency among some in IT to view development as a single, monolithic stage rather than accept the fact that software development should be managed as a set of distinct, identifiable stages. These developers ignore the proven benefits of adopting a more comprehensive, process-oriented SCM solution. Working with version control alone results in the lack of visibility and management of IT business processes, people, and assets; limited regulatory and standards compliance; a slower time to market; increased business disruption due to software defects; and lower return on investment (ROI). These deficiencies are all byproducts of ignoring the benefits of process management in application development.
IT teams and individual developers who are finding themselves frustrated by today's complex, competitive environment must objectively evaluate their approach to the development process and the needs of their business in general. The first step in this evaluation process is recognizing the limitations of version control in managing the software development lifecycle. A version control system is an excellent tool for keeping track of versions of files. It is woefully inadequate in providing the infrastructure for automating and enforcing software development best practices. The second, more critical step is accurately analyzing what an organization needs—and wants—if it is to survive and grow.
Version Control: Understanding Its Place in the Development Lifecycle
Version control is just one element in managing the design and deployment process of software. At its most basic level, version control provides a "history" of a file or a group of files, keeping track of who changed what and when. Should a bug appear in a program, version control allows the source code to be inspected to discover which change or set of changes caused the error. Changes can be undone—temporarily or permanently—by having the version control software recreate a previous version of some file or files.
Version control also allows for management of conflicting changes—for instance, when one developer deletes part of a file that another developer wants to keep, or two developers edit the same lines of code in the same file. A version control system can keep track of these problems and, in select cases, help with a resolution.
Advanced version control products serve as "gatekeepers," tracking who is working on what at the development check out/check in, merge, and promote levels. This gatekeeping requires a highly manual oversight and approval process, creating bottlenecks and making it very "people-intensive." The cost of development and lack of efficiency can greatly increase over time, ultimately affecting the ROI of projects. In addition, version control products provide few, if any, accountability and traceability features, leaving a huge gap for regulated firms. Finally, many version control products need constant code workarounds, external plug-ins, and continual revisions in an attempt to keep up with software development needs.
While many version control tools may be adequate for simple, one-off development projects, their deficiencies in meeting the requirements of complex projects and diverse development environments are clear.
Figure 1 below compares version control and enterprise SCM features.
Figure 1: Compare the benefits of SCM over version control. (Click image to enlarge.)
Enterprise SCM solutions take over where version control products leave off, providing greater accountability and requirements management, more insight into the development process, increased automation, and better support for multi-team development. These features enhance productivity, decrease errors, and increase ROI.
Enterprise Software Configuration and Change Management: Moving Up
Version control tools address only one very limited aspect of the software development lifecycle. In today's highly diverse, competitive, and demanding IT environment, these tools simply fall short. Fortunately, the software configuration and change management environment has significantly evolved, and powerful SCM solutions are available. For developers and IT teams, finding the best SCM solution is a matter of evaluating needs, adopting a process-focused strategy, and assessing the cost-to-benefit ratio.
In selecting an enterprise-grade SCM solution, a series of simple questions can help define evolving requirements:
- Is there a defined, repeatable, automated process for promoting application components to their respective environments (e.g., testing, QA, and production)? If so, how is the process monitored and enforced?
- Do your applications contain components that reside on a variety of platforms?
- Do you need to manage developers or development teams spread out geographically?
- What method exists to monitor and control who is working on what objects and where the objects are in the lifecycle?
- How is parallel development managed?
- How are application changes distributed to production? Can it be done automatically?
- Is there a defined process for users to request changes and get projects approved to implement their requests?
- Are you subject to internal and/or external regulatory/audit requirements (e.g., Sarbanes-Oxley, ITIL, CMMI, Basel II, HIPAA, etc.)?
Most IT departments and their chosen enterprise-grade SCM products should be able to handle all of these issues.
Adopting a Process-Focused Selection Strategy
After this evaluation, a fairly straightforward strategy for selecting the correct SCM solution can be employed.
- Based on your development environment, decide which SCM features are important now; however, keep in mind that future needs may evolve and a tool that has more features than you might currently need could be more advantageous over the long term.
- Determine the configuration of your SCM solution (i.e., which source code, data, documentation, etc. will be stored where; who will have access to what; how distribution of objects will be handled at various levels).
- Make sure that all users are aware of and ultimately accept the goals and processes that your SCM is designed to support.
- Determine whether you will support multiple platforms, what they are now, and what they might be in the near and distant future.
- Assess where your development teams are located and how quickly and easily they will access the files and objects needed.
- Evaluate each vendor's responsiveness to your requirements and their ability to provide the best ongoing support and service.
Refining your needs will help you identify a product that clearly fulfills your requirements.
Assessing the Cost-to-Benefit Ratio
Pressure to improve IT processes to meet the business demands for higher productivity and improved time to market, while facing budget constraints, is now a fact of life for IT. SCM products offer effective solutions to help alleviate much of this pressure. Demonstrable benefits of adopting and properly using an enterprise software configuration and change management solution include these:
- Greater visibility and management of IT business processes, people, and assets
- Ongoing regulatory and standards compliance
- Faster time to market
- Reduced business disruption due to software defects
- Higher ROI
Numerous industry case studies provide clear evidence that the outlay for an enterprise SCM solution easily outweighs the costs—and headaches—associated with losing data, releasing "buggy" software, and failing to meet release deadlines and regulatory standards. For many development teams, the expense of adopting the correct SCM product can often be offset by the savings in production time and reduction in errors during the very first project.
SCM—A Better Alternative to Simple Version Control
Today's software development process must evolve to meet business demands. Simple tools that were originally designed to fulfill relatively isolated software development tasks and projects are at the brink of, at best, insignificance and, at worst, obsolescence. For all but the simplest of projects, the capacity of version control tools to meet current business and rigorous development requirements has been exceeded. Enterprise SCM solutions offer the means for aligning IT process with overall business needs.
Daniel Magid is the president and CEO of Aldon and a recognized authority on enterprise software configuration and change management. He has written a variety of articles for leading IT publications and is a regular speaker at technology conferences. Under Magid's leadership, Aldon has received broad industry recognition as the clear leader in the enterprise change management space. Before becoming president, Magid held several executive sales and marketing management positions at Aldon. Prior to Aldon, Magid worked at IBM for five years in both marketing and selling midrange computer systems for the General Systems Division.