敏捷过程是为了使软件开发团队具有高效工作和快速响应变化的能力,而由17名著名的软件专家提出的。敏捷软件开发宣言由下述4个简单的价值观声明而成。
(1)个体和交互胜过任何过程和工具。虽然软件开发的三大法宝是方法、过程、工具。但是团队成员的合作、沟通和交互能力是比单纯的软件编程能力更重要。正确的做法是先致力于如何构建一个软件开发团队,然后再根据需要为团队配置项目环境(包括过程和工具)。
(2)可以工作的软件胜过面面俱到的文档。话虽是这么说,但是完全没有文档的软件也是一种灾难。
(3)客户合作胜过合同谈判。客户通常不会一次性把所有的需求都表达出来,所以需密切与客户联系,这样才能开发出让客户满意的软件。
(4)响应变化胜过遵循计划。软件过程应该有足够的能力及时响应变化。
根据上述价值观提出的软件过程统称为敏捷过程,其中最重要的是极限编程。
极限编程的有效实践。
(1)把客户作为开发团队的成员。
(2)使用用户素材。
(3)短交付周期。
(4)验收测试。
(5)结对编程。
(6)测试驱动开发。
(7)集体所有。每个成员都对全部代码的质量负责。
(8)持续集成。在软件开发过程中,应该不断的进行回归测试。
(9)可持续的开发速度。
(10)开放的工作空间。
(11)及时调整计划。
(12)简单的设计。不考虑未来的用户素材,在一次次的迭代过程中,项目组成员不断的变更系统设计,使之相对于正在实现的用户素材而言始终处于最优状态。
(13)重构。重构可以更好的优化系统的内部结构,但是不能过分依赖重构,不能轻视设计,那将会对整个软件开发造成不好的后果。
(14)使用隐喻。隐喻是把整个系统联系在一起的全局视图。
极限编程的整体开发过程。
首先,项目组针对客户代表i提出的“用户故事”进行讨论,提出隐喻,在此项活动中可能需要对体系结构进行“试探”。然后,项目组在隐喻和用户故事的基础上,根据客户设定的优先级制定交付计划。接下来开始多个迭代过程,在迭代期内产生的新用户故事不再本次迭代内解决,以保证本次开发过程不受干扰。开发出的新版本软件通过测试之后交付用户使用。
综上,以XP为代表的敏捷过程,具有对变化和不确定性的更快速、更敏捷的反应特性,而且在快速反应的同时还能保持可持续的开发速度,所以敏捷过程被广泛使用。