最后,作为补充,我们再简单介绍一种新的开发流程:敏捷开发和极限编程。
2001年,为了解决许多公司的软件团队陷入不断增长的过程泥潭的问题,一批业界专家一起概括出了一些可以让软件开发团队具有快速工作、响应变化能力的价值观和原则,他们称自己为敏捷联盟。敏捷开发过程的方法很多,主要有SCRUM、Crystal、特征驱动软件开发(Feature Driven Development,简称FDD)、自适应软件开发(Adaptive Software Development,简称ASD),以及最重要的极限编程(eXtreme Programming,简称XP)。
极限编程是一套能快速开发高质量软件所需的价值观、原则和活动的集合,使软件能以尽可能快的速度开发出来并向客户提供最高的效益。XP在很多方面都和传统意义上的软件工程不同,同时,它也和传统得管理和项目计划得方法不同。这些方法在软件工程和其他管理活动中都有借鉴意义。
XP具有12个过程,只有完全使用12个过程才是真正使用了XP,只是简单使用了其中一个方法并不代表使用了XP。XP的12个过程如下。
— 现场客户(On-site Customer)
— 计划博弈(Planning Game)
— 系统隐喻(System Design)
— 简化设计(Simple Design)
— 集体拥有代码(Collective Code Ownership)
— 结对编程(Pair Programming)
— 测试驱动(Test-driver)
— 小型发布(Small Release)
— 重构(Refactoring)
— 持续集成(Continous integration)
— 每周40小时工作制(40-hour Weeks)
— 代码规范(Coding Standards)
下面是极限编程的有效实践。
完整团队XP项目的所有参与者(开发人员、客户、测试人员等)一起工作在一个开放的场所中,他们是同一个团队的成员。这个场所的墙壁上随意悬挂着大幅的、显著的图表以及其他一些显示他们进度的东西。
计划博弈是持续的、循序渐进的。每2周,开发人员就为下2周估算候选特性的成本,而客户则根据成本和商务价值来选择要实现的特性。
客户测试作为选择每个所期望的特性的一部分,客户可以根据脚本语言来定义出自动验收测试来表明该特性可以工作。
简单设计团队保持设计恰好和当前的系统功能相匹配。它通过了所有的测试,不包含任何重复,表达出了编写者想表达的所有东西,并且包含尽可能少的代码。
结对编程所有的产品软件都是由两个程序员并排坐在一起在同一台机器上构建的。
测试驱动开发编写单元测试是一个验证行为,更是一个设计行为。同样,它更是一种编写文档的行为。编写单元测试避免了相当数量的反馈循环,尤其是功能验证方面的反馈循环。程序员以非常短的循环周期工作,他们先增加一个失败的测试,然后使之通过。
改进设计随时利用重构方法改进已经腐化的代码,保持代码尽可能的干净,具有表达力。
持续集成团队总是使系统完整地被集成。一个人拆入(Check in)后,其他所有人负责代码集成。
集体代码所有权任何结对的程序员都可以在任何时候改进任何代码。没有程序员对任何一个特定的模块或技术单独负责,每个人都可以参与任何其他方面的开发。
编码标准系统中所有的代码看起来就好像是由一人单独编写的。
隐喻将整个系统联系在一起的全局视图,它是系统的未来影像,使得所有单独模块的位置和外观变得明显直观。如果模块的外观与整个隐喻不符,那么你就知道该模块是错误的。
可持续的速度团队只有持久才有获胜的希望。他们以能够长期维持的速度努力工作,他们保存精力,他们把项目看作是马拉松长跑,而不是全速短跑。极限编程是一组简单、具体的实践,这些实践结合在形成了一个敏捷开发过程。极限编程是一种优良的、通用的软件开发方法,项目团队可以拿来直接采用,也可以增加一些实践,或者对其中的一些实践进行修改后再采用。
文章来源于领测软件测试网 https://www.ltesting.net/