质量工程是在精益、敏捷、DevOps 等实践基础上进一步发展出的系统化赋能软件开发流程、构建既快又好的开发框架的实践原文: What is Quality Engineering
我们基于古法语"definer"的定义,通过澄清边界、要素和相互作用的方式来构建某个概念,本文将讨论软件行业中质量工程(Quality Engineering)的这三个要素。
本文中质量工程的定义是建立在精益、敏捷和 DevOps 的发展基础上的,但不仅仅只是对传统的质量保证(Quality Assurance)新瓶装旧酒的重命名。
质量工程是关于如何在软件生产系统上行动的一种范式转变,通过集中、实用的转型来创建快速交付高质量软件的持久商业竞争优势。
为什么需要质量工程
有很多条件约束的压力挑战
加速变化、颠覆性创新和 BANI 世界中的全球化竞争是所谓"数字化转型"的关键特征。在这种情况下,最佳实践很容易被复制,通过卓越运营获得的竞争优势充其量只是暂时的。
因此,为了生存,组织面临许多数字化挑战:
- 持续交付价值以保持竞争力
- 在低可预测性前提下做出投资和方向决策
- 向无法直接交互的"用户"提供成功的体验
- 快速交付抽象增量,并通过实验进行调整
- 简化端到端复杂性和相互依赖的过程。
与此同时,生态系统的发展也增加了更多限制:
- 授权客户需要实时解决方案,否则就切换
- 职位空缺率为 25%,员工轮岗率为 30%
- 各级资源正变得越来越稀缺。
速度是数字化业务的强制性要求
许多组织为了生存只能选择数字化,但在试图以更快的速度交付软件时面临许多问题: 增加的交付时间、返工和反复出现的问题,很难理解这不仅仅是采用 DevOps、敏捷或特定工具的问题。
规模经济的工业模式已经不够了,具有更好价值主张的新参与者可以在几个月内彻底颠覆现有业务,快速适应业务和持续的迭代速度已成为企业最宝贵的竞争优势。
短期速度导致生意失败
面对速度的迫切性,许多组织将精力集中在"加速"价值交付的节奏上。这种策略可能会导致短期产生大量成本,并且积累的债务最终会减慢迭代节奏,而且很难通过快速修复来扭转趋势。
短期权衡导致软件生产系统的碎片化
这种模式无法在竞争激烈、不可预测和复杂数字环境中生存,因为可持续的软件开发速度是唯一能够保持持续价值交付流的竞争优势。
孤立计划往往以浪费告终
在软件开发的动态环境中,有大量改进计划: 从敏捷方法到 DevOps 实践,从平台工程到 SRE 原则,等等。真正挑战在于辨别哪些举措将产生最具影响力、最持久的结果。
在一个时间和资源有限的世界里,组织必须谨慎选择并集中精力在最有价值的优先事项上。关键不在于仅仅为了赶时髦而采用流行的实践,而在于战略性投资于能够创造重大、可持续转变的主动性。
孤立的努力有分散资源的风险,而无法带来相应的收益,集中、全面的方法对实现实质性和持久的业务改进至关重要,需要确保资源得到有效利用,并将浪费降到最低。
定义质量工程
质量工程不是什么
质量工程不是质量保证工程(Quality Assurance Engineering)。
"质量工程"这个词汇让我们觉得目标是通过在流水线里加入更多测试自动化和集成从而将质量通过工程化的方式嵌入软件交付流程中。虽然这些改进是必需的,但显然不足以解决诸如组织或协作之类的非技术主题。
软件生产是由人、过程和技术组成的系统中相互依赖部分的协作产生的。因此,质量的注入不能局限于软件交付流水线,而必须涵盖组成软件生产系统的整个领域。
什么是质量工程
质量工程的定义是:
"质量工程通过系统的方法将全面质量管理应用到软件生产中,从而为可持续的业务速度构建质量能力。" — Antoine CRASKE
质量工程是全面质量管理(Total Quality Management) 在软件工业中的应用,将不同领域的成熟实践整合为软件生产系统的一部分,利用体系架构的力量来组装最有价值的部分。
在商业环境中,由于资源稀缺,竞争更加激烈,组织可以为不确定性做好准备,以构建自己的软件生产系统,作为相对于适应、学习和创新较慢的竞争对手的持久竞争优势。
理解质量工程
对质量工程的理解需要构建核心原则、边界和概念,以便在软件生产系统的每个元素中注入质量。
质量工程哲学
质量工程的基本逻辑被概括为"构建更好(Build Better),构建更快(Build Faster)",代表了需要关注软件生产的每个方面都构建得更好,以获得可持续的开发速度。
质量工程的范式转换依赖于以下原则:
- 业务取决于软件的质量和速度
- 质量包括整个软件生产系统
- 只有通过内建质量才能保持速度
可持续业务速度的北极星指标需要关注第二点,使质量成为整个软件生产系统中的一流公民,因而需要定义质量工程的边界。
质量工程边界
从系统角度来看,质量工程作用于软件生产系统,将数字业务理念作为输入,并在实际操作中创建软件增量作为输出,并且在理想情况下是有价值的。
从更大的角度来看,质量工程的左右边界从最小的软件生产系统开始,通常是在 2-3 人的启动阶段,然后在剩下的业务成熟阶段,通过系列 A 到系列 E,大约需要 500 名专职人员致力于软件生产。
质量工程支持可持续软件生产系统的开发
在底层,质量工程确定了必要的软件生产元素,但没有详细说明其完整实现,而是留给每个领域的现有知识体系。在上层边界上,质量工程不包括软件生产系统的用途,也就是特性。
质量工程知识体系
从实现角度来看,质量工程需要对全局的理解,以发现系统问题和架构师关注的解决方案,有效解决关键原因和限制因素。
质量工程的主要知识领域是:
- 用于整合软件生产领域的精益、敏捷、DevOps
- 系统思维和体系架构是系统方法的核心
- 参与者合作的组织和人类行为
质量工程为全面质量管理巩固了软件行业实践
精益实践,以其效率和减少浪费的原则而闻名,与质量工程架构交织在一起。集成了领导和管理转型的原则确保向更优化的软件生产系统平滑演进。
质量工程在多个软件行业实践的基础上构建了软件生产系统的大图景,这些实践是多年的经验、知识获取和社区共享获得的。
质量工程的简化元素和框架使我们能够利用知识体系,而不必学习所有东西。
质量工程的关键要素
质量工程的基础是理解和解决质量和速度相关的挑战。
质量工程的系统方法支持软件生产系统的全局视图,将其视为部分的总和,这些部分的输入和输出都得到了改进,从而建立了快速质量的能力。