第二章:系统需求分析
好,咱们进入第二章。需求分析,说白了就是搞清楚「我们要造个什么东西」。
我见过太多项目,上来就画电路板、写代码,结果做到一半发现需求没对齐,推倒重来。PIS系统尤其如此——它直接面向乘客,一出错就是群体性事件。所以,这一章咱们把需求掰开揉碎了讲。
2.1 功能需求分析
功能需求,就是「系统要干什么」。PIS系统的核心功能,我归纳为四大块:
- 信息发布:到站信息、换乘指引、紧急通知。这是最基础的功能,也是乘客最在意的。
- 广播控制:自动报站、人工广播、紧急广播。注意,广播和显示必须同步,不能出现「显示已到站,广播还在报上一站」的情况。
- 乘客交互:触摸查询、紧急通话按钮。这部分我建议做防误触设计,你想想看,小孩子乱按紧急按钮,后台会疯掉的。
- 系统管理:设备状态监控、日志记录、远程升级。嗯,远程升级这个功能,我在项目里吃过亏——升级过程中断电,设备变砖。后面会讲怎么处理。
重点提醒:功能需求一定要区分「必备」和「可选」。比如紧急广播是必备,但触摸查询在某些低端线路可以砍掉。别让甲方把所有功能都写成「必须」,否则项目周期会失控。
2.2 性能需求分析
性能需求,就是「系统要跑多快、多稳」。我习惯从三个维度去拆解:
| 维度 | 指标 | 我的建议值 |
|---|---|---|
| 实时性 | 信息更新延迟 | ≤ 200ms(从列车定位到屏幕显示) |
| 并发性 | 同时服务终端数 | 单台服务器支持 ≥ 200个终端 |
| 存储容量 | 日志与媒体存储 | 至少保留30天数据,按1天1GB估算 |
这里有个坑——实时性。很多人以为只要网络快就行,其实不然。我曾经遇到一个项目,网络延迟只有10ms,但屏幕刷新还是卡顿。查了半天,发现是UI渲染线程被广播解码占用了。所以,性能分析一定要考虑「资源竞争」。
我的小技巧:做性能分析时,先画一张「数据流图」。从传感器到服务器,再到终端,每个环节标注延迟预算。这样哪里是瓶颈,一目了然。
2.3 可靠性需求分析
可靠性,说白了就是「别关键时刻掉链子」。PIS系统一旦失效,轻则乘客投诉,重则引发恐慌。
我一般把可靠性分成三个等级:
- 单点故障不扩散:一个终端坏了,不影响其他终端。这个通过独立供电和独立通信链路实现。
- 关键功能冗余:比如广播服务器,我建议做1+1热备。主备切换时间控制在5秒以内。
- 降级运行:当主系统崩溃时,本地终端能独立播放预存信息。嗯,这个功能我在某地铁项目里救过场——那次中心服务器宕机了4小时,全靠本地降级模式撑着。
注意:可靠性不是堆硬件就能解决的。我曾经见过一个项目,双机热备做得很好,但切换逻辑有bug——主备同时认为自己是主,结果两台机器互相打架。所以,可靠性测试一定要做「故障注入」,人为制造各种异常场景。
2.4 安全性需求分析
安全性,分两块:功能安全和信息安全。
功能安全,主要针对广播系统。你想想看,如果紧急广播被误触发,或者音量突然爆增,会是什么后果?我建议参考IEC 61508标准,至少达到SIL 2等级。
信息安全,现在越来越重要。PIS系统虽然不直接控制列车,但它连接着内部网络。一旦被黑客攻破,可能成为跳板攻击其他系统。
我总结了几条必须做的安全措施:
- 网络隔离:PIS系统必须与列车控制网络物理隔离。别用同一个交换机,别问我为什么知道——
- 身份认证:所有远程操作都需要双因子认证。密码+动态令牌,或者密码+生物识别。
- 数据加密:敏感信息(如乘客隐私数据)传输时必须加密。AES-256起步。
- 日志审计:谁在什么时候做了什么操作,全部记录。出了事能追溯。
避坑指南:我曾经遇到一个项目,甲方要求「所有数据必须加密」,结果没考虑嵌入式设备的算力限制。加密解密把CPU占满了,导致广播卡顿。后来我们改用硬件加密芯片,才解决问题。所以,安全方案一定要和硬件性能匹配。
2.5 接口需求分析
接口需求,就是「系统怎么跟外界打交道」。PIS系统的接口,我分成三类:
| 接口类型 | 对接对象 | 协议/方式 |
|---|---|---|
| 列车接口 | TCMS(列车控制与管理系统) | MVB、CAN、以太网 |
| 地面接口 | 中心服务器、OCC(运营控制中心) | TCP/IP、MQTT、HTTP |
| 人机接口 | 乘客、维护人员 | 触摸屏、按键、语音 |
这里有个关键点——接口协议一定要「松耦合」。我习惯的做法是:在PIS系统内部定义一个「标准数据模型」,所有外部接口都通过适配器转换成这个模型。这样,即使列车接口从MVB换成CAN,我只需要改适配器,核心逻辑不用动。
另外,接口文档一定要写清楚「异常处理」。比如,如果TCMS突然断连,PIS系统应该怎么办?是保持最后一次有效数据,还是切换到本地预存模式?这些细节,在需求阶段就要定下来。
我的经验:接口需求分析时,最好拉上对接系统的工程师一起开会。别自己闷头写文档,否则你会发现——你理解的「数据帧格式」和对方理解的完全不一样。这种事,我经历过不止一次。
好了,第二章的需求分析就到这里。下一章,咱们开始聊硬件架构设计——怎么选主控芯片、怎么搭通信网络。到时候我会分享一些选型时的血泪史,敬请期待。