【系统分析师】11.1 软件需求

📋 一、概述:软件成功的"导航图"

软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。它是连接用户意图与系统实现的桥梁,是软件开发的出发点和归宿。

对于系统分析师而言,软件需求是你的工作核心和价值根基。正如软件工程大师Frederick Brooks所言:"开发软件系统最为困难的部分就是准确说明开发什么。最为困难的概念性工作便是编写出详细技术需求......如果前期需求分析不透彻,一旦做错,将最终会给系统带来极大损害。"

软件需求的本质可以从三个角度理解:

· 用户视角:用户解决问题或达到目标所需的条件或权能· 系统视角:系统或系统部件为满足合同、标准、规范所需具备的条件或权能· 文档视角:反映上述条件或权能的文档说明

核心要点:软件需求关注的是"系统必须做什么",而不是"系统怎么做"。它排除设计和实现细节,聚焦于充分说明你究竟想开发什么。

🏗️ 二、详细讲解:软件需求的层次与分类

1️⃣ 软件需求的三个层次

软件需求并非单一概念,而是包含三个不同层次,从宏观到微观逐层细化:

层次 定义 关注点 典型来源 记录文档业务需求 反映组织或客户对系统、产品高层次的目标要求 为什么要建系统? 投资人、高层管理者、产品策划部门 《项目视图与范围文档》用户需求 描述用户使用产品必须要完成的任务 用户能用系统做什么? 实际用户 《用户需求文档》、用例系统需求 从系统角度描述开发人员必须实现的软件功能 系统必须做什么? 需求分析师 《软件需求规格说明书》

业务需求是最高层次的需求,它描述了组织为什么要开发一个系统,即组织希望达到的目标。例如:"提升客户满意度"、"降低运营成本20%"等。

用户需求描述了用户的目标,或用户要求系统必须能完成的任务。通常采用用例、场景描述和事件-响应表来表达。例如:"用户可以在线查询订单状态"。

系统需求是用户需求的技术化转换,它以更技术性的语言描述了软件必须执行的事情。这是开发团队直接依据的需求。

2️⃣ 系统需求的分类

系统需求又可细分为三类:

类型 定义 关注点 示例功能性需求 规定开发人员必须在系统中实现的软件功能 系统应该做什么 "系统支持微信支付"非功能性需求 系统必须具备的除功能需求外的特性 系统应该怎么样 性能、安全、可靠性、易用性设计约束 对系统的一些限制条件或补充说明 系统必须满足什么限制 "必须采用国产数据库"

功能性需求是软件需求的主体,它们描述了系统必须执行的具体功能,使用户能完成其任务,从而满足业务需求。

非功能性需求是对功能性需求的补充,它从不同角度描述了系统的各种特性。主要包括:

· 性能需求:响应时间、吞吐量、资源利用率· 安全性:数据保密、访问控制、审计跟踪· 可靠性:平均无故障时间、容错能力· 可用性:易学性、操作效率、用户满意度· 可维护性:模块化、可测试性、可扩展性

设计约束限制开发人员设计和构建系统时的选择范围,例如:"系统必须运行在Linux环境下"、"必须采用自主知识产权的数据库系统"。

3️⃣ 需求层次之间的关系

三个层次的需求之间存在着明确的转化关系:

业务需求 → 用户需求 → 系统需求 ↓ ↓ ↓高层次目标 用户任务 具体功能

· 业务需求驱动用户需求:组织的高层目标决定了用户需要完成哪些任务· 用户需求驱动系统需求:用户任务决定了系统必须提供哪些功能· 系统需求中的功能需求和非功能需求共同确保业务目标和用户任务的实现

典型案例(超市会员多倍积分系统):

· 业务需求:提高会员忠诚度,使会员在生日及重大节日消费可获得多倍积分· 用户需求:制定会员多倍积分规则,在系统中设置积分方案,确保POS断网时也能执行· 系统需求:· 功能需求:会员积分规则设置界面、积分方案同步机制、自动积分计算· 非功能需求:通讯间隔可自定义(1分钟-24小时)、1000笔销售数据通讯不超过2分钟

4️⃣ 优秀需求的质量属性

IEEE对需求质量提出了明确标准:

属性 含义 判断问题正确性 需求真实反映用户意图 这是用户真正想要的吗?完整性 所有功能、性能、约束都被涵盖 有无遗漏的关键需求?一致性 需求之间无矛盾 不同需求冲突吗?无歧义性 每项需求只有一种解释 所有人都理解一致吗?可测试性 需求可以被验证 能设计测试用例验证吗?可跟踪性 需求可追溯到来源和实现 知道为什么有这个需求吗?

此外,还有可修改性、可理解性等质量属性。

5️⃣ 不属于需求的内容

需求规格说明中不应包括:

· 设计和实现细节(除已知约束外)· 项目计划信息(进度、预算等)· 测试信息(测试用例等)· 开发环境需求· 培训需求· 发布和支持需求

这些属于项目需求而非产品需求,应分开管理。

📝 三、重点总结与速记方法

✅ 核心重点

  1. 需求三层级:业务需求、用户需求、系统需求------必须能根据描述准确判断属于哪一层次。

  2. 系统需求两分法:功能需求 + 非功能需求 + 设计约束------功能需求管"做什么",非功能需求管"怎么样"。

  3. 需求质量六属性:正确、完整、一致、无歧义、可测试、可跟踪------评审需求的判断标准。

  4. 业务规则≠软件需求:业务规则是需求来源,但本身并非软件需求。

  5. 分清产品需求与项目需求:技术规格属于产品需求,进度预算属于项目需求,分开管理。

⚡ 速记口诀

1️⃣ 需求三层级"上中下"口诀

"业务定目标,用户说任务,系统写功能"

2️⃣ 系统需求"两分法"口诀

"功能管做什么,非功管怎么样,约束是紧箍咒"

3️⃣ 非功能需求"五性"口诀

"性能力可靠,可用易维护"(性能、安全性、可靠性、可用性、可维护性)

4️⃣ 需求质量"六属性"口诀

"正确完整一致,无歧可测可追"

5️⃣ 真题速判法(用于案例分析)

· "用户能......" → 用户需求· "系统应......" → 功能需求· "提升......""降低......" → 业务需求

6️⃣ 一句话总纲

软件需求 = (业务定方向 + 用户说任务 + 功能写具体 + 非功保质量 + 约束划边界),是系统开发的"导航图",质量直接决定项目成败。


掌握11.1节,意味着你能够准确区分和理解软件需求的各个层次与类型,为后续的需求获取、分析、文档化打下坚实基础。这是系统分析师需求工程能力的起点。

相关推荐
怪侠_岭南一只猿2 小时前
爬虫学习阶段三:动态网页爬取(完整学习文档)
爬虫·python·学习
失败才是人生常态2 小时前
大数据基础学习
大数据·学习
星幻元宇VR2 小时前
VR社区安全学习机:居民安全教育新选择
科技·学习·安全·vr·虚拟现实
困死,根本不会2 小时前
Electron 开发环境搭建超详细学习笔记
笔记·学习·electron
是店小二呀2 小时前
用 Rokid AR 眼镜打造沉浸式外语学习助手:从想法到落地的完整开发实录
学习·ar
tzc_fly3 小时前
VideoWorld1-2:纯视频学习获取世界知识
学习·音视频
降临-max3 小时前
JavaWeb企业级开发---Maven高级
java·笔记·学习·maven
Gorgous—l3 小时前
数据结构算法学习:LeetCode热题100-贪心算法篇(数组中的第K个最大元素、 前 K 个高频元素、数据流的中位数)
数据结构·学习·算法
哎呦 你干嘛~3 小时前
tcpip通讯
学习