我们在选购新车时,会预设一些选购的标准,比如GPS导航必须能够保存目的地,或者必须要买黑色的车。我们可能下意识以为这些是功能性需求,但实际上这些特性都是与用户体验相关的非功能性需求。
非功能性需求是对软件系统的全局性约束,包括但不限于开发成本、运营成本、性能、可靠性、可维护性、可移植性和扩展性等。一个与功能无关,但与可靠性、效率、可用性、可维护性和可移植性等属性相关的需求。
在系统工程和需求工程中,非功能性需求是一个指定可以用来判断系统操作的标准,而不是特定行为的需求。
在描述非功能性需求时常会用到一些副词或修饰语,如“系统应能快速打印发票”,或“系统应在确保信息安全的情况下打印出发票”。
软件的非功能性需求关乎用户体验。忽视这些需求可能会导致项目延期,预算超支,用户满意度降低,也可能会导致项目目标不明确,进而导致产品偏离用户的期望。
非功能性需求弥补了开发者认为客户想要的和客户真正想要的之间的差距。
研究显示,软件开发成本中的60%到80%用于修复产品存在的问题,完善的非功能性需求可以消除约50%到80%的产品缺陷。
既然我们已经知道了非功能性需求的重要性,那么问题来了:如何有效地将非功能性需求融入到产品开发过程中呢?
产品的”性能”包括质量、可靠性、可制造性、可用性、可服务性、可升级性等。
非功能性需求关注用户体验,定义了系统的质量、约束条件或外部接口等方面的要求。如果我们想设计出一个具有可扩展性的系统,仅凭口头描述往往不够清楚,需要将目标具体化,比如:“构建出一个在未来24个月内能够管理至少50,000名用户的系统,以防止系统崩溃对用户造成困扰”。
另外,非功能性需求还可能涵盖以下方面:
就像购车一样,不同的人获得最佳用户体验所要求的产品特性不同。你可能需要加热座椅,而其他人则可能想要三排座椅。所以,你为项目定义的非功能性需求会根据客户期望而变化。然而,一个可能的非功能性需求类别列表可以作为你的起始点,帮助你思考在你的需求列表中应该包含哪些非功能性需求。
把非功能性需求想象成一种容器,里面装载的是与用户体验密切相关的重要属性。要记住,非功能性需求并不是关于产品将要完成什么任务(那是功能性需求的范畴),而是关于这个项目将要达到的目标或理想状态。
如果你选择了正确的容器并且衡量了正确的事物,那么你就可以放心,你交付的产品会满足客户的期望——因为你已经明确地定义了这些期望。每个人都在同一认知水平上,这在你集中管理你的需求时,会进一步增强。
接下来,让我们看看一些常见的非功能性需求类别:
不同项目的需求会有所不同,常见的需求类别包括: 系统的可用性(系统是否易于使用)、容量(系统能处理多少任务或用户)、可靠性(系统的稳定性或故障率)和安全性(系统防止非法访问或攻击的能力)。可先从这些基本的需求类别着手,逐渐扩展到其他需求领域,最终构建出属于自己的新产品开发项目需求模板。
功能性需求和非功能性需求都是软件开发的重要组成部分,关注点不同:
两者都是必不可少的,功能性需求解释了系统应该执行的任务,而非功能性需求解释了完成这些任务的方式、限制和其他期望。
非功能性需求文档是软件需求规格说明(SRS文档)的关键组成部分。SRS描述了软件应具备的性能、约束特性及其实现方式,定义了用户对产品的性能、可靠性、安全性等方面的需求。
一份标准的SRS通常会包含以下部分:
序言:对系统进行简要概览,提供相关的背景信息,对需要提前定义的术语进行阐释。 总体描述:阐述项目的全局目标、商业价值及项目愿景。 详细需求:这部分明确规定了系统所需的特定属性、功能要求,以及与之相关的数据库需求等。
在整个软件和硬件开发生命周期中,团队需要共同参与定义功能性和非功能性需求。如果使用的工具各不相同,就会影响团队协作。统一化的需求管理方式能够提高效率,增强协作能力,确保团队开发出高质量、合规的产品。
使用统一需求管理方案的好处:
统一的需求管理平台(如PingCode等)可帮助我们更有效地定义和处理非功能性需求,提高产品开发效率。所有数据、对话和决策都可被集中在同一个系统中,确保了信息的一致性和准确性,有助于减少误解和混淆。统一的需求管理平台也可以避免重复输入数据或者重复讨论同一个问题,更好地跟踪项目的进度,避免错过重要的时间节点,可极大提高客户对产品的满意度。
需求管理指南:
需求管理: 需求管理主要内容 | 需求管理的重要性 | 采用敏捷方法进行需求管理 | 如何克服需求管理的 5 大挑战 | 更多
需求编写: 功能需求的示例和模板 | 采用 EARS 方法来改进需求工程 | 如何编写一份优秀的产品需求文档(PRD) | 功能性需求与非功能性需求的区别 | 有效需求的特征 | 更多
需求收集和管理流程: 需求工程概述 | 产品团队的需求分析指南 | 敏捷产品团队的 11 种需求收集技巧 | 定义和实施需求基线 | 更多 需求的可追溯性: 什么是需求可追溯性 | 可追溯性在现代产品和系统开发中的关键作用 | 如何创建和使用需求追溯矩阵 | 更多
需求确认和验证: 产品团队的需求验证和确认 | 更多
需求管理领域文章:
做好需求分析的4大关键认知 | 盘点国内9款热门需求管理系统 | 构建产品路线图的方法与工具 | 做好需求优先级判断的7种主流模型 | 采用敏捷方法进行需求管理 | 更多