敏捷开发是一种促进整个项目生命周期中不断进化变化的概念框架。它在20世纪90年代中期发展起来,作为对“重量级”开发方法的反应。面向对象编程语言的发展和互联网的普及,对敏捷方法论的创建产生了强烈影响。
敏捷开发框架背后的原理包括:在过程开始时需求并不完全理解;没有软件能在第一次尝试中就完美构建;当使用新工具、技术和架构时,传统流程变得不可预测。敏捷开发代表了一种比标准的瀑布方法更灵活的开发方法。瀑布方法往往过于严格、僵化和微观管理。瀑布方法的单一迭代时间框架往往很长:从几个月到一年或更长时间。因此,瀑布方法缺乏对市场变化的响应能力,开发出的软件往往与市场需求的对齐程度不如预期。此外,由于在漫长的开发周期后同时对许多功能进行测试,发现的问题往往更难调试和修复,导致产品质量低于预期。
许多软件开发组织正在考虑转向敏捷开发方法,以提高产品质量,降低成本,并更快地响应市场需求。考虑这种转变的组织还应该考虑新开发模型对软件配置管理系统(SCM)的要求变化。
由于所有敏捷开发方法都涉及在整个软件开发生命周期(SDLC)中不断变化的需求和更短的开发迭代,与传统的瀑布方法相比,对SDLC中使用的各种工具提出了不同的要求,包括:
所有敏捷开发方法都要求并行开发功能。功能通常被分解成尽可能小的任务,以便每个任务可以被跟踪、集成和调试。AccuRev的SCM工具可以提供对每个任务所做的变更的可见性,并支持按任务而不是按单个文件工作,合并一个配置到另一个配置的变更,并在需要时撤销任务的变更。
由于敏捷开发鼓励频繁的提交,因此重要的是开发者在将代码集成到主线之前,对代码能够成功构建并通过单元测试有一定的信心。使用AccuRev,开发者可以在主线之外的隔离区域(例如,私有分支)进行私有提交,并在他们的私有工作区(例如,沙盒)构建代码,然后再将其提升(例如,提交)到主线。开发者可以本地测试和调试代码,只有在通过构建和单元测试后,代码才能集成到主线。这降低了集成构建失败的可能性。
在构建失败的情况下,能够回退到上一个良好构建是很重要的,这样其他开发者就可以使用一个干净的代码配置来进行他们自己的工作。回退到上一个良好配置允许一个工程师修复失败的构建,而其他团队成员可以继续他们的任务,并使用他们自己的私有构建验证工作。AccuRev提供了一个简单的机制来回滚到上一个良好的集成版本。
所有开发工作都从主线进行往往会引发混乱。这可以通过使用开发层次结构来缓解。开发层次结构简单地是依赖关系之间的层次表示,包括集成、质量保证和代码审查等过程步骤。每个层次结构的阶段都使用单独的代码配置。它是私有分支的自然扩展。
利用阶段性层次结构和私有版本控制可以增加每个层次步骤的代码稳定性。当变更从一个阶段推送到下一个阶段时,特定的变更以及整个系统都达到了更高的成熟度。可以采用连续多阶段集成来自动构建和测试推送到每个阶段的变更。AccuRev支持创建层次结构,提供对每个阶段变更的可见性,并使得阶段之间的合并变得简单。
由于敏捷开发方法的需求是由业务驱动的,并且可以在SDLC中随时更改,因此能够识别为特定功能所做的变更并将其从一个迭代中移除,重新定位到下一个迭代是很重要的。AccuRev支持重新定位功能,无需编写和维护执行操作的脚本。
敏捷开发方法专注于当前迭代正在开发的功能的简单设计,而不是设计一个将满足产品整个生命周期所有功能需求的架构。因此,代码必须定期重构,以使其更容易理解和重用其他功能。为了重构代码并仍然能够追溯变更历史,SCM工具必须支持文件和目录的重命名和移动操作,并将其作为元素历史的部分进行跟踪。AccuRev的代码重构支持无缝处理重命名和移动元素,并简化了合并过程。