很多做系统的人,一听到“写需求规格说明书”就头大。说实话,干这行这么多年,我最怕碰到的不是技术难题,而是产品上线前,业务方来一句“这不是我要的东西”。你以为沟通到位了,其实从需求源头就已经开始跑偏。
所以今天想借“MBA培训管理系统需求规格说明书”这个项目,完整拆一遍一套正规的需求规格说明书到底该怎么写、里面要装什么、每一步背后的逻辑是什么。这个案例比较典型,因为MBA培训业务横跨招生、教学、师资、考勤、财务、数据报表多条线,牵扯的角色多、流程长、状态变化复杂,很适合用来把需求分析的思路讲透。
不管你是产品经理、需求分析师、项目经理,还是被拉去顶需求活的开发同学,这篇文章都能给你一份可以直接照搬的思路和模板。跟着走一遍,你会发现需求规格说明书其实就是把“大家嘴上说的”变成“大家都没歧义、能照着做”的过程。
1. 项目整体设计与需求分析思路
1.1 MBA培训业务的独特性,决定了系统不能照搬通用CRM
MBA培训机构和普通职业培训机构不一样,它的业务链条特别长,而且是典型的“重服务”模式。学员从线索到报名、入学、上课、考试、毕业,周期可能长达一年甚至两年,中间还会涉及调班、延期、休学这些特殊状态。
这就意味着,通用型的CRM软件或者单纯的排课系统都撑不起整个业务。你需要的是一个能把市场招生、教学管理、学员服务、师资统筹、财务核销、数据报表全部串起来的系统,而且每一条业务线的状态机都得单独设计。
举个例子,一个学员在系统里的生命周期可能是这样的:潜在线索 -> 已沟通 -> 已试听 -> 已报名 -> 已缴费 -> 已分班 -> 在读 -> 休学 -> 复学 -> 结业 -> 校友。这中间任何一个环节都可能跳转,比如没缴费直接跳到已分班(先上课后补费),或者从已报名又退回潜在线索(退费)。如果一开始不把状态流转画清楚,后面写代码的时候就会不停打补丁。
所以做这个系统需求的时候,第一步永远不是写功能列表,而是先把业务流程捋干净。
1.2 需求规格说明书的读者是谁,决定了写作方式
写SRS(Software Requirements Specification,软件需求规格说明书)之前,你得想清楚谁会看这份文档,他们各需要什么。
- 开发人员:需要知道每一个字段、每一条规则、每一个异常分支,这部分要精确到不能再精确。
- 测试人员:需要从中提取测试用例,所以所有需求都必须是“可验证”的,不能用“系统应支持查询功能”这种模糊表达,要写清楚查询条件是什么、结果怎么排序。
- 项目管理层:关心边界范围和时间节点,所以文档里必须有明确的优先级划分和范围外说明。
- 业务方(MBA机构的教务老师、招生主管):关心系统是否满足日常工作习惯,所以需求描述里要带业务场景,不能上来就写字段。
一份好的需求规格说明书,其实是在以上四类人之间做翻译和平衡。写得太技术,业务看不懂;写得太业务,开发又没法直接开工。最好的方式就是把业务规则抽出来单独成章节,字段级定义放在数据字典里,界面和交互用原型补充说明。
1.3 这套系统解决了什么核心问题
与其罗列三十个功能模块,不如先说清楚系统要解决的三件大事。
第一件,招生线索不丢失。销售和课程顾问换了一茬又一茬,历史沟通记录全躺在个人微信里。系统要做一个统一的线索池,所有跟进记录自动留痕,主管能随时查看转化漏斗。
第二件,排课与教室资源不冲突。MBA班型多、师资少,同一个老师可能同时在多个校区有课。系统要用排课引擎做冲突检测,对课表做版本化管理,调课之后能自动通知相关学员和老师。
第三件,从报名到结业的全生命周期档案。学员的缴费、出勤、成绩、论文进度、毕业审核必须能一键追溯。老板要看整体数据,班主任要看单个学员数据,这两个视角都得满足。
这三件事,本质上是同一个问题的三个切面:信息在组织内流转不畅。所以系统的整体架构不是按部门去切模块,而是按“学员旅程 + 资源调度 + 数据中枢”这三条主线展开。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 用户角色梳理与核心业务流程拆解
2.1 角色清单和权限矩阵:先定谁能干什么
这一块是大多数需求文档写得不扎实的重灾区。很多人写角色就写一个“管理员”,然后让管理员拥有全部权限,后面上线了才手忙脚乱地补权限控制。
MBA培训系统里,最小集也得分出七类角色:超级管理员、校区主管、课程顾问(招生老师)、教务专员、授课教师、班主任、财务专员,另外还要预留学员自助端和教师自助端的角色。每类角色背后对应着一组完全不同的业务场景和权限边界。
用一个简单的矩阵表来约束权限设计会非常直观:
| 功能域 | 课程顾问 | 教务专员 | 授课教师 | 班主任 | 财务专员 | 校区主管 |
|---|---|---|---|---|---|---|
| 线索管理 | 查看/跟进本人 | 查看全部 | 无权限 | 查看本班 | 无权限 | 查看全部 |
| 学员档案 | 只读本人转化 | 编辑 | 只读教学相关 | 编辑本班 | 查看缴费字段 | 查看/导出 |
| 排课管理 | 无权限 | 创建/调整 | 查看课表 | 查看本班 | 无权限 | 审批调课 |
| 成绩录入 | 无权限 | 查看 | 录入/修改 | 查看/导出 | 无权限 | 查看/导出 |
| 财务核销 | 无权限 | 查看 | 无权限 | 查看 | 收款/退款/对账 | 审批退款 |
| 报表中心 | 仅转化漏斗 | 教务日报 | 个人课时 | 出勤统计 | 现金流报表 | 全量报表 |
这个表看起来简单,但它是权限模块的需求底座。没有这张表,开发阶段做接口权限控制时就会反复问“谁能删这个数据”“谁能看这张报表”。
2.2 核心流程一:从线索到报名的转化流程
MBA培训机构的招生线索来源,典型的有三类。第一类是广告投放获取的联系方式,第二类是参加线下说明会、试听课沉淀的名单,第三类是老学员转介绍。这三类线索在系统里的初始化字段略有不同,比如投放渠道、来源活动ID、推荐人ID,但都必须统一进入同一个线索池。
线索跟进流程里有几个容易忽略的节点:
- 线索去重:同一个手机号可能重复提交,系统要支持手机号为主键的自动去重,并且把历史跟进记录合并展示,避免顾问重复骚扰同一目标客户。
- 公海与私海机制:超过N天未跟进的线索自动回收到公海,供其他顾问领取。这个N值最好做成机构参数,不同校区可单独配置。
- 意向等级与预计报名时间:这是销售漏斗分析的基础字段,必须要求顾问每次跟进后更新,不能为空。
- 试听报名:参加试听课的线索要打特殊标签,试听考勤记录要回流到线索档案,后面做转化分析才能看出试听对转化的影响系数。
我做过的项目里,这一环节最常见的坑是“线索阶段变更没有留痕文档”。所以需求说明书里必须明确:每次阶段变更,系统自动记录操作人、操作时间、变更前后值、变更原因备注,并且该记录不可编辑、不可删除。
2.3 核心流程二:教学运营闭环(排课-考勤-成绩)
这个环节是系统复杂度最高的地方,也是需求规格说明书最应该花笔墨的章节。
先说排课。排课最低维度是“某一天某间教室某个时间段某位老师给某个班上课”。MBA机构经常有跨校区师资共享的情况,所以排课引擎必须做三重冲突检测:
- 教师冲突:同一位老师的时间段不能重叠。
- 教室冲突:同一间教室的时间段不能重叠。
- 班级冲突:同一个班级在同一时间段只能安排一门课程。
除此之外,还要处理调课、补课、停课、代课四类变更。需求文档里要定义清楚每种变更的审批流,比如代课必须经过教务主管审批,调课必须判断新时间段的资源占用情况,并自动触发通知。
再说考勤。考勤方式有三种在文档里都要写清楚:学员刷卡签到、教师点名确认、教务后台手工补录。三种方式打的是同一个考勤记录表,但记录来源字段值不同,方便事后追溯。
成绩模块相对标准,但因为MBA课程里包含论文和答辩环节,所以成绩类型要区分课程成绩、学术活动积分、论文评审结果、答辩委员会评定四种类型。课程成绩采用百分制,论文评审采用等级制(优秀/良好/合格/不合格),答辩结果结构化登记。
2.4 核心流程三:财务一体化与对账
财务模块能不能做顺,直接影响系统上线后财务人员会不会天天找开发麻烦。我的经验是,财务需求不能只写“收退款管理”,要把每一笔钱的流转路径扣到字段级别。
- 收款类型:报名费、学费、教材费、补考费、重修费、认证费。每种费用对应不同的科目编码和发票类别。
- 支付通道:前台POS机、微信/支付宝扫码、银行转账、线下现金。每种通道要求系统记录流水号,并支持与第三方支付平台对账文件导入。
- 退款规则:开课前退全款、开课后按课时比例退费、休学期间不产生费用。退费审批必须走多级流程,财务发起退款单后,教务确认已停课、主管审批、财务复核、实际打款后回填支付流水号。
- 学员账户余额:预缴费用和实际消耗费用分开记账,每次消课自动计算剩余课时并记录流水。
最容易漏掉的是“财务数据与教务数据的时点一致性”。比如学员在排课完成后退费,系统必须自动判断该学员是否已经产生考勤记录,如果已经上课则按实际课时扣费后再计算退款金额。这个规则如果不在SRS里写清楚,开发实现时大概率就是简单退全款,上线后账实不符只能靠手工调账找平。
3. 功能需求详述与关键页面逻辑
3.1 系统功能模块全景
为了让开发团队对整体范围有感知,SRS里一般会放一张功能架构图(用文字描述也行),把模块边界定清楚。MBA培训管理系统的功能域可以划分为以下九个模块:
- 招生线索管理:线索池、分配规则、跟进记录、公海回收、转化分析。
- 学员档案管理:档案卡、家庭成员(可选)、学历背景、报读班型、合同附件、状态流转。
- 教学计划管理:班级计划、分阶段教学日历、课程大纲、教材版本管理。
- 排课与课表:自动排课建议、手动排课、调课/代课/停课、教师课表、学员课表、教室占用视图。
- 考勤管理:多方式签到、考勤异常处理、出勤率统计。
- 成绩与论文管理:课程成绩、补考重修、论文选题、导师分配、论文评审进度、答辩管理。
- 师资管理:教师基础档案、授课方向、课时统计、课酬核算、教师评价。
- 财务中心:收款、退款、发票、学员余额、对账、课酬结算。
- 报表与数据看板:转化漏斗、在读人数、出勤趋势、财务现金流预测、教师课时统计。
- 系统管理:用户、角色、权限、操作日志、参数配置、消息通知模板。
这里面有一个容易犯的错:把“消息通知”做成了单独的模块。实际上通知触达是横切功能,应该以配置方式挂到每个业务动作上。比如调课成功触发通知、成绩发布触发通知、催费提醒触发通知。SRS里要把通知事件的触发点和通知渠道放在附录表里统一管理,而不是分散在各模块描述中。
3.2 关键页面逻辑:课表视图的默认展示与操作规则
课表是教学运营人员每天看最多、操作最多的页面。这个页面的需求描述如果只写“展示课表”,开发能做出一百个版本。所以在SRS里我需要约束到具体交互:
页面默认按“周”视角展示,支持日、月切换。左侧栏是教室或教师列表(可按教室/教师/班级三种维度切换),右侧是时间网格,每格45分钟。一次排课记录在网格上显示为色块,色块上直接展示课程名称、班级简称、教师姓名。点击某个色块可弹出悬浮卡片,显示完整上课信息和编辑入口。
排课冲突时,被占用的时间格必须置灰并显示占用来源(教师/教室/班级),不允许保存冲突排课。调课操作必须记录原课次信息,生成课次版本号。
这些细节写清楚之后,前端开发不用再来问“默认哪种视图”,测试也能据此设计“网格冲突显示”的验证用例。
3.3 数据字典与字段级约束:SRS里最容易偷懒但最不能省的部分
只要数据字段多起来,光靠文字描述是会有歧义的。比如“学员状态”字段到底有哪几个枚举值?“结业”和“毕业”是不是同一个状态?“休学”之后学籍怎么处理?这些必须在数据字典里定义清楚。
我一般会在SRS文档里专门放一个附录,叫《核心数据字典》,列出所有关键实体的字段明细。拿“学员档案”实体举例:
| 字段名 | 类型 | 必填 | 默认值 | 约束说明 |
|---|---|---|---|---|
| 学员ID | varchar(32) | 是 | 自动生成 | 全局唯一,格式:STU+年月日+顺序号 |
| 手机号 | varchar(11) | 是 | 无 | 全局唯一,校验11位数字 |
| 姓名 | varchar(32) | 是 | 无 | 敏感字段,展示时脱敏 |
| 性别 | enum | 否 | 未知 | 男/女/未知 |
| 学历背景 | varchar(16) | 否 | 无 | 大专/本科/硕士/博士/其他 |
| 报读班级编号 | varchar(32) | 否 | 无 | 关联班级表,可空表示未分班 |
| 学员状态 | enum | 是 | 潜在 | 见状态机定义 |
| 报名日期 | datetime | 否 | 无 | 进入已报名状态时自动写入 |
| 合同编号 | varchar(64) | 否 | 无 | 关联合同附件表,可空 |
| 紧急联系人关系 | varchar(16) | 否 | 无 | 仅学员本人授权后可查看 |
这样一张表写下来确实耗时,但它的价值非常大。开发拿到表就能建表,测试拿到表就能做边界值测试,财务拿到表就知道哪些字段影响账单状态。更重要的是,后续需求变更时,影响范围通过字段级检索就能快速定位。
4. 非功能性需求与实施约束
4.1 性能与并发指标怎么定才科学
很多SRS里的性能需求写着“系统访问速度快”这种话,等于没写。测试人员拿到这种指标是完全无法落地的。从实际经验看,MBA培训系统的并发规模并不高,真正的压力点集中在几个特定场景:
- 报名高峰期的并发提交:比如说明会结束后集中报名,瞬时可能有几百人同时提交表单。
- 课表集中发布时刻:教务人员批量发布课表后,学员端和教师端的推送消息集中发出,消息队列的压力比接口压力大。
- 月末财务报表导出:财务导出全校区当月流水时,数据量大且易超时。
所以性能指标要区分场景来定义。我建议在SRS里明确以下指标基线:日常运营时段,核心业务接口(登录、排课、考勤)的95%响应时间不超过500毫秒;高峰期(同时在线用户数200以内)不超过1秒;报表导出在数据量低于10万条记录时控制在5秒内,超过10万条记录采用异步任务生成文件后下载;消息通知的最终送达成功率达到99.5%以上,允许1分钟内延迟。
4.2 安全与合规需求:权限、日志与数据隐私
MBA学员信息属于典型的人个敏感信息,系统设计和SRS编写时必须特别关注数据安全合规。这一部分至少包含:
- 权限控制。RBAC模型为骨架,细粒度到按钮级权限。所有涉及学员敏感信息(手机号、身份证号、家庭住址)的字段,默认脱敏展示,需要点击“查看明文”并二次授权后才能显示,同时记录查看日志。
- 操作审计日志。所有写操作都要记录操作人、操作时间、IP地址、请求参数、操作结果。日志保留时间不低于180天。
- 数据备份。核心数据每日增量备份,每周全量备份。备份文件异地存储,定期做恢复演练。
- 接口安全。所有对外API必须走HTTPS,服务端统一做鉴权和参数校验,防止越权访问。
- 账号安全。登录连续失败5次锁定账号15分钟,支持双因素认证(短信验证码或邮件验证码)。
4.3 集成需求:与外部系统的边界
MBA培训管理系统不是孤立存在的,它要对接的东西往往在SRS撰写阶段就被一笔带过,然后实施阶段集中爆发。所以需求说明书里需要明确集成边界:
- 支付平台对接:需要获取支付结果回调、退款回调、对账单文件,运行模式下要支持沙箱环境切正式环境。
- 短信服务商:用于报名验证码、调课通知、催费提醒,通道需支持三网发送,并有发送失败重试机制。
- 电子发票平台:开票申请从系统推送,开票结果回传。
- 企业微信或钉钉:用于内部审批通知,核心审批流在系统内完成,外部IM只做消息触达。
- 老系统迁移:如果机构原来用Excel或某旧教务系统,需要预留数据迁移接口,支持历史数据按模板导入并做校验。
集成需求的核心是写清楚“谁调用谁、数据以谁为准、失败怎么处理”。比如支付回调以支付平台为准,系统本地状态只做展示;短信发送失败不影响主业务,但要进入失败队列并支持手动重发。
5. 需求规格说明书的文档组织与验收标准
5.1 SRS文档目录怎么编排才合理
很多初写SRS的人喜欢把所有细节堆在一个“详细需求”章节里,结果一份两百页的文档没人愿意看。这里给出一份经过多次实战验证的目录结构,适合MBAA这类中型管理系统:
- 引言。包括编写目的、读者对象、术语表、参考资料。
- 总体描述。包括项目背景、系统范围、用户角色清单、运行环境、设计约束。
- 功能需求详述。按模块划分,每个模块包含功能列表、业务规则、界面需求、异常处理。
- 外部接口需求。包括支付、短信、发票、企业微信等系统对接。
- 非功能需求。包括性能指标、安全合规、可用性、可靠性、兼容性。
- 数据需求。包括核心实体关系说明、数据字典、状态机定义。
- 附录。包括术语词典、优先级划分、待确认问题清单、需求变更记录表。
这个结构的核心逻辑是:把不同关注点的内容拆到不同章节,让读者能快速找到自己要看的段落,而不是从头到尾做全文精读。
5.2 验收标准的写法:每条需求怎么才算“做完”
需求规格说明书里每条功能需求都必须有明确的验收判断方法,否则交付阶段必然扯皮。一个“可验收”的需求描述应该包含三个要素:前置条件、操作步骤、预期结果。
举个例子,不加修饰的需求是这样写的:“系统支持考勤异常处理功能。”这没法验收。展开后应该是:
前置条件:学员张三在2025年3月10日的《财务管理》课程考勤记录为“未签到”。
操作步骤:教务人员进入考勤管理页面,选中当日该课程考勤记录,点击“异常处理”,选择原因类型“请假审批通过”,备注“已提交假条”,点击保存。
预期结果:考勤记录状态变为“已处理”,出勤率统计中将该课时计为“请假出勤”,学员端可见状态更新,操作日志新增一条记录(操作人为当前教务人员)。
只要每条需求都能写出这样的三步结构,开发和测试就有共同语言,需求验收自然顺畅。
5.3 优先级标注与阶段性交付范围
MBA培训管理系统这种规模的项目,不可能一次性把所有功能都做完上线,所以SRS必须为每个功能模块标注优先级。我的习惯是分P0、P1、P2三个等级:
- P0:阻塞性需求。不做系统就无法上线,比如学员档案、角色权限、课表查询。
- P1:增强性需求。核心业务可运转但效率受影响,比如自动排课建议、批量消息通知、报表导出。
- P2:延后性需求。锦上添花,比如移动端课表订阅、智能分析预测、校友福利管理。
完成SRS初稿后,我会和项目干系人开一场专门的“优先级评审会”。对每个P2级需求问一句:如果延期三个月再上,业务还能正常开展吗?如果答案是能,就坚决砍掉或延期,这是控制项目范围蔓延最有效的方法。
6. 踩坑经验与需求评审要点
6.1 需求调研阶段最容易犯的错
这个坑我踩过不止一次:只找管理层聊需求,不找一线执行者聊。校长的诉求是“我明天要看全校区数据”,但排课老师每天真正面对的问题是“三个班的课挤在同一间大教室了”。如果你只跟管理层聊,系统设计的重心就会偏向报表,真正每天用系统的岗位上线两周后开始集体抱怨。
所以需求调研阶段,我的做法是三类人必须覆盖到:决策层(校长/VP)、管理层(部门主管)、执行层(教务老师、财务专员)。并且执行层最好以一对一访谈为主,一来他们更容易说实话,二来能挖掘出真实的操作痛点。
还有一个特别容易忽视的角色,就是财务专员。因为财务永远是最早发现系统数据对不上的那群人。如果有条件,需求调研阶段就让财务深度参与,后面系统上线后能省掉无数个对账的深夜。
6.2 需求评审时业务方常常不置可否,怎么办
我遇到过很多次,需求评审会上业务方全程沉默,说“都行都行”,结果功能上线后一用才发现方向错了。后来我学到一个方法:评审会上不放PPT,改成现场走查原型。让业务方直接在原型上点按钮、录数据、走流程,他们会很快暴露真实需求。
而且评审会一定要带着“待确认问题清单”去,一条条过。比如“学员休学期间是否保留原班级原学籍?”“转班之后学费差价怎么处理?”“补考费在哪个环节收取?”这些问题不确认清楚,开发阶段一定会停下来讨论业务规则,严重影响进度。
6.3 需求变更管理:没有规则就是灾难
做需求的人都有体会,客户的需求永远是流动的。真正的问题不是需求变了,而是需求变了的流程没有定下来。我在SRS里会固定一个需求变更管理流程:任何业务方提出变更,必须先填写需求变更申请单,写明变更内容、变更原因、影响范围、期望时间。项目经理和产品经理评估影响后给出回复:接受/推迟/拒绝,并同步更新SRS版本号和需求变更记录表。
这一套流程说不上有什么高深的技巧,但没有它,后期随时会有来自各种渠道的新需求直接插队进开发排期,最后一定是团队内耗和项目延期。
7. 一些写文档和做需求的经验心得
写需求规格说明书这件事,本质上是在帮所有人把脑子里的混沌清空,落成一份没有歧义的“合同”。在这件事上我最大的体会是:文档的厚度不重要,逻辑闭环才重要。
写完一份SRS后,我建议做一次自我检查:从文档里随便挑出哪一个功能模块,尝试问自己四个问题——入口在哪里?由谁操作?数据从哪里来?结果到哪里去?如果有一个问题回答不出来,说明这块需求还有缝隙,需要继续补。
另外,不管是写文档还是做需求评审,一定要保持“较真”的心态。一个看起来很小的问题,比如“学员退费之后还能登录学员端吗”,不确认清楚,开发团队就会按各自的理解实现,最终一定有人不满意。这是我在实际项目中反复验证过的教训。
我还想提醒一点:需求规格说明书不是一次性写完就完事的东西。上线之后它要持续维护,甚至比代码维护得更勤。每次业务规则调整、每个新需求加入,都要同步更新文档,让文档始终和真实系统保持一致。否则它很快会变成一纸空文,再也没有人愿意翻看。
如果你正在被一份需求规格说明书折磨,不妨先放下键盘,回到业务现场,把角色、流程、字段、状态机一个个抠清楚。文档自然会落在纸上,项目也就成功了一半。
