写点什么

什么是质量工程?

作者:俞凡
  • 2023-09-02
    上海
  • 本文字数:6343 字

    阅读完需:约 21 分钟

质量工程是在精益、敏捷、DevOps 等实践基础上进一步发展出的系统化赋能软件开发流程、构建既快又好的开发框架的实践原文: What is Quality Engineering



我们基于古法语"definer"的定义,通过澄清边界、要素和相互作用的方式来构建某个概念,本文将讨论软件行业中质量工程(Quality Engineering)的这三个要素。


本文中质量工程的定义是建立在精益、敏捷和 DevOps 的发展基础上的,但不仅仅只是对传统的质量保证(Quality Assurance)新瓶装旧酒的重命名。


质量工程是关于如何在软件生产系统上行动的一种范式转变,通过集中、实用的转型来创建快速交付高质量软件的持久商业竞争优势。

为什么需要质量工程

有很多条件约束的压力挑战

加速变化、颠覆性创新和 BANI 世界中的全球化竞争是所谓"数字化转型"的关键特征。在这种情况下,最佳实践很容易被复制,通过卓越运营获得的竞争优势充其量只是暂时的。


因此,为了生存,组织面临许多数字化挑战:


  1. 持续交付价值以保持竞争力

  2. 在低可预测性前提下做出投资和方向决策

  3. 向无法直接交互的"用户"提供成功的体验

  4. 快速交付抽象增量,并通过实验进行调整

  5. 简化端到端复杂性和相互依赖的过程。


与此同时,生态系统的发展也增加了更多限制:


  • 授权客户需要实时解决方案,否则就切换

  • 职位空缺率为 25%,员工轮岗率为 30%

  • 各级资源正变得越来越稀缺

速度是数字化业务的强制性要求

许多组织为了生存只能选择数字化,但在试图以更快的速度交付软件时面临许多问题: 增加的交付时间、返工和反复出现的问题,很难理解这不仅仅是采用 DevOps、敏捷或特定工具的问题。


规模经济的工业模式已经不够了,具有更好价值主张的新参与者可以在几个月内彻底颠覆现有业务,快速适应业务和持续的迭代速度已成为企业最宝贵的竞争优势。

短期速度导致生意失败

面对速度的迫切性,许多组织将精力集中在"加速"价值交付的节奏上。这种策略可能会导致短期产生大量成本,并且积累的债务最终会减慢迭代节奏,而且很难通过快速修复来扭转趋势。


短期权衡导致软件生产系统的碎片化


这种模式无法在竞争激烈、不可预测和复杂数字环境中生存,因为可持续的软件开发速度是唯一能够保持持续价值交付流的竞争优势。

孤立计划往往以浪费告终

在软件开发的动态环境中,有大量改进计划: 从敏捷方法到 DevOps 实践,从平台工程到 SRE 原则,等等。真正挑战在于辨别哪些举措将产生最具影响力、最持久的结果。


在一个时间和资源有限的世界里,组织必须谨慎选择并集中精力在最有价值的优先事项上。关键不在于仅仅为了赶时髦而采用流行的实践,而在于战略性投资于能够创造重大、可持续转变的主动性。


孤立的努力有分散资源的风险,而无法带来相应的收益,集中、全面的方法对实现实质性和持久的业务改进至关重要,需要确保资源得到有效利用,并将浪费降到最低。

定义质量工程

质量工程不是什么

质量工程不是质量保证工程(Quality Assurance Engineering)。


"质量工程"这个词汇让我们觉得目标是通过在流水线里加入更多测试自动化和集成从而将质量通过工程化的方式嵌入软件交付流程中。虽然这些改进是必需的,但显然不足以解决诸如组织或协作之类的非技术主题。


软件生产是由人、过程和技术组成的系统中相互依赖部分的协作产生的。因此,质量的注入不能局限于软件交付流水线,而必须涵盖组成软件生产系统的整个领域。

什么是质量工程

质量工程的定义是:


"质量工程通过系统的方法将全面质量管理应用到软件生产中,从而为可持续的业务速度构建质量能力。" — Antoine CRASKE


质量工程是全面质量管理(Total Quality Management) 在软件工业中的应用,将不同领域的成熟实践整合为软件生产系统的一部分,利用体系架构的力量来组装最有价值的部分。


在商业环境中,由于资源稀缺,竞争更加激烈,组织可以为不确定性做好准备,以构建自己的软件生产系统,作为相对于适应、学习和创新较慢的竞争对手的持久竞争优势。

理解质量工程

对质量工程的理解需要构建核心原则、边界和概念,以便在软件生产系统的每个元素中注入质量。

质量工程哲学

质量工程的基本逻辑被概括为"构建更好(Build Better),构建更快(Build Faster)",代表了需要关注软件生产的每个方面都构建得更好,以获得可持续的开发速度。


质量工程的范式转换依赖于以下原则:


  1. 业务取决于软件的质量和速度

  2. 质量包括整个软件生产系统

  3. 只有通过内建质量才能保持速度


可持续业务速度的北极星指标需要关注第二点,使质量成为整个软件生产系统中的一流公民,因而需要定义质量工程的边界。

质量工程边界

从系统角度来看,质量工程作用于软件生产系统,将数字业务理念作为输入,并在实际操作中创建软件增量作为输出,并且在理想情况下是有价值的。


从更大的角度来看,质量工程的左右边界从最小的软件生产系统开始,通常是在 2-3 人的启动阶段,然后在剩下的业务成熟阶段,通过系列 A 到系列 E,大约需要 500 名专职人员致力于软件生产。


质量工程支持可持续软件生产系统的开发


在底层,质量工程确定了必要的软件生产元素,但没有详细说明其完整实现,而是留给每个领域的现有知识体系。在上层边界上,质量工程不包括软件生产系统的用途,也就是特性。

质量工程知识体系

从实现角度来看,质量工程需要对全局的理解,以发现系统问题和架构师关注的解决方案,有效解决关键原因和限制因素。


质量工程的主要知识领域是:


  • 用于整合软件生产领域的精益、敏捷、DevOps

  • 系统思维和体系架构是系统方法的核心

  • 参与者合作的组织和人类行为


质量工程为全面质量管理巩固了软件行业实践


精益实践,以其效率和减少浪费的原则而闻名,与质量工程架构交织在一起。集成了领导和管理转型的原则确保向更优化的软件生产系统平滑演进。


质量工程在多个软件行业实践的基础上构建了软件生产系统的大图景,这些实践是多年的经验、知识获取和社区共享获得的。


质量工程的简化元素和框架使我们能够利用知识体系,而不必学习所有东西。

质量工程的关键要素

质量工程的基础是理解和解决质量和速度相关的挑战。


质量工程的系统方法支持软件生产系统的全局视图,将其视为部分的总和,这些部分的输入和输出都得到了改进,从而建立了快速质量的能力。

质量工程构建模块

构建块的概念是质量工程的基本元素,共同为有效的软件生产铺平道路。


质量工程构建了以下 3 个核心模块:


  1. 又快又好的痛点(Quality at Speed Pains)

  2. MAMOS 系统领域(MAMOS System Areas)

  3. 产出和成果(Outputs and Outcomes)


又快又好的痛点(Quality at Speed Pains)

前两个关键维度是质量痛点和速度痛点。质量痛点包含了软件生产质量不同方面的相关挑战,而速度痛点需要解决组织不同层次上实现快速、有效软件交付的障碍。


质量痛点更主观,但可以更容易的与不一定熟悉软件生产内部的多个利益相关者交谈。痛点表现为不同形式,比如高度依赖某一个人,或者缺乏可用性。


速度痛点更容易得到真实数据的支持。在这种情况下,相对于其他方面的价值,挑战更多依赖于如何巩固并正确完成构建。

MAMOS 系统领域(MAMOS System Areas)

质量工程的核心是 MAMOS 软件生产系统,它封装了构建快速质量能力的关键原则和实践,通过三个层次确保软件开发的各个方面保持一致。


MAMOS 领域(MAMOS areas)

MAMOS 将软件生产系统架构为关键领域,这些领域既能表示各部分的总和,又允许在集中注意力于各个独立的上下文。


MAMOS 的 5 个领域是:


  1. 方法(Methods): 简化协作以实现精益价值交付

  2. 架构(Architecture): 构建质量驱动的技术平台

  3. 管理(Management): 使参与者和团队能够交付价值

  4. 组织(Organization): 调整团队架构和质量边界

  5. 技能(Skills): 确保对于业务功能支持能力的可用性


以下几点对模型的对齐很重要:


  • 文化(Culture) 本身并不是专门的系统领域,而是由 MAMOS 其他领域的相互作用和动态形成和产生的

  • 架构(Architecture) 领域涵盖了从上游设计、安全性到运营管理的整个技术问题集

  • 技能(Skills) 领域代表能力映射、获取和保留策略,包括内部和外部手段

MAMOS 子领域(MAMOS sub-areas)

MAMOS 框架由不同领域组成,每个领域都包含一组形成软件生产系统的子领域。这些子领域为处理开发的各个方面提供了详细蓝图,确保质量工程原则有效集成到每个领域。



MAMOS 子领域包括:


  • 方法(Methods): 专注(Focus)、计划(Plan)、设计(Design)、指定(Specify)、实施(Implement)、交付(Deliver)、部署(Deploy)、运维(Operate)、学习(Learn)、改进(Improve)

  • 架构(Architecture): 整体规划(Urbanization)、自制或购买(Make or Buy)、模块化(Modularity)、集成(Integration)、安全(Security)、自助服务(Self-service)、可观测性(Observability)、弹性(Resilience)、实验(Experimentation)、灵活性(Flexibility)

  • 管理(Management): 愿景(Vision)、一致性(Alignment)、选择(Choices)、协作(Collaboration)、授权(Empowerment)、绩效(Performance)、风险(Risks)、快速失败(Fail fast)、度量(Measurement)、开发(Development)

  • 组织(Organization): 设计选择(Design Choices)、承诺(Commitment)、组织架构(Organizational Structure)、沟通(Communication)、领导(Leadership)、管理(Management)、参与(Engagement)、人力规划(Workforce Planning)、组织学习(Organizational Learning)、组织文化(Organizational Culture)

  • 技能(Skills): *专业知识映射(Expertise Mapping)、战略伙伴关系(Strategic Partnerships)、远程支持(Remote Enablement)、促进发展(Development Facilitation)、吸引人才(Talent Attraction)、留住人才(Talent Retention)、团队合作(Teamwork)、外部沟通(External Communication)、社区建设(Community Building)、持续学习(Continuous Learning)。

MAMOS 单元(MAMOS units)

单元进一步将子领域分解为可操作的组件,提供对如何实际实现每个子领域以增强软件生产过程的细粒度理解。


MAMOS 单元完整示例


让我们用方法领域和焦点子领域的具体示例来说明:


  • 战略定义(Strategy Definition): 为开发过程建立清晰的路线图,使其与总体业务目标保持一致

  • 优先级定义(Priority Definition): 确定需要立即关注的最关键任务和特征,确保资源有效分配

  • 范围定义(Scope Definition): 清楚概述项目边界和范围,以避免范围蔓延并确保集中执行

  • 目标定义(Goals Definition): 设定具体、可衡量的目标,指导团队朝着成功的结果努力


如果在软件生产系统中可以定义一个关键限制因素,那么每一个单元都可以用于评估并改进其水平。详尽的 MAMOS 单元列表可用于质量工程转型。

产出和成果(Outputs and Outcomes)

努力和结果之间的联系在质量工程中至关重要,通过将输出与结果联系起来,从而付诸行动。这两个要素是验证整个过程有效性的关键系统输出。


测量构建块中的两个关键元素是:


  1. 产出(Outputs) 包括实际的生产结果

  2. 成果(Outcomes) 是从产出中产生的更定性的有价值的点


这两个要素能让我们全面评估行为的影响。可以考虑使用加速指标,例如在行业中广泛认可的四个关键指标,整个团队更容易了解这些指标。


此外,成果与最初确定的质量、速度痛点直接相关。这种战略一致性不仅简化了质量工程所做的努力,而且还确保所取得的成果与组织的总体目标和期望一致。

面向质量工程的 MAMOS 框架

MAMOS 框架提供了一种结构化方法利用质量工程的构建块来驱动软件生产系统专注于面向价值的转型,其依赖于核心原则和 AAA 3 步迭代过程。

MAMOS 的 AAA 3 步迭代过程

MAMOS 的 3 步流程以 AAA(Assess-Architect-Accelerate,即评估、架构和加速)为中心,作为指导迭代框架,封装了包含综合评估、战略设计和转型加速的系统方法。



AAA 流程概述包括 3 个步骤:


  1. 评估(Assess) 质量和速度问题

  2. 为系统问题架构(Architect) MAMOS 解决方案

  3. 加速(Accelerate) 提供产出和成果。

评估(Assess)

评估阶段包括对质量和速度问题的深入评估,以确定软件生产过程中的瓶颈、低效和痛点,需要对当前状态进行彻底分析,以发现潜在挑战。

架构(Architect)

架构阶段利用 MAMOS 框架制定整体解决方案,以处理在评估阶段确定的系统问题。通过端到端体系架构,在方法、架构、管理、组织和技能五个领域应用于软件生产系统。

加速(Accelerate)

加速阶段将解决方案转化为切实成果,实现在架构阶段确定的策略和活动,交付与业务目标一致的可测量的输出和结果,并开发快速质量能力。

MAMOS 框架原则

有效的转型是基于对环境的良好理解、强有力的决策和系统化的集中行动,这些行动维持了最初对变化的冲动,并使系统元素保持一致,避免回到惯性状态。


质量工程转型需要遵循以下关键原则:


  • 退一步看大局,让利益相关者参与进来,并采取其他行动来更好的理解系统

  • 强调完整性,以正确组织关键领域的诊断和行动,而不要迷失在细节中

  • 专注于限制因素,优先考虑那些对改善结果有更多杠杆作用的努力

  • 时间盒交付,保持集中行动,避免增加浪费,并迫使寻找有价值的增量步骤

  • 将产出与成果联系起来,以确保努力提供预期价值,并保持当前重点的相关性

在组织中实施质量工程

实施质量工程需要系统和战略性的方法来组织转型,从而获得足够的初始支持,并发展指导联盟,从一开始就能够交付价值,以建立可持续的快速质量能力。

质量工程转型模型

质量工程转型取决于这 5 个活动:


  • 将软件痛点与业务影响联系(Link) 起来

  • 创造(Create) 认知并获得支持

  • 理解(Understand) 关键问题和痛点

  • 共同架构(Co-architect) 质量工程解决方案

  • 推动(Drive) 精益转型

将软件痛点与业务影响联系起来

这一过程的第一个关键步骤是在组织面临的与软件相关的挑战与其总体业务优先级之间建立牢固的联系。这种一致性为将质量工程定位为价值和竞争优势的强大驱动力奠定了基础。

创造认知并获得支持

要成功引入质量工程,建立认知并获得利益相关者的支持是关键。这包括沟通质量工程的价值主张,说明如何处理痛点,优化过程,并有助于实现战略业务目标。

理解关键问题和痛点

深入了解组织的关键问题和痛点至关重要,包括全面分析和评估以确定瓶颈、低效和需要改进的领域。通过确定这些痛点,可以调整质量工程计划并解决问题。

共同架构质量工程解决方案

协作是质量工程的核心。共同架构解决方案的过程涉及到跨职能团队合作,来自不同领域的专家聚集在一起设计策略、过程和框架,这些策略、过程和框架在保持速度和效率的同时提高了软件产品的质量。

推动精益转型

质量工程不仅仅是实施新流程,而是一个影响整个组织的整体转型。领导者需要在推动这一转变中发挥至关重要的作用,包括培养质量文化,促进技能开发,并支持跨团队采用新的实践。

利用 MAMOS 蓝图

跨越不同地点和时间框架的公司所面临的挑战往往有共同点。虽然情况可能有所不同,但问题和解决方案模式可以用来产生有影响的结果。


MAMOS 蓝图是跨越 MAMOS 的五个领域的整体软件生产系统,覆盖了常见用例,可以用来了解特定用例是如何工作的,然后用它来更快执行差距分析或定义转型行动计划。


MAMOS 单元完整示例


MAMOS 蓝图用例范围可以适应不同的增长阶段,如 A、B、C、D、E 轮融资,或迎合特定的运营模式,如初创企业、扩大规模、缩小规模、扩大范围和全球可扩展性。社区正在构建像 FinOps 这样的具体实践模型。

质量工程或者试错

质量工程代表了行业对转型的需求,以有效支持业务不断革新。


每个组织的未来都依赖于其支持快速开发高质量产品的能力,以有效构建数字业务的最有价值资产,即软件生产系统。


要使这一切成为现实,就需要在组织边界上有效领导大局,在最重要的优先事项上引导努力和资源。


无论你是主管、总监、工程、质量或技术的 C 级主管,都可以选择通过拥抱"构建更好,构建更快"的质量工程哲学来开始产生影响。




你好,我是俞凡,在 Motorola 做过研发,现在在 Mavenir 做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI 等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。为了方便大家以后能第一时间看到文章,请朋友们关注公众号"DeepNoMind",并设个星标吧,如果能一键三连(转发、点赞、在看),则能给我带来更多的支持和动力,激励我持续写下去,和大家共同成长进步!

发布于: 刚刚阅读数: 4
用户头像

俞凡

关注

公众号:DeepNoMind 2017-10-18 加入

俞凡,Mavenir Systems研发总监,关注高可用架构、高性能服务、5G、人工智能、区块链、DevOps、Agile等。公众号:DeepNoMind

评论

发布
暂无评论
什么是质量工程?_质量工程_俞凡_InfoQ写作社区