大家好,我是阿萨。今天从质量内建的5个维度去看如何做好质量内建。
公司能否在最短的时间内交付新的功能,能否适应快速变化的商业环境,取决于解决方案的质量。因此,敏捷框架(SAFe)在其核心价值和敏捷宣言的原则中包括了质量内建,"持续关注技术的卓越性和良好的设计可以增强敏捷性"。精益敏捷思想依赖于质量内建的概念,这是一种避免返工、召回和减少纠错成本的方法。
内建质量
内建质量的概念来自于精益,并被包含在Scaled Agile Framework(SAFe)的核心价值中。这可以确保项目组成员符合你的质量标准。它还为你的解决方案的质量注入信心,并允许你的组织定期调整和运行其系统。
"检查不能提高质量,也不能保证质量。检查是太晚了。质量,无论好坏,都已经在产品中了。质量不能被检查到产品或服务中去;它必须被建立在产品或服务中"。
- W. Edwards Deming
质量内建的五个方面
专注于业务的团队在工作产品中应用SAFe内在质量的实践时,可以使用其五个方面。流程对所有的团队都非常重要,因为它描述了如何消除返工、错误和其他拖慢产量的浪费。剩下的四个描述了可以应用于各种领域的质量实践,包括自动化、测试优先、以及使用基于集合的设计来发现替代方案。质量内建维度中的团队与技术敏捷性还包括所有团队共有的质量准则-- Pair工作、标准、自动化、集体责任和DoD(Done的定义)。
图1:质量内建的五个维度
(来源:Scaled Agile Inc.)
让我们在接下来的章节中看看质量内建的每个维度。
1. 流程
敏捷团队在一个快速流程驱动的系统中工作,快速开发和利用高价值的商业机会。敏捷团队不是在最后才执行大部分的测试,而是提前确定并执行许多测试,通常是在多个层面。使用TDD(测试驱动开发)为代码变化定义测试,使用BDD(行为驱动开发)为故事和功能验收标准定义测试,使用Lean-UX为功能效益假设定义测试。
构建质量意味着在敏捷应用的开发过程中,频繁的变化不会引起新的错误,并允许快速可靠的实施。下面列出了各种做法。
— 考虑测试优先
— 构建CDP(持续交付管道)
— 用减少的测试套件加速反馈
图2:测试优先的实践加速了流程
(来源:Scaled Agile Inc.)
2. 架构和设计质量
这最终决定了系统如何满足当前和未来的业务需求。架构和设计的质量使其更容易满足未来的需求,测试系统,并帮助满足NFR(非功能需求)。其做法列举如下。
— 将设计质量应用于网络物理系统
— 为质量而设计
— 通过架构和设计简化测试
— 有助于企业的未来需求
3. 代码质量
所有的系统功能最终都由系统代码(或组件)实现。如何快速和容易地增加新功能,取决于开发人员如何快速和可靠地改变它们。部分受XP(eXtreme Programming)的启发,这里列出了一些实践。
— 单元测试和TDD
— 结对工作
— 集体所有制和编码标准
— 将代码质量应用于网络物理系统
4. 系统质量
虽然代码和设计的质量确保了系统工件可以很容易地被识别和修改,但系统质量证明了系统是按预期工作的,并且每个人都在同一起跑线上,知道该做什么修改。这里有一些关于如何实现系统质量的提示。
— 建立一致性以达到快速流动
— 不断地整合终端解决方案
— 将系统质量应用于网络物理系统
5. 发布质量
它使组织能够评估功能效益假设的有用性。一个组织越早发布,学习和增值的速度就越快。模块化架构定义了组件之间的标准接口,允许小的变化在组件层面独立共享。
小的变化可以使发布更快、更频繁、风险更小,但为了保证质量,需要如图2所示的自动化管道。与传统的服务器基础设施不同,"不可改变的基础设施 "不允许手动和直接改变生产服务器。
相反,变化被应用于服务器镜像,提交并运行以取代当前运行的服务器。这种方法允许一个更一致和可预测的发布。它还能实现快速恢复。如果操作环境检测到一个生产错误,它可以运行以前的镜像来替换受损的镜像。其做法列举如下。
— 支持合规性
— 可扩展的DoD