在设计软件系统的背景下,“功能性”和“非功能性”要求有何区别?
请分别给出两种情况的示例。
在设计软件系统的背景下,“功能性”和“非功能性”要求有何区别?
请分别给出两种情况的示例。
非功能性需求有时候会通过度量标准的方式(即可以对系统进行测量的东西)来定义,以使它们更加具体化。非功能性需求还可能描述与系统的执行无关,而是与其随时间演进相关的方面(例如可维护性、可扩展性、文档等)。
功能需求是用户对软件主要期望的东西,例如,如果应用程序是银行应用程序,则应该能够创建新账户、更新账户、删除账户等。功能需求是详细说明,并在系统设计中指定。
非功能需求不是系统直接要求的需求,而是与可用性相关(某种程度上),例如对于银行应用程序,一个重要的非功能需求是应用程序应该24/7可用,如果可能的话没有停机时间。
功能需求指一个系统或系统组件必须能够执行的功能。它可以以多种方式记录,最常见的是文档中的书面描述和用例。
用例可以是文本枚举列表或图表,描述用户操作。每个用例通过一个或多个功能需求说明行为场景。然而,通常,分析员将从已收集的一组用例开始,从中派生出必须实现的功能需求,以允许用户执行每个用例。
功能需求是系统应该完成的任务。可能包括:
一个典型的功能需求将包含唯一的名称和编号、简要摘要和原理。这些信息有助于读者了解为什么需要该需求,并在系统开发过程中跟踪需求。
LBushkin 已经更详细地解释了非功能性需求,我会补充更多内容。
非功能性需求是除功能需求以外的任何要求。它们规定了用于评估系统操作的标准,而不是特定的行为。
非功能性需求采用“系统应该是...”的形式,是整个系统或特定方面的总体属性,而不是具体的功能。系统的总体属性通常决定了开发项目是成功还是失败。
非功能性需求可分为两大类:
- 性能需求
- 接口需求
- 操作需求
- 资源需求
- 验证需求
- 验收需求
- 文档需求
- 安全需求
- 可移植性需求
- 质量需求
- 可靠性需求
- 可维护性需求
- 安全需求
一个需求是表达为功能性还是非功能性需求可能取决于:
例如,系统可能需要向用户显示数据库中的记录数量。这是一个功能需求。需要实时更新这个数字是一个非功能性需求。如果需要在记录数量变化的可接受时间内更新[显示的]记录计数,系统架构师必须确保系统能够实现此目的。
参考资料:
功能需求是与系统技术功能相关的需求。
非功能性需求是指规定了可以用来评判系统在特定条件下运行情况的标准,而不是具体的行为。
例如,如果您考虑一个购物网站,将商品添加到购物车、浏览不同商品、应用优惠和交易,并成功下订单属于功能需求。
而系统在高峰期的性能、系统从数据库检索数据所需的时间、用户数据的安全性,以及系统能否处理大量用户登录等属于非功能性需求。
功能需求 系统必须执行的活动
我认为功能需求是客户对开发人员提出的关于软件向用户提供的功能方面的要求,而非功能需求则是开发人员向客户提供的要求,即客户未提出但为确保系统平稳运行而由开发人员提供的要求,例如安全性、可扩展性、可用性等。