什么是质量工程?(上)

简介: 什么是质量工程?

质量工程是在精益、敏捷、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
  • 系统思维和体系架构是系统方法的核心
  • 参与者合作的组织和人类行为


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


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


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


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

质量工程的关键要素

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


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

目录
相关文章
|
4月前
流式系统:第九章到第十章
流式系统:第九章到第十章
19 0
|
4月前
|
Python
单词 Workshop 的含义和使用场合介绍
单词 Workshop 的含义和使用场合介绍
49 0
|
6月前
|
人工智能 运维 安全
什么是质量工程?(下)
什么是质量工程?(下)
51 0
|
6月前
|
机器学习/深度学习 存储 人工智能
【网安AIGC专题11.8】论文15 ChatGPT在软件工程中的全面作用:程序语法(AST生成、表达式匹配) 静态行为、动态分析(数据依赖和污点分析、指针分析) 提示设计(角色提示、指令提示)
【网安AIGC专题11.8】论文15 ChatGPT在软件工程中的全面作用:程序语法(AST生成、表达式匹配) 静态行为、动态分析(数据依赖和污点分析、指针分析) 提示设计(角色提示、指令提示)
75 0
|
自然语言处理 C语言 C++
编译原理 实验二:词法分析器的手动实现(基于状态机的词法分析器)
编译原理 实验二:词法分析器的手动实现(基于状态机的词法分析器)
753 0
编译原理 实验二:词法分析器的手动实现(基于状态机的词法分析器)
|
Dubbo NoSQL Java
架构:第八章:查询的资料
架构:第八章:查询的资料
|
自然语言处理 PyTorch 算法框架/工具
离线解耦的文本表征方法(持续更新ing...)
本文仅介绍离线、解耦的、直接对文本进行表征的方法。分成通过词嵌入池化得到句子嵌入,和直接进行句子嵌入两种做法。主要用PyTorch实现。 本文将使用一个数据集来撰写相应代码,并使用简单的线性分类器来实现multi-class文本分类,分类模型的代码(我每个都是跟前面的文本表征部分直接写在同一个脚本里的)和各表征方法的效果在第4节展示。 本文使用的分词方式是jieba默认模式。其他注意事项看具体各分节内容。
离线解耦的文本表征方法(持续更新ing...)
|
Python
408.有效单词缩写 Python指针思路分析与细节解析!
408.有效单词缩写 Python指针思路分析与细节解析!
125 0
|
存储 编译器
你能用几句话解释面向对象?(上)
一种基于面向过程的新的编程思想,顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是我该让谁来。面向对象最小的程序单元是类,必须先存在类的定义,再有对象,而具备某种功能的实体,称为对象。
177 0
你能用几句话解释面向对象?(上)
|
存储 Java
你能用几句话解释面向对象?(中)
一种基于面向过程的新的编程思想,顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是我该让谁来。面向对象最小的程序单元是类,必须先存在类的定义,再有对象,而具备某种功能的实体,称为对象。
你能用几句话解释面向对象?(中)