功能性与非功能性需求—完整的指南、定义和技术实例

2,352 阅读5分钟

DZone>Web Dev Zone>功能性与非功能性需求。完整的指南、定义和技术实例

功能性需求与非功能性需求。完整的指南、定义和技术实例

在软件开发领域有两种类型的需求:功能型和非功能型。继续阅读以了解两者之间的区别。

Anastasiia Komendantova user avatar 通过

Anastasiia Komendantova

-

五月。24, 22 - Web Dev Zone -分析

喜欢 (1)

评论

保存

鸣叫

3.41K浏览次数

加入DZone社区,获得完整的会员体验。

免费加入

什么是功能需求?

功能需求规定了你的系统(或系统组件)必须具备的功能。换句话说,他们定义了你的定制软件需要做什么。如果这些要求没有得到满足,软件就会失败;这是不容商量的。最常见的功能需求的例子是(1)用例和(2)文件描述。

用例

用例可以是带有文字或图表的编号列表,描述用户行为。每个用例通过一个或多个功能需求说明行为场景。首先,选择一组用例--然后分析者可以推导出为了实现每个用例而需要实现的功能需求。例如,在下图中提出了一个会议管理系统的导航用例模型。每个主要功能都与用户角色相关。下面是一个地铁售票机的用例编号表的例子。

书面文件描述

一个典型的书面功能需求将包含一个独特的名称和编号,一个摘要和一个理由。这些信息是用来帮助读者理解为什么这个需求是必要的,并开发一个系统来跟踪它。书面功能需求的一些例子包括。

  • 接口要求
  • 数据操作和处理要求
  • 验证要求
  • 文件要求
  • 安全要求
  • 验收标准

在开发阶段,功能需求被用来描述系统是否按预期工作。不幸的是,这意味着可能有更多的需求类型需要你写下来,直到你创建一个正确工作的系统的完整画面。

谁负责准备功能需求?

功能需求通常是由业务分析师、系统分析师和实施团队合作完成的。项目经理负责确保功能需求按时交付,并由系统负责人和QA签字确认。

什么是NFRs或非功能需求?

非功能需求 定义了软件如何实现其功能目标--不是系统将做什么,而是系统将如何做。这些需求定义了用于评估系统的性能、可靠性和可维护性的标准。它们定义并对正在开发的软件以及开发过程施加外部约束。非功能需求是作为系统整体的一个具体方面或一般属性提出的--而不是一个确切的功能。方面=与系统的许多部分相关的特征,但与系统的主要功能无关 属性=软件特性,包括完整性、可靠性、准确性等。非功能需求可以分为两大类:性能和演进的品质。

性能品质进化品质
可靠性可测试性
可存活性可维护性
高效性可扩展性
完整性可扩展性

性能质量是在运行时观察到的,而进化质量则体现在系统的静态结构中。让我们仔细看看IEEE发表的一篇论文中提出的一些非功能需求的例子。

性能方面

效率。它对资源的利用有多好?

完整性/安全性:它对网络攻击的脆弱性如何?

可靠性。对其功能的信任程度如何?

生存性:系统在恶劣条件下的表现如何?

设计

正确性。系统在多大程度上符合要求?

可验证性:验证系统的性能有多容易?

可维护性:修复软件有多容易?

适应性

可扩展性:升级或扩展其能力/性能有多容易?

互操作性:它与其他系统的互动有多容易?

灵活性:它有多容易改变?

可移植性:系统的运输有多容易?

可重用性:它有多容易被转换到另一个系统中使用?

谁负责准备非功能需求?

虽然功能需求可以在功能需求文件(FRD)中提出,但产品需求文件(PRD)结合了功能和非功能的需求。 非功能需求 通常由开发者、软件架构师和其他技术专家来定义,产品经理通常准备PRD。

比较表

要想一目了然地看到功能和非需求的区别 ,只需查看下面的表格。

功能性需求非功能要求
帮助读者了解系统将有哪些功能帮助读者了解系统将如何执行
解释系统的必要功能解释系统的行为方式
确定系统必须(和不必须)做什么确定软件应该如何做
如果这些要求没有得到满足,系统就不会工作。如果这些要求没有得到满足,系统仍然可以工作
确保软件满足用户需求确保软件将满足用户的期望
简单的定义较难定义
可以通过一个用例来记录可以作为一个质量属性来记录

总结

你的软件需要同时满足功能和非功能需求,以获得最佳性能。前者使其能够运行,而后者则增强了用户体验。因此,与一个定制的软件开发团队合作是很重要的,他们会一丝不苟地记录这两类需求。否则,你可能会得到一个令人失望的产品或一个超出预算和时间限制的体面产品。

需求 系统 软件开发 用例

经Anastasiia Komendantova许可发表于DZone。请看原文。

DZone贡献者所表达的观点是他们自己的。

在DZone上受欢迎


访谈

网络开发 合作伙伴资源