2. 统一管理平台需求分析:业务需求梳理、功能需求定义、非功能性需求
好,咱们进入第二章。需求分析,说白了就是搞清楚「我们要做什么」。
我见过不少项目,一上来就画界面、写代码,结果做到一半发现方向错了。嗯,那真是灾难。所以,咱们先把需求这块地基打牢。
2.1 业务需求梳理:先搞清楚「谁在用」和「用来干嘛」
我个人习惯,做任何系统之前,先画一张「用户地图」。PIS 统一管理平台,表面上看是管屏幕的,实际上它服务的角色很杂。
- 运营调度员:他们最关心「当前所有线路的屏幕是不是都正常?」。一旦有故障,得立刻知道是哪块屏、在哪站。
- 维护工程师:他们需要远程诊断、重启设备、查看日志。总不能每条线路都派人跑现场吧?
- 内容编辑:负责发布紧急通知、节假日祝福、广告。他们希望「一次编辑,多线发布」。
- 管理层:看报表、看统计、看KPI。比如「本月全线网PIS可用率是多少?」。
我在项目中遇到过,有个客户非要加一个「乘客留言反馈」功能。后来发现,这根本不是PIS该管的,那是客服系统的事。所以,业务需求梳理的第一步,就是划清边界。
核心业务场景:集中监控、统一发布、远程维护、数据统计。
2.2 功能需求定义:把业务需求翻译成系统功能
业务需求是「人话」,功能需求是「系统话」。咱们一条条拆。
2.2.1 线路与设备管理
说白了,就是给每条线路、每个车站、每块屏幕建个「身份证」。
- 支持线路的增删改查
- 支持车站的分组管理(比如按行政区、按线路编号)
- 设备注册与注销,记录设备型号、IP、安装位置
2.2.2 实时监控与告警
这是核心中的核心。你想想看,调度员盯着大屏,如果某块屏黑了,系统得在3秒内弹窗报警。
- 设备在线/离线状态实时刷新
- 播放内容截图回传(确认屏幕到底在播什么)
- 告警分级:紧急(设备离线)、警告(网络延迟)、提示(日志异常)
避坑指南:我曾经做过一个项目,告警频率设置得太高,结果网络波动时,调度员被告警刷屏了。后来我加了「告警聚合」逻辑——同一设备5分钟内只发一次告警。
2.2.3 内容发布管理
编辑们最爱的功能。支持图文、视频、滚动字幕。
- 支持模板化编辑(比如「紧急通知」模板,一键套用)
- 支持按线路、按车站、按时间段发布
- 支持发布审核流程(避免误发)
2.2.4 日志与报表
出了问题,得有据可查。
- 操作日志:谁、在什么时间、做了什么操作
- 设备日志:设备重启记录、播放异常记录
- 报表导出:支持Excel、PDF格式
2.3 非功能性需求:决定系统「好不好用」
功能需求决定「能不能用」,非功能性需求决定「好不好用」。很多项目死就死在非功能需求上。
2.3.1 性能需求
我习惯用「3-5-10」原则来定指标:
| 场景 | 指标 | 说明 |
|---|---|---|
| 页面加载 | ≤3秒 | 首屏加载时间,包含所有静态资源 |
| 设备状态刷新 | ≤5秒 | 从设备上报到界面更新 |
| 告警响应 | ≤10秒 | 从故障发生到告警弹出 |
| 并发用户 | ≥200 | 同时在线操作不卡顿 |
注意:性能指标不是拍脑袋定的。我曾经见过一个项目,要求「所有页面1秒内加载」,结果发现客户用的还是10年前的工控机。所以,性能指标一定要结合硬件环境来定。
2.3.2 可用性需求
轨道交通系统,7×24小时不能停。你想想看,早高峰的时候系统宕机了,那画面太美我不敢看。
- 系统可用性:≥99.9%(每年宕机时间不超过8.76小时)
- 数据持久性:关键数据(设备状态、发布记录)实时备份
- 故障恢复:主备切换时间≤30秒
- 容错设计:单点故障不影响整体系统运行
2.3.3 安全性需求
PIS系统虽然不直接控制列车,但它连着运营网络。一旦被攻击,后果很严重。
- 身份认证:必须使用强密码策略,支持双因素认证
- 权限控制:基于角色的访问控制(RBAC),比如编辑不能看到运维菜单
- 数据传输:所有API通信必须使用HTTPS加密
- 审计日志:所有敏感操作(如删除设备、修改发布内容)必须记录
- 防篡改:发布的内容在传输过程中要有完整性校验
我的经验:安全性不是越强越好。我见过一个项目,要求每次操作都要短信验证,结果运维人员一天要收几十条短信,直接罢工了。安全性和易用性之间,得找个平衡点。
2.4 需求优先级排序:先做「雪中送炭」的
需求永远做不完。我习惯用「MoSCoW法则」来排优先级:
- Must have(必须有):实时监控、告警、设备管理、内容发布
- Should have(应该有):报表导出、日志查询、权限管理
- Could have(可以有):大屏可视化、移动端APP
- Won't have(这次不做):AI智能排班、客流预测(这些是其他系统的活)
嗯,需求分析这块,咱们就聊到这儿。记住一句话:需求分析不是写文档,而是和用户一起把「模糊的想法」变成「清晰的边界」。
下一章,咱们开始聊系统架构设计。到时候我会分享一个我踩过的坑——关于「微服务拆分粒度」的教训。