软件需求分析举例

⚡ 智能摘要

软件需求分析将利益相关者的需求分解为功能性和非功能性描述,从业务、架构和系统三个层面对其进行排序,然后根据质量属性检查每个描述,以确保其可测试性。 trac可实现的、优先的规范。

  • 📐 需求类型: 业务、架构和设计以及系统和集成需求构成了每个软件规范的三个层次。
  • 🔀 功能性与非功能性: 功能性语句描述系统必须做什么,而非功能性语句设定可衡量的性能、安全性和可用性目标。
  • 📚 其他来源: 当缺少正式简报时,同事、以前的版本、较早的需求文档、错误报告和安装指南可以提供需求。
  • 质量属性: Atomic,唯一标识的,完整的,一致的, trac可实现性、优先级和可测试性是每个需求必须满足的七个属性。
  • 🔗 端至端 Trac能力: 业务需求映射到设计,设计映射到代码,代码映射到测试用例,从而使项目的范围和覆盖范围在整个项目中保持可见。
  • 🎯 可测试的措辞: 将“每页”和“可接受时间”等模糊术语替换为具体的页面名称和可衡量的目标,例如 5 秒。

软件需求分析

软件需求是指系统中必须实现的功能性或非功能性需求。功能性需求是指为用户提供特定服务。

例如,在银行应用程序中,功能要求是当客户选择“查看余额”时,他们应该能够查看其最新的账户余额。

软件需求也可以是非功能性的,例如性能需求。例如,一项非功能性需求可能规定系统的每个页面都应该在 5 秒内加载完毕。

所以,基本上 软件需求是

  • 功能性或
  • 非功能性

需要 必须将其实施到系统中。 软件需求通常以语句的形式表达。

需求类型

业务需求这些是从项目商业案例中提取的高级需求。例如,一个移动银行服务系统为东南亚地区提供银行服务。针对印度市场确定的业务需求是账户概览和资金转账,而针对中国市场的业务需求是账户概览和账单支付。

国家 提供银行功能或服务的公司
印度 账户摘要和资金转账
中国 帐户摘要和 Bill 付款方式

Archi结构和设计要求这些需求比业务需求更详细,并驱动解决方案架构。它们决定了实现业务需求所需的整体设计。对于教育机构而言,典型的架构和设计用例包括登录、课程详情和注册。需求如下所示。

银行用例 需求
Bill 付款方式 此用例描述了客户如何登录网上银行并使用 Bill 支付功能。客户可以查看已注册收款方的未结账单概览。客户可以添加、修改和删除收款方信息。客户可以针对不同的账单操作设置短信和电子邮件提醒。客户可以查看已支付账单的历史记录。此用例的使用者是银行客户或支持人员。

系统和集成要求最底层是系统和集成需求。它详细描述了每一项需求,可以用日常业务语言编写的用户故事来表示。这些需求包含丰富的细节,以便开发人员能够立即开始编码。 Bill 下面这个支付模块示例展示了添加收款方的要求。

Bill 付款方式 申请条件
添加 BillERS 公用事业供应商名称、客户关系编号、自动付款(是/否)、一次性付清 Bill – 是/否,自动付款限额 – 如果满足以下条件则不付款 Bill 超过指定金额

有时,项目可能没有任何需求或文档可供参考。即便如此,您仍然可以依赖其他需求信息来源来制定软件或测试设计。以下列出了您可以依赖的其他需求信息来源。

其他要求来源

  • 来自已经从事该项目的同事或员工的知识转移
  • 与业务分析师、产品经理、项目负责人和开发人员讨论项目。
  • 分析已实现的先前系统版本
  • 分析项目中的旧需求文档
  • Rev查看之前的错误报告;一些错误报告会被转化为功能增强请求,这些请求可能会在当前版本中实现。
  • 如有安装指南,请查看以了解需要进行哪些安装。
  • 分析团队试图实施的领域或行业知识。

无论你使用哪种需求来源,都要以共享格式记录下来,并由经验丰富的团队成员进行审核。

如何分析需求

以教育软件系统为例,学生可以在该系统中注册不同的课程。

让我们来学习如何分析需求。每项需求都必须满足一系列标准质量属性,其中包括:

  • Atomic
  • 唯一标识
  • 完成:
  • 一致且明确
  • 可追溯:
  • 优先
  • 可测试

分析需求

下表用三列分别展示了每个属性:

  1. 第一列表示-“需求质量”
  2. 第二列表示-“有一些问题的不良需求”
  3. 第三列显示的是“转化为良好需求”的相同需求。
需求质量 不良需求示例 良好需求示例
Atomic 学生将能够注册本科和研究生课程 学生可以注册本科课程。学生可以注册研究生课程。
唯一标识 1. 学生将能够注册本科课程。1. 学生将能够注册研究生课程。 课程注册。学生可以注册本科课程。学生可以注册研究生课程。
完成: 教授用户将通过提供用户名、密码和其他相关信息登录系统 教授用户将通过提供用户名、密码和部门代码登录系统
一致且明确 学生将学习本科课程或研究生课程,但不能同时学习两者。一些课程将对本科生和研究生开放 学生将拥有本科学位或研究生学位,但不能同时拥有两者
可追溯: 维护映射到 BRD req.ID 的学生信息? 维护学生信息 - 映射到 BRD 请求 ID 4.1
优先 注册学生 - 优先级 1。维​​护用户信息 - 优先级 1。选课 - 优先级 1。查看成绩单 - 优先级 1。 学生注册 - 优先级 1;维护用户信息 - 优先级 2;选课 - 优先级 1;查看成绩单 - 优先级 3
可测试 系统的每个页面都会在可接受的时间范围内加载 系统的注册学生和注册课程页面将在 5 秒内加载

让我们更详细地了解这些属性,首先是: Atom我知道了。

Atomic

Atomic

每个需求都应该是原子性的,这意味着它必须处于最底层的细节,并且不能进一步分解成组件。以下示例比较了原子性需求和非原子性需求。

继续以教育领域系统为例:这里,不合理的需求是“学生可以注册本科和研究生课程”。这是不合理的需求,因为它不是原子性的——它混淆了本科和研究生课程这两个不同的实体。相应的合理需求将其拆分为两个需求。一个需求涵盖本科课程的注册,另一个需求涵盖研究生课程的注册。

唯一标识

唯一标识

下一个质量属性是唯一标识。在反例中,两个不同的需求共享同一个 ID#1。如果团队通过 ID 引用需求,就无法明确指的是哪个需求。正确的做法是将它们重新归类到“第一部分——课程注册”下,并包含子需求 1.1(本科课程注册)和 1.2(研究生课程注册)。

完成:

完成:

每项需求都应该完整。例如,这里不恰当的需求描述为“教授用户将通过提供用户名、密码和其他相关信息登录系统”。“其他相关信息”过于模糊。完整的需求应该列出教授必须提供的具体字段,例如院系代码。

一致且明确

一致且明确

每一项要求都应保持一致且明确。在反例中,一项要求规定“学生只能修读本科课程或研究生课程,不能两者兼修”,而另一项要求则规定“部分课程本科生和研究生均可选修”。

第一项要求意味着课程分为两个互斥的类别,但第二项要求与之矛盾,因为它允许一些课程同时向两个群体开放。

好的要求通过明确规定每门课程要么是本科课程要么是研究生课程来解决冲突,学生只能选修一类课程。

可追溯:

可追溯:

每一项要求都必须是 trac之所以可行,是因为需求存在于多个层面:业务层面、架构和设计层面,以及系统和集成层面。

当您将业务需求转化为架构和设计需求,或者将架构和设计需求转化为系统和集成需求时, trac必须保证可实现性。每个业务需求都应该对应一个或多个架构和设计需求。在反例“维护学生信息——是否对应业务需求文档(BRD)需求 ID?”中,需求 ID 缺失。

良好的需求记录了相同的语句,但明确映射到 BRD 需求 ID 4.1。每个需求都必须包含一个 trac能力图ping系统和集成需求也应该与实现这些需求的代码以及验证这些需求的测试用例相对应。

Trac因此,可操作性贯穿整个项目始终。

优先

每个需求都必须进行优先级排序,以便团队知道哪些功能需要优先实现,哪些可以稍后再做。在反例中,“注册学生”、“维护用户信息”、“选课”和“查看成绩单”都被设置为优先级 1。但并非所有功能都优先级为 1,因此必须根据实际情况对需求进行排序。在正例中,“注册学生”和“选课”的优先级最高,为 1,“维护用户信息”为 2,“查看成绩单”为 3。

可测试

每个需求都应该是可测试的。例如,“系统的每个页面都将在可接受的时间范围内加载”就是一个反例,它无法测试,原因有二。首先,“每个页面”可能意味着几十个页面,这将大大增加测试工作量。其次,“可接受的时间范围”没有明确定义——对谁而言是可接受的?又以什么标准来衡量?好的需求通过明确指出具体的页面(例如“学生注册页面”和“课程注册页面”)并设定一个可衡量的目标值(例如 5 秒)来解决这两个问题。

常见问题

人工智能工具能够对利益相关者的反馈进行聚类分析,标记含糊不清的语言,并检测大型基线中重复或缺失的需求。业务分析师仍然需要根据需求收集记录对每条建议进行核实,然后才能将其纳入已批准的需求集。

GitHub Copilot 和 GPT 根据简短提示自动生成用户故事、验收标准和业务规则。业务分析师会根据原子性、可测试性等质量属性审查每个输出结果。 trac在成为正式要求之前即可启用。

软件需求规格说明书(SRS)是一份正式文档,它列出了系统的功能需求、非功能需求、接口和约束条件。大多数团队在编写SRS时遵循IEEE 830和ISO 29148标准。

需求收集(或称需求获取)是指从利益相关者那里收集原始需求。需求分析则负责整理、提炼这些需求,并对照七个质量属性进行检验,从而确保交付团队获得清晰、可测试的需求陈述。

使用诸如 MoSCoW(必须、应该、可以、会)、Kano 分析、加权评分或延迟成本等方法。将业务价值与交付工作量和风险相结合,然后在开发开始前与发起人和产品负责人商定顺序。

A 要求 Trac能力矩阵将每个需求与其设计元素、代码组件和测试用例关联起来。它提供前向、后向和双向能力。 trac确保不会遗漏任何内容,不会过度设计,也不会在没有进行相应测试的情况下交付。

措辞含糊不清,积压工作未分优先级,缺失 trac可用性、将解决方案想法与业务需求混为一谈、以及在没有变更控制的情况下冻结范围,是导致生产中返工、进度延误和缺陷最多的错误。

常用工具包括 Jama Connect、 IBM 门, Modern Requirements HPMC胶囊 Azure DevOps,Jira 与 XrayVisure Requirements ALM 和 Blueprint。团队根据监管需求、团队规模和深度选择平台。 trac需要具备相应的能力。

总结一下这篇文章: