什么是质量工程?

news2024/12/23 5:48:16

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

alt

我们基于古法语"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)
alt
又快又好的痛点(Quality at Speed Pains)

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

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

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

MAMOS系统领域(MAMOS System Areas)

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

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

alt

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单元完整示例
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,即评估、架构和加速)为中心,作为指导迭代框架,封装了包含综合评估、战略设计和转型加速的系统方法。

alt

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蓝图示例

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

质量工程或者试错

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

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

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

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


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

- END -

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1315081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二维差分详解

前言 上一期我们分享了一维差分的使用方法,这一期我们将接着上期的内容带大家了解二位差分的使用方法,话不多说,LET’S GO!(上一期链接) 二维差分 二维差分我们可以用于对矩阵区间进行多次操作的题。 二维差分我们还…

关于“Python”的核心知识点整理大全23

目录 ​编辑 第10 章 文件和异常 10.1 从文件中读取数据 10.1.1 读取整个文件 pi_digits.txt file_reader.py 10.1.2 文件路径 10.1.3 逐行读取 file_reader.py 10.1.4 创建一个包含文件各行内容的列表 10.1.5 使用文件的内容 pi_string.py 往期快速传…

【从零开始学习--设计模式--装饰者模式】

返回首页 前言 感谢各位同学的关注与支持,我会一直更新此专题,竭尽所能整理出更为详细的内容分享给大家,但碍于时间及精力有限,代码分享较少,后续会把所有代码示例整理到github,敬请期待。 此章节介绍装…

关于“Python”的核心知识点整理大全14

目录 ​编辑 7.2.2 让用户选择何时退出 parrot.py 7.2.3 使用标志 7.2.4 使用 break 退出循环 cities.py 7.2.5 在循环中使用 continue counting.py 7.2.6 避免无限循环 counting.py 7.3 使用 while 循环来处理列表和字典 7.3.1 在列表之间移动元素 confirmed_user…

虚拟网络管理解决方案

随着业务规模的扩大,其网络的规模和复杂性也成比例地扩大,企业级组织和中小型企业需要大规模网络来满足不断增长的业务需求,然而,大规模网络需要大量的物理组件、定期维护和配置,所有这些都是有代价的,因此…

无mac在线申请hbuilderx打包ios证书的方法

hbuilderx是一个跨平台的开发工具,可以开发android和ios的app应用。打包hbuilderx应用需要hbuilderx打包证书。但是很多使用hbuilderx开发的程序员,并没有mac电脑,而申请ios的证书,hbuilderx官网的教程却是需要mac电脑的&#xff…

竞赛保研 opencv 图像识别 指纹识别 - python

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于机器视觉的指纹识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖,适…

C++面向对象编程(OOP)-浅拷贝与深拷贝

本文主要使用详细的代码比较说明深拷贝和浅拷贝的区别,延伸讲到构造函数。并提供深拷贝和浅拷贝的对比代码。 目录 1 深拷贝和浅拷贝引入原因 2 深拷贝个浅拷贝基本介绍 3 浅拷贝的弊端 4 拷贝构造函数 5 类中有指针的浅拷贝 6 类中有指针的深拷贝 1 深拷贝和浅…

Zabbix监控系统部署与管理

zabbix介绍 zabbix是⼀个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的免费开源解决⽅案。zabbix能监视各种⽹络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 zabbix构成 zabbix由…

从纸笔到屏幕:我的CS笔记记录体验分享

前言 三年大学生活里,我花了很多时间在记录笔记上,也因为现有种类繁多的各种学习方式,和朋友一起走了很多弯路。纸笔,OneNote,Typora…… 想总结分享一下自己大学期间的学习笔记记录方式(主要针对计算机学…

后端项目全局异常处理-使用RuntimeException自定义异常异常分类简单举例

接上篇:后端项目操作数据库-中枢组件Service调用Mapper 自定义异常: 手动抛出异常,为了后续统一捕获,需要异常自定义; 如:当使用抛出异常的方式表示“操作失败”时,为了后续统一捕获&#xff0c…

苹果计划将全球1/4的IPhone产能转移至印度

KlipC报道:据相关人士报道,苹果希望在未来2到3年内每年在印度生产超过5000万部iphone,要是该计划得以实现,印度将占领全球iPhone产量的四分之一。 KlipC的分析师Alex Su表示:“此次iPhone15推出是苹果印度制造计划的一…

YOLOv8重要模块解读

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 yolov8的模块代码主要在./ultralytics/nn/modules/下 conv.py 在conv.py文件的头部,__all__中声明了当前模块的所有暴露的模…

LeetCode刷题日志-73矩阵置零

思路一: 用一个同样大小的矩阵记录0的位置,然后遍历矩阵置0, 空间复杂度为O(mn) class Solution {public void setZeroes(int[][] matrix) {int [][] matrix_new new int[matrix.length][matrix[0].length];for(int …

太阳光模拟器助力植物生长研究领域的分析研究

概述 太阳光模拟器是一种精密的光学设备,能够模拟太阳光的波长、强度和分布,为植物生长提供所需的光照环境。在植物生长研究中,太阳光模拟器被广泛应用于探讨植物生长、发育和产量等方面的问题,为农业生产、园艺研究和植物科学提供…

论文阅读——Mask DINO(cvpr2023)

DINO是检测,Mask DINO是检测分割。 几个模型对比: 传统的检测分割中,检测头和分割头是平行的,Mask DINO使用二分图匹配bipartite matching提高匹配结果的准确性。 box对大的类别不计算损失,因为太大了,会…

Windows安装Tesseract OCR与Python中使用pytesseract进行文字识别

文章目录 前言一、下载并安装Tesseract OCR二、配置环境变量三、Python中安装使用pytesseract总结 前言 Tesseract OCR是一个开源OCR(Optical Character Recognition)引擎,用于从图像中提取文本。Pytesseract是Tesseract OCR的Python封装&am…

23款奔驰C260L升级香氛负离子 淡淡的幽香

相信大家都知道,奔驰自从研发出香氛负离子系统后,一直都受广大奔驰车主的追捧,香氛负离子不仅可以散发出清香淡雅的香气外,还可以对车内的空气进行过滤,使车内的有害气味通过负离子进行过滤,达到车内保持清…

2021年数维杯国际大学生数学建模C题冠状病毒下的旅游业未来发展规划求解全过程文档及程序

2021年数维杯国际大学生数学建模 C题 冠状病毒下的旅游业未来发展规划 原题再现: 旅游业是一个具有高度关联性的复合型产业。它不仅与交通运输业、餐饮业、旅游服务业直接相关,而且与第三产业的大部分行业密切相关。旅游业带动的消费支出主要包括三部分…

springAop有哪五种通知类型?可根据图标查看!

Spring AOP的通知类型有以下几种(后面是图标变化): 1.Before通知: 在目标方法执行前执行。 上白下红,方法前执行。 2.After通知: 在目标方法执行后(无论是否发生异常)执行。 图标…