Agile Resources

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.

Many software development organizations are considering moving to an Agile development methodology in order to better meet their 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 is done in parallel. Features are usually broken up into the smallest size 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 reaches 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 and retarget 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 and 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 a single co-located team.