软件开发中质量要求的重要性

抽象的

在大多数软件开发项目中,实现更多功能的愿望和质量要求之间的平衡是一个挑战。 功能需求经常受到关注,因为它们对用户体验和商业价值有切实的影响。 但质量要求默默地支撑着系统的可靠性、安全性和稳健性。 在本文中,我们深入探讨了质量需求所扮演的关键角色,以及大多数软件项目在管理这两类需求时所经历的压力。 处理功能和质量之间的紧张关系是一个挑战。 可见功能的吸引力常常掩盖质量属性,导致无意中忽视质量要求。 这种不平衡可能会导致代价高昂的后果,包括运营中断、发布后修复以及安全漏洞或自定义数据隐私泄露可能导致的组织声誉损害。 为了应对这一挑战,组织必须授权其技术团队影响项目优先级并积极参与塑造产品质量。

介绍

根据敏捷采用调查 [Ambler(2008)],实现软件质量仍然是 77% 受访者的主要目标。 另一项调查 [digital.ai(2021)] 还表明,42% 的参与公司采用敏捷来提高软件质量,46% 的公司能够提高软件质量 [digital.ai(2021)]。 虽然这些数字表明一些敏捷采用者设法通过使用敏捷实践来提高软件质量,但这些数字还表明,敏捷方法的使用并不总是能带来质量改进。 这是有问题的,因为软件质量差会带来巨大的经济成本。 美国信息与软件质量联盟(CISQ)发布2018年美国软件质量状况报告 [Krasner(2018)]。 报告估计,2018 年美国软件质量不佳造成的成本约为 2.84 万亿美元。 据报告,大约 60% 的软件开发工作用于查找和修复缺陷 [Krasner(2018)]。 生产软件中的缺陷可能会对业务产生负面影响。 该报告还声称,由软件相关缺陷造成的业务中断每分钟的成本可能在 32.22 美元到 53.21 美元之间 [Krasner(2018)]。 软件缺陷可能会继续进入生产环境。 这些缺陷并不总是有效的; 它们涵盖软件的各个方面,包括性能,有时甚至不符合特定标准。 然而,我们应该继续努力预防、解决缺陷并减轻其经济影响。 这包括对理解质量要求的细致关注。

信息技术 (IT) 和软件工程行业并非没有因质量要求低而导致的故障。 波音 737 MAX 软件问题和 Healthcare.gov 的推出在某种程度上可以归因于质量要求的失误。 2018 年印度尼西亚和 2019 年埃塞俄比亚发生的两起波音 737 MAX 坠机事故均与 MACS 软件故障有关。 调查报告声称该软件存在设计和实施问题。 此案例凸显了波音软件开发流程中的问责失败,包括质量保证实践不足和缺乏文档。 同样,2013 年推出的 Healthcare.gov 不仅存在可用性问题,还存在技术和功能缺陷。

质量需求,也称为系统质量,是软件开发的重要组成部分,它指定了软件系统必须具备的属性、特征和性能标准。 这些需求描述了软件应如何表现、执行以及与其用户、环境和其他系统交互。 质量需求包括广泛的期望,这些期望共同决定了软件的整体质量。 其中一些非功能性期望可能包括法规或行业合规性、性能和代码可维护性。

质量要求的作用

明确的质量要求有助于在开发周期的早期识别和减轻风险。 通过在项目开始时和/或开发周期期间解决与性能、安全性或可靠性相关的潜在问题,团队可以使这些要求成为其开发工作的一部分。 质量要求也是整个开发过程中验证的参考点。 开发团队可以使用它们来评估软件在开发过程的各个阶段和迭代(从设计、开发、测试和部署)是否满足这些要求的期望。 这种持续的验证确保质量仍然是开发工作的重点。

一旦充分理解,质量要求就会通过让开发人员清楚地了解软件在其核心功能之外必须实现的目标来指导开发人员。 它们为与架构、设计、编码决策和技术选择相关的关键设计和开发决策提供信息。 例如,性能要求会影响硬件的选择和其他与基础设施相关的决策。 同样,安全需求决定了漏洞保护、身份验证和加密机制的实施。 质量要求一旦经过讨论和阐明,就成为技术和非技术利益相关者之间的合同。 它们可以促进富有成效的讨论,有助于调整期望并避免做出不准确的假设。

应对紧张局势

在软件开发中,对更多功能的渴望与有时被忽视但同样重要的质量要求之间经常存在着永久的紧张关系。 功能需求定义了软件的特性、功能和用户交互。 这些需求是有形的、可见的,并且很容易被利益相关者理解和寻求,因为它们被认为可以增加业务价值。 此类需求总是会占据中心位置,因为它们代表了软件预期提供的功能。 然而,这种对功能的强调有时会以牺牲质量要求为代价。 质量需求可能不像功能需求那么明显,主要是因为业务利益相关者通常没有接受过质量需求方面的教育,他们更倾向于看到更多功能,认为它们可以为其流程增加更多价值。 那么,如何缓解这种紧张情绪呢? 在此之前,我们先来谈谈造成这种紧张局势的根本原因。 有两个常见的陷阱:当项目的约束压倒了开发过程时,功能的诱惑和质量要求的忽视。

功能的魅力: 功能需求对业务利益相关者具有内在的吸引力。 它们是可见的、有形的、可以演示的、展示进步和功能的。 客户和最终用户通常会优先考虑这些要求,因为它们直接影响软件的实用性和竞争力。 此外,与代码可维护性等质量要求相比,它们为业务流程增加了有形的价值,而代码可维护性是不可见的,业务利益相关者对其了解较少。

忽视质量要求: 有时,即使项目了解质量要求,它也可能成为项目本身固有的一些限制的受害者。 其中一些限制可能是满足最后期限并满足用户对更多功能的需求。 后者在敏捷团队中很常见,因为产品所有者往往会影响开发工作的优先级。 在这些情况下,团队可能会无意中忽视质量要求。 这些不太明显的品质有时也被视为次要问题,可以在开发过程的后期解决,特别是当业务利益相关者要求提供更多功能时。

忽视质量要求或成为某些项目限制的受害者会带来隐性成本。 缺乏足够的性能标准、安全合规性或可用性的软件可能会导致昂贵的运营中断和昂贵的发布后修复。 当公司具有公众知名度并承担大量技术债务时,这些影响也会损害公司的声誉。
在功能和质量要求之间实现平衡至关重要。 然而,这需要授权技术团队影响项目的优先级,并在塑造产品质量方面拥有发言权。 为了驾驭这种微妙的平衡,软件开发项目需要在业务和技术团队之间平衡分配决策。

授权技术团队影响项目优先级可能会导致认识到那些最接近代码的人通常最适合评估不同需求的影响。 通过让他们在影响产品质量方面拥有发言权,项目可以利用宝贵的专业知识来源,从而防止日后出现代价高昂的错误。 这种授权并不是要削弱业务利益相关者或产品所有者的作用,而是要促进协作和分担责任。 通过培育一种在需求讨论期间积极寻求技术投入的文化。 对功能和品质的追求是一个共同的旅程。 如果没有开发人员、架构师和质量保证专家参与需求研讨会、需求优先级划分和决策过程,这一切就不会发生。

实现这种平衡证明了组织致力于提供不仅满足功能需求而且坚持最高质量标准的软件。 它是利用技术团队的集体智慧来指导项目优先级,确保同时考虑功能和质量要求,最终产生质量更高的软件。
总之,功能和质量需求之间的紧张关系是软件开发的一个持久的方面,并且不容易解决,甚至注意到或承认。 功能性之所以受到关注,是因为它是有形的且备受追捧。 质量要求悄然支撑着软件的可靠性、安全性和稳健性。 在这两组要求之间取得适当的平衡通常是自我意识的持续练习。 如果项目能够巧妙地应对这种紧张局势,确保软件不仅能够按预期运行,而且在性能、安全性和整体质量方面也表现出色,那么项目就会更加成功。 在这种平衡中,关键在于交付的软件不仅能够满足用户需求,而且能够在不断发展的数字环境中经受住可靠性和稳健性的考验。


作者: 亚当·自然

Adam Alami 是丹麦奥尔堡大学的助理教授。 他在信息技术实践方面拥有丰富的经验。 他的职业生涯始于软件开发,后来又涉足业务分析和项目管理。 二十年来,参与重大 IT 转型项目一直是他工作的支柱。 他选择的研究领域符合软件工程的合作、社会和人类方面的广泛主题。 他对业务分析和当代软件开发实践有着浓厚的兴趣。 他拥有丹麦哥本哈根 IT 大学计算机科学博士学位、悉尼科技大学 (UTS) 计算机科学硕士学位以及蒙特利尔魁北克大学软件工程学士学位。 电子邮件: [email protected]。 推特:@AdamAlamiDK。


参考:

[Ambler(2008)] SW Ambler,2008 年 2 月。URL http://www.ambysoft.com/surveys/agileFebruary2008.html

[digital.ai(2021)] 数字.ai。 第 15 份敏捷状态报告:敏捷引领疫情和数字化转型,2021 年 7 月。URL https://digital.ai/catalyst-blog/15th-state-of-agile-report-agile-leads-the-way-through-the-pandemic-and-digital

[Krasner(2018)] H.克拉斯纳。 研究报告,2018 年 9 月。网址 https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report/

Leave a Reply

Your email address will not be published. Required fields are marked *

近期新闻​

编辑精选​