Click here to Skip to main content
Click here to Skip to main content

Software Configuration Management (SCM) Considerations for Agile Development

By , 9 Jan 2008

Editorial Note

This article is in the Product Showcase section for our sponsors at CodeProject. These reviews are intended to provide you with information on products and services that we consider useful and of value to developers.

This is a showcase review for our sponsors at The Code Project. These reviews are intended to provide you with information on products and services that we consider useful and of value to developers.

Agile Resources

Free Agile Webinar:

Agile White Papers:

square.jpg

Introduction

Agile development is a conceptual framework that promotes evolutionary change throughout the entire life cycle of the project. The definition of Agile software development evolved in the mid-1990s as part of a reaction against "heavyweight" development methods. The development and adoption of object-oriented programming languages and a new emphasis on speed-to-market resulting from the increasing popularity of the Internet had a strong influence on the creation of agile methodologies.

Principles Behind the Agile Development Framework

  • Requirements are not fully understood at the beginning of the process.
  • No software is built perfectly on the first try.
  • Traditional processes become unpredictable when new tools, technologies, and architectures are used.

Agile development represents a new, more flexible approach to development than the standard waterfall method that had been the norm for software development. The waterfall method tended to be too heavily regulated, regimented, and micromanaged. With the waterfall method, the time frame for a single iteration tends to be long: anywhere from several months to a year or more. As a result, the waterfall method lacks the ability to react to changing market needs and the resulting developed software is often not as closely aligned to market requirements as desired. In addition, since the testing is performed for many features at once after a long development cycle, it is often more difficult to debug and fix issues that are found, resulting in lower-than-desired product quality.

rectangle.jpg

Many software development organizations are considering moving to an Agile development methodology in order to increase product quality, decrease costs, and respond more quickly to market needs. Organizations considering such a change should also consider the changing requirements that the new development model places on the software configuration management (SCM) system.

AccuRev Supports SCM Needs for Agile Development

Since all Agile development methodologies involve requirements that change throughout the SDLC and shorter iterations of development, different demands are placed on the various tools used during the SDLC than in the traditional waterfall method, including:

Feature-oriented Development

All Agile development methodologies require that work on features be done in parallel. Features are usually broken up into the smallest sized tasks possible so that each task can be tracked, integrated, and debugged. AccuRev's SCM tool can provide visibility into changes made for each task and support the ability to work by task instead of by individual file, to merge changes from one configuration to another, and to revert changes for a task if needed.

Sandboxing with Private Build Before Check-in

Since Agile development encourages frequent check-ins, it is important that the developer has some confidence that the code will successfully build and pass unit testing before he integrates it into the main code line. With AccuRev, developers can utilize private check-ins at an isolated area off the main line (e.g. a private branch) and build the code in their private workspace (e.g. sandbox) before promoting it up (e.g. checking it in) to the main code line. The developer can test and debug the code locally, and only after passing the build and unit tests can the code be integrated into the main code line. This decreases the likelihood that an integration build will break.

Ability to Revert to Last Good Working Version when Integration Testing Fails

In the event of a build failure, it is important to be able to revert to the last good build so that other developers have a clean configuration of code to use for their own work. Reverting to the last good configuration allows one engineer to fix the broken build while the rest of the team can continue working on their tasks and verifying the work with their own private builds. AccuRev provides an easy mechanism for rolling back to the last good integration version.

Staging Hierarchy

Having all development work from the main line often causes chaos. This can be mitigated by use of a development hierarchy. A development hierarchy is simply a hierarchical representation of the dependencies between groups that includes process steps such as integration, quality assurance, and code reviews. A separate code configuration is used for each stage in the hierarchy. It is a natural extension of private branching. Utilizing a staging hierarchy along with private versioning gives the added benefit of more code stability at each step up the hierarchy. As a change is pushed from one stage to the next, the particular change as well as the system as a whole reach a higher level of maturity. Continuous multi-stage integration can be employed to automatically build and test changes as they are pushed to each stage. AccuRev supports the creation of a hierarchy, gives visibility into the changes at each stage, and enables straightforward merging between stages.

Ability to Revert and Retarget Changes

With Agile development methodologies, requirements are driven by the business and can be changed throughout the SDLC. For this reason, it is important to be able to identify the changes made for a particular feature and remove the changes from one iteration, retargeting them to the next. AccuRev supports retargeting features without the need to write and maintain scripts to perform the operations.

Refactoring Support

Agile development methods focus on a simple design for the features being developed during the current iteration and not on designing an architecture that will meet the needs of all features for the lifespan of the product. For this reason, code must periodically be refactored to make it easier to understand and reusable for other features. In order to refactor code and still be able to trace through the history of changes, an SCM tool must support file and directory rename and move operations, as well as track the operations as part of the element's history. AccuRev's code refactoring support seamlessly handles renaming and moving elements and simplifies the merge process.

Geographically Distributed Development

While Agile development traditionalists advocate centralization of all developers to promote effective communication, some methods recognize the need for specialized talents that can be realized only by utilizing geographically distributed development resources. Even with Agile development methods such as XP or Scrum, due to the distributed nature of software development organizations, it is not always possible to assemble cross-functional teams without involving team members at more than one location. For these scenarios, it is important that the SCM tool provides the capabilities of the distributed team to work together from a central repository. With AccuRev, teams around the world can work together and collaborate as if they were a single co-located team.

Download Free AccuRev Evaluation Kit

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

AccuRev

Unknown
AccuRev is the leading provider of process-centric software configuration management (SCM) with a best-of-breed approach to application lifecycle management (ALM). This approach enables unlimited, adaptable, and compliant process models, offering customers maximum flexibility and control.
 
The AccuRev interface, with advanced visualization, process automation, and artifact traceability, improves the visibility and management of parallel and distributed development for geographically distributed and outsourced teams to remain agile and competitive. AccuRev software ensures optimal team collaboration and software asset reuse. Additionally, AccuRev software provides native support for the most commonly used software development methodologies including agile, iterative, and waterfall lifecycles.
 
AccuRev supports open standards and SOA-based development tool interoperability across Microsoft Windows, Linux, and UNIX platforms. As an active participant in the Eclipse Application Lifecycle Framework (ALF) project, AccuRev is committed to reducing the cost and complexity associated with the integration of multiple vendor tools throughout the software application lifecycle. This open strategy provides for maximum customer control, lowest total cost of ownership, and a rapid ROI, all without vendor lock-in.
Group type: Organisation

1 members


Comments and Discussions

| Advertise | Privacy | Mobile
Web04 | 2.8.140421.2 | Last Updated 9 Jan 2008
Article Copyright 2008 by AccuRev
Everything else Copyright © CodeProject, 1999-2014
Terms of Use
Layout: fixed | fluid