技术开发 频道

极限编程中的质量控制

  【IT168 技术文档】

  极限编程是近年来非常流行的敏捷软件开发方法,与其它敏捷软件开发方法一样,强调软件开发过程的自适应性和以人优先的价值观,这与传统的重量级软件开发方法强调对开发过程的控制相反。那么,敏捷软件开发方法能否开发出高质量的软件产品呢?本文探讨在极限编程中如何进行软件质量控制,既保持“敏捷”的特点,又能作为一种成熟的软件开发过程,为客户提供高质量的软件产品。

  1.概述

  1.1极限编程

  极限编程是基于简洁、交流、反馈和勇气4个价值观的一种敏捷软件开发方法。它以其13个核心实践为标志:

  1)现场客户(On-site Customer):要求至少有一名实际的客户代表在整个项目开发周期在现场负责确定需求、回答团队问题以及编写功能验收测试;

  2)计划博弈(Planning Game):将软件开发过程划分成许多迭代周期,在每一个迭代周期前结合项目进展和技术情况,确定下一周期要开发与发布的系统范围;

  3)小型发布(Small Release):强调在非常短的周期内以递增的方式发布新版本,从而可以很容易地估计每个迭代周期的进度,便于控制工作量和风险,同时,也可以及时处理用户的反馈;

  4)客户测试(Customer Tests):在每次小型发布之前,由客户编写测试用例,参加产品的合格性测试;

  5)简单设计(Simple Design):代码的设计尽可能的简单,只要满足当前功能的要求,不多也不少;

  6)结对编程(Pair Programming):由两个开发人员在同一台电脑上共同编写解决同一问题的代码,通常一个人负责写编码,而另一个负责保证代码的正确性与可读性;

  7)测试驱动(Test-Driven Development):强调测试先行(Test Before)。在编码开始之前,首先将测试写好,而后再进行编码,直至所有的测试都得以通过;

  8)设计重整(Refactoring/ Design Improvement): 又称代码重构,在不改变系统行为的前提下,重新调整、优化系统的内部结构以减少复杂性、消除冗余、增加灵活性和提高性能;

  9)持续集成(Continuous Integration):提倡在一天中集成系统多次,而且随着需求的改变,要不断的进行回归测试;

  10)代码集体拥有(Collective Code Ownership):开发小组的每个成员都有更改代码的权利,所有的人对于全部代码负责;

  11)代码规范(Coding Standard):强调通过指定严格的代码规范来进行沟通,尽可能减少不必要的文档;

  12)系统隐喻(System Metaphor):通过隐喻来描述系统如何运作、新的功能以何种方式加入到系统;

  13)适当的节奏(Sustainable Pace),又称每周40小时工作制。

  1.2 软件质量控制

  所谓软件质量,可以用软件中的错误密度表示。质量越高,错误密度越小,由于软件开发过程中随时可能引入软件错误,软件质量控制的目的就是要排除软件中的错误。传统上,评审和测试是进行软件质量控制的基本方法。评审是对软件的中间产品如软件需求规格说明、软件设计说明、软件测试设计进行错误检查和规范遵从性检查的主要手段,而测试主要是查找软件的最终产品,即软件运行代码中的错误。

  软件开发过程的质量控制通常是与开发阶段的划分相关联的。在典型的瀑布开发过程中,软件开发过程通常划分为软件需求分析、软件设计、软件实现和软件测试等阶段。对软件质量进行粗控(如图1所示)时,把每一个软件开发阶段当作一个黑盒子,对每一个黑盒子的输入输出进行质量控制。该控制方法又可称基线控制方法:将软件开发过程划分为若干条基线,每一条基线意味着上一开发阶段的结束和下一开发阶段的开始,因此在每一条基线到来时需要评审或测试本阶段的工作产品,进行缺陷修正后,结束本阶段工作,而该阶段产品作为下一阶段工作的输入。

  在有些项目中,需要对软件质量和软件过程作更加严格的控制,项目各开发阶段不再被当作黑盒子,而是一个透明的玻璃盒子,在各阶段内部过程中被插入若干控制点,使用多种方法如同行评审、走查、审计等方法查找软件错误,对软件质量进行监控。

  评审和测试是软件质量保证的基本技术,在已定义的质量控制点使用软件质量保证技术是软件质量控制的过程化方法,如何保证这些方法的有效性,监督这些方法的有效执行则是质量管理的内容。

0
相关文章