您需要了解的软件要求

2025-06-07

您需要了解的软件要求

想象一下,你的客户请你创建一个能够满足其所有需求的 Web 应用程序。客户只会告诉你这些,你能做到吗?显然,你缺少更多信息,而且确实存在需求,但你知道什么是需求吗?如果我们没有明确定义需求,会有什么后果?需求有哪些类型?本文将尝试以通俗易懂的方式解答这些问题。

概括

什么是要求?

首先,我们需要了解软件开发环境中的需求是什么。Shari
Pleeger 对此给出了一个很好的定义:

系统特性或系统为实现其目标所能完成的事情的描述

换句话说,需求是一种表述,用于识别产品或流程的操作、功能或设计约束或特性。该需求必须明确可测试可衡量,并且对于产品或流程的验收(由消费者或内部质量保证指南)是必要的。
每个需求都是基于现实中存在的问题而创建的,而软件只是解决该问题的一种方式。

为什么它们很重要以及定义不明确的要求的后果

现在我们知道了什么是要求,我们必须问:

“为什么对于从事 IT 工作的人来说了解这一点如此重要?”

我会给你一些理由。有了需求,我们就能:

  • 为项目规划提供依据
  • 研究变更请求的必备条件
  • 从开发的最初阶段开始进行风险管理
  • 它们是验收测试的基础
  • 合同管理

图片1

如果需求定义不明确,会发生什么?
第一个也是最自然的后果就是项目交付延迟。如果我们在启动一个项目或冲刺时,对开发内容缺乏清晰的需求,那么出现 bug 的可能性就非常高!这会增加开发人员和 QA 团队的工作量,从而降低他们的工作质量。
如果在生产环境中出现 bug,我们会遇到很多不满意的用户,从而降低产品信心,最终导致系统废弃。另一个后果是增加系统维护成本。

我们如何才能有一个好的需求

需求的编写方式因团队而异,但它们都应该具有以下三个共同特征:

  • 明确
  • 可测试
  • 可衡量

要求级别

用户需求

用户需求定义了我们的软件需要实现的功能。它可以描述用户在必要性、期望、限制和界面方面所面临的问题。
这类需求是为客户编写的,我们使用自然语言和图表来表达。以下是一个待办事项列表应用的用户需求示例:

用户应该能够在列表中插入新任务

系统要求

系统需求是定义系统有效运行所需的硬件、软件和网络组件的功能和约束的规范。
这些需求对于系统的设计、实现和维护至关重要。它们负责描述必须做什么,而不是如何做。
使用我们已经用过的相同需求,我们可以对其进行更详细的说明:

用户需求 系统要求
用户应该能够在列表中插入新任务 - 用户应该能够单击“插入”按钮来添加任务
- 当用户单击“
插入”按钮时,任务添加应该出现在列表中
- 只有登录用户才能访问任务列表

需求类型

功能要求

功能需求描述了一个系统应该执行的操作。它们描述了系统应该提供什么,系统应该如何响应特定输入,以及系统在特定情况下应该如何表现。它们也可以描述系统不应该做什么。

功能需求可以描述用户或系统需求。

非功能性需求

非功能性需求描述系统或环境应提供的服务或功能。它们负责定义系统的架构。非功能性需求分为以下几类:

  1. 表现:
    • 响应时间:指定系统响应用户输入的最大可接受时间。
    • 吞吐量:定义系统在给定时间内可以处理的交易或操作的数量。
  2. 可用性:
    • 用户界面 (UI) 和用户体验 (UX):指定与设计、易用性和整体用户体验相关的标准。
    • 可访问性:确保残障人士可以使用该系统。
  3. 可靠性:
    • 可用性:指定系统可运行的时间百分比。
    • 容错:定义系统在出现故障或错误的情况下继续运行的能力。
  4. 安全:
    • 身份验证:描述如何识别和验证用户。
    • 授权:指定授予不同用户或角色的访问级别。
    • 数据加密:需要使用加密来保护敏感数据。
  5. 可扩展性:
    • 水平可扩展性:描述系统通过添加更多硬件来处理负载增加的能力。
    • 垂直可扩展性:描述系统通过增加现有硬件的容量来处理负载增加的能力。
  6. 兼容性:
    • 硬件兼容性:确保系统可以在指定的硬件配置上运行。
    • 软件兼容性:确保系统可以与指定的软件组件一起工作。
  7. 可维护性:
    • 可修改性:描述系统修改或更新的难易程度。
    • 可测试性:指定系统可轻松测试以确保其正确性。
  8. 可移植性:
    • 平台独立性:描述系统在不同操作系统上运行的能力。
    • 数据可移植性:确保数据可以在不同系统之间轻松传输。
  9. 文档:
    • 用户文档:指定用户手册和指南的要求。
    • 技术文档:描述系统架构、API文档等的要求。
  10. 监管与合规:
    • 法律要求:确保系统符合相关法律法规。
    • 行业标准:指定遵守行业特定标准。

结论

正如我们所见,软件需求对我们来说非常重要,而且需求类型繁多,但最重要的是确保在开始开发之前,我们对这些需求进行了清晰的定义。
希望本文对您有所帮助。 
如有任何疑问,请随时联系我! 
Bisous 💅🏼

文章来源:https://dev.to/m4rri4nne/what-you-need-to-know-about-software-requirements-2hc0
PREV
你可能不需要 TypeScript Enum
NEXT
ReactJS 中常见的错误