软件工程本科生宝典
首页/课程学习引导/软件需求工程
软件工程 · 大三上

软件需求工程

Software Requirements Engineering

软件工程
课程类别
大三上
建议学期
重要性
重要程度
难度
学习难度

📖这门课到底讲什么

软件需求工程聚焦项目最昂贵也最容易出错的环节——需求:需求获取与启发技术(访谈、观察、问卷、原型、工作坊)、需求分析与建模(用例、场景、数据流、状态建模)、需求规格化(SRS 文档结构与质量特征)、需求验证(评审、原型验证、验收标准)、需求管理与变更控制(基线、追踪矩阵、影响分析、优先级排序方法)。它强调第一手地理解用户真实问题而非直接接受表层诉求。学完你应能独立完成一次需求调研、写出无歧义可验证的规格说明、建立需求追踪矩阵把每条需求贯穿到设计与测试用例、并对需求变更做出影响评估与方案权衡。

🎯为什么必须学好

业界统计中相当比例的软件缺陷源自需求阶段,需求错误在后期修复的代价是需求阶段的数十倍,因此需求能力是最值钱的工程能力之一;产品岗与工程岗面试都会问如何挖掘用户真实需求、如何写好用户故事与验收标准、需求优先级如何排序。懂需求的人更容易与产品、客户沟通,也更容易在团队中承担需求分析与方案设计的角色。对读研做需求工程与软件过程方向的同学,这是研究入口。

📌核心知识清单

  • 需求的定义与分类:业务需求、用户需求、功能需求、非功能需求(性能、安全、可用性、可维护性)及约束条件
  • 需求获取技术:访谈与问卷设计、观察与工作跟踪、原型与低保真原型、头脑风暴与联合应用开发、文档分析与竞品分析
  • 需求分析与建模:用例与场景描述、用户故事与验收标准(Given-When-Then)、数据流图与实体关系分析、状态机建模、业务规则提取
  • 需求规格说明:SRS 的规范结构(IEEE 830 思想)、需求的良好特征(无歧义、可验证、完整、一致、可追踪)、避免设计与实现约束滥用
  • 需求优先级与协商:MoSCoW 方法、Kano 模型、价值与成本与风险三维评估、需求折中与范围管理
  • 需求验证与确认:评审的类型与组织(走查、正式评审)、原型验证、验收测试准则、需求与测试用例的双向追踪
  • 需求管理:需求基线与版本、追踪矩阵、变更控制流程与影响分析、需求状态与属性管理
  • 需求工程的组织与趋势:与敏捷的结合(用户故事地图与迭代梳理)、需求复用、需求文档在不同规模项目中的裁剪

✍️怎么学(可执行步骤)

  1. 主线教材用《软件需求》(Wiegers)或《掌握需求过程》(Robertson),前者第1至10章系统,后者的需求质量检查表非常实用
  2. 做一次真实需求调研:找三到五位真实用户(同学、社团、商家)做访谈并录音整理,产出用户画像、场景与需求列表,训练提问与倾听能力
  3. 用大白话反例训练:收集校园项目中常见的坏需求(系统要快、界面要好看),逐条改写成可度量的规格(搜索响应小于一秒,支持并发一千用户)
  4. 建立追踪矩阵:用一张表把需求编号、设计模块、测试用例、状态列出来,亲手体验需求变更时如何评估影响范围

📚推荐教材与书籍

软件需求(第3版)Karl Wiegers, Joy Beatty · 经典

需求工程领域最实用的教材,需求获取、规格化与验证章节尤其值得精读

掌握需求过程(第3版)Suzanne Robertson, James Robertson · 进阶

强调需求质量与业务视角,配套的 Volere 需求模板可直接用于实际项目

用户故事与敏捷方法Mike Cohn · 入门

讲清用户故事、验收标准与故事拆分,适合做敏捷项目时快速上手

🎬视频课程 / 公开课

软件需求工程中国大学MOOC

国内高校课程,需求获取与建模方法讲解与课程作业契合

讲用户故事与需求梳理的实践方法,与敏捷项目直接对应

🌐网站与文档

业务分析领域的标准框架,了解需求相关角色与知识域划分

用户故事写法与拆分示例,团队实践直接可用

🐙GitHub 开源资料

项目规范清单中含文档与需求管理建议,可作为团队模板

需求分析之后是系统设计,此仓库帮助把需求约束转化为架构方案

🧪动手实践任务

🧪

实践 1

完成一次从调研到规格的闭环:对某个校园服务(如自习室预约、二手交易)做三场用户访谈、整理场景与需求、输出需求规格说明书与优先级清单

🧪

实践 2

为十条需求建立追踪矩阵:标注每条需求对应的设计模块、测试用例与状态,模拟一次需求变更并写出影响分析与应对方案

🧪

实践 3

把一组用户故事改写成带验收标准的规范形式(Given-When-Then),并请同学做一次需求评审,记录提出的歧义与遗漏问题

🧾考试与面试

💼 面试会怎么考

常见:如何获取用户真实需求、用户说的想要与真正的问题如何区分;如何写一条好的需求或用户故事(可验证、无歧义、带验收标准);需求优先级如何排;需求变更你怎么处理、如何评估影响;非功能需求如何写、如何在测试中验证;如果产品经理的需求你认为是错的怎么办(考沟通与协商);需求评审如何组织、发现了什么问题。

📝 期末与考研怎么过

期末多为案例分析题:给出需求描述让你找出其中的歧义、遗漏与不可验证之处;给出场景让你画用例或写用户故事;简答题考需求分类、获取技术与追踪矩阵的作用;论述题考需求变更管理与敏捷下的需求实践。备考方式是把需求质量检查表背熟并练习改写坏需求,目标八十五分以上。

⚠️ 常见坑

  • 把用户说的表层诉求直接当需求,不追问背后的业务目标,做出来功能没人用
  • 需求文档写成散文,充满模糊形容词(快、好、友好),无法验证也无法测试
  • 不做需求追踪,设计与测试与需求脱节,验收时才发现漏做功能
  • 变更来者不拒或一律拒绝,缺少影响评估与优先级排序,导致范围失控或错失重要需求
  • 忽视非功能需求与约束,后期在性能与安全上付出巨大代价
→ 查看 大三上学期 的完整学期安排