发现现代技术和工具,以有效地引出、记录和改进软件计划的质量要求的管理。
每个利益相关者都有它们:非功能性需求或至少对下一个软件计划的(非功能性)期望。
但往往没有人能够解释性能效率、可扩展性、可用性、耦合性、可维护性等含义。
软件架构师的一项基本任务是确保特定软件系统的质量目标变得具体并且可衡量。
因此,让我们从现实世界中一个经验丰富(“有趣”)的故事开始,作为对一个看似无聊的高质量主题的介绍。👇
我经常作为各个中小企业的 CTO 的顾问奔波在路上。几年前,我支持一家中小企业推出新软件产品。
他自豪地向我展示了这个特定软件系统的“非功能需求”列表,并说
“看,我们已经确定了新系统需要满足的未来非功能性要求。” 他向我展示了大约 30 个质量特征的列表。
该列表看起来像这样:
这份清单或这些“质量特征”当然是完全没有用的。
因为
我知道这个非功能性主题可能很无聊或烦人,因为乍一看它不包含任何技术内容。
但作为一名优秀的软件架构师——当然还有一名优秀的需求工程师/产品负责人——你必须完成这项工作,并使它们具体化并确定优先级。
为什么?
因为这些——尤其是这些——是您的驱动因素,更重要的是,是您几乎所有软件架构决策的原因。
但好消息是,除了所有这些无聊的质量内容之外,还有良好的现代技术来开发和维护明确的非功能性需求。
😀 请不要仅仅因为您已经阅读了“ISO 标准”就停止阅读此处。让我们从可能很无聊的东西开始,即官方 ISO/IEC 25010 标准。
该质量模型是评估系统质量的系统的基石。质量模型定义了在评估软件产品的属性时应考虑哪些质量特征。
ISO/IEC 25010:2023 定义的产品质量模型包含如下图所示的八个质量特性:
以下是 ISO/IEC 25010:2023 质量特征的简要总结:
ISO /IEC 25010 标准通过有用的分组概述了可能的质量特性。
在较高的层面上,我们可以将这些质量特征分为两个领域:
目前发布的标准(ISO/IEC 25010:2023)缺乏实用性和实际适用性,因为它省略了可部署性、能源效率或代码质量等关键术语,而是侧重于用形容词而不是直观的名词来描述的系统属性。这种语言选择使得在日常工作生活中讨论和理解质量特征变得困难。
由于 ISO 25010 缺乏实际指导和实用主义,arc42 提出了一种替代方法——arc42 质量模型“ Q42 ”。
arc42 质量模型“ Q42 ”是一种用于评估产品和系统质量的简单实用的方法。
首先了解利益相关者的期望和要求,以确定 8 个关键系统属性。这些属性旨在涵盖所需、期望或预期的 100 多个传统质量属性中的大部分。
在这种方法中,最初的重点是利益相关者。
他们已经确定了软件计划的典型利益相关者群体,这些群体通常对系统的质量有不同的期望:
质量模型提出了涵盖系统质量的八个标签。
前段时间,PO 来找我说:
“当用户打开前端时,它必须很快。因此它必须立即出现,以便用户可以开始填写表单。” 如果我们看一下 Q42,这个非功能性需求显然可以分配给顶级质量属性#efficient。如果我们查看当前分配给这个顶级组的品质,我们会发现效率,我们可以将其分配给这个“高级”非功能性需求。
当前分配的质量标记为高级组“高效”
但让我们分解一下产品所有者所期望的这种高级非功能性需求。
当我查看 PO 的声明时,我注意到以下部分:
让我们在下一章中为此示例创建一个质量场景。👇
质量场景是一种伟大且经过验证的技术,可以使这些崇高而又不精确的期望变得清晰。
Len Bass 等人引入了质量场景。在伟大的软件架构著作《软件架构实践》中。
质量场景由以下元素组成:
“快速打开前端的第一个视图”的示例质量场景 好吧,让我们尝试为提到的 PO 期望编写一个质量场景。
定义刺激源
此场景中的刺激源是“ Web 应用程序用户”。
定义刺激
刺激或事件是“通过https://my-web.app加载网络应用程序”。
定义工件及其环境
工件是“Web 前端”,环境是目标浏览器(例如基于 Chromium 的浏览器)
定义响应
响应是“浏览器加载并呈现 Web 前端”
定义响应措施
响应测量是(这就是明确性和可测量性的来源):“视图端口内 Web 前端的主要内容在 2.5 秒或更短的时间内加载。”