技术开发 频道

极限编程中的质量控制

  2.极限编程的质量控制

  极限编程看似一个顺乎人本能的、自由的软件开发过程,而事实上其核心实践却包含了严格的质量控制技术。

  2.1 极限编程软件质量的外部控制过程

  极限编程的整个软件开发过程是由若干小的迭代周期完成,每一周期实现部分用户需求,完成后进行一次小型发布,然后根据用户的反馈和进一步的要求,开始下一周期的开发。在每次小型发布之前,通过客户测试对该周期完成的产品进行合格性检查,而每当一个迭代周期完成后,需要确定下一周期要开发与发布的系统范围,以便开始下一次迭代过程。而下一周期开发范围的确定,是由现场客户参与确认的。在此,现场客户的参与相当于从用户的角度对软件需求进行评审,而客户测试相当于传统意义的软件验收测试。可以认为,现场客户和客户测试两个核心实践是极限编程软件开发过程中每一个重要节点的质量保证手段。

  2.2 极限编程内部软件质量控制过程

  在每个迭代周期内部,软件开发过程仍然可以划分为软件设计、编码、单元测试等过程,但这些过程不再具有完全的线性关系,而是互相交错迭代。除此之外,极限编程不看重软件文档的作用,其观点是:编写规范、书写简洁、结构清晰的代码本身就是最好的软件文档。因此,在极限编程中,基于软件文档的软件评审不再适用,同时,烦琐的小组评审制也不适宜用于“敏捷”过程。尽管如此,极限编程却有更加严格的软件质量控制手段进行内部质量控制。事实上,它绝大多数核心实践的目的都是提高软件质量。

  a) 代码规范

  代码的易分析性、易维护性是重要的软件质量因素,通过制定代码规范,极限编程让所有的程序员能够编写出风格统一、结构清晰、易于理解、易于维护的源代码,既是提高软件质量的重要途径,也是代码代替文档的重要前提。代码规范是质量控制的基础,而代码规范的依从性检查则是通过“结对编程”、“设计重整”、“代码集体拥有”等实践进行检查的。

  b) 结对编程

  结对编程是一种典型的同行评审方式。该实践的宗旨是两个人的智慧比一个人强。由两个开发人员在同一台电脑上共同编写解决同一问题的代码,通常一个人坐在前端进行键盘操作,写代码,而另一个人坐在后面负责保证代码的正确性与可读性,相当于以个人评审的形式进行代码审查或静态测试。与此同时,另一个坐在旁边还可以考虑不同的设计思路和测试思路。

  c) 设计重整

  又称代码重构,在不改变系统行为的前提下,重新调整、优化系统的内部结构以减少复杂性、消除冗余、增加灵活性和提高性能;当一段代码的设计不够完善、不够简洁、不够规范,对其进行设计重整,设计重整是同行评审或自我评审的结果。它导致更加完善的设计或编码。

  d) 测试驱动的软件开发过程

  对测试的高度重视是极限编程的一个重要特点。极限编程中,测试划分为单元测试、持续集成和客户测试,这与传统的单元测试、集成测试和确认测试测试过程相对应。同时,极限编程强调“测试先行”的原则,即使对于单元测试,也要求在进行编码之前先写测试用例,既能在编写测试用例过程中从测试的角度对软件设计进行评审,又能保持测试设计的独立性。

  综上所述,极限编程的核心实践提供了用于软件开发过程内部进行质量控制的一套精心的手段。在开发过程的每一个迭代周期完成后,通过客户测试完成系统合格性检查,而在迭代周期的内部,通过“结对编程”、“测试先行”、“单元测试”等实践,几乎在每一个设计、每一个模块编码完成后,都对其进行了错误排除,以期获得“干净”的软件模块;而每一次新的模块加入系统,通过“持续集成”,排除软件接口错误,又能得到“干净”的系统。

0
相关文章