第二章:需求分析与系统设计

说实话,很多做智能制造平台的人,一上来就急着写代码、搭框架。我见过太多这样的团队了——干了三个月,发现需求没对齐,推倒重来。嗯,这一章我们就聊聊怎么把地基打牢。

2.1 业务需求调研方法

做半导体MES这类系统,最怕的就是「我以为」。你以为产线需要A功能,结果人家要的是B。为什么会这样?因为你不懂现场。

我的调研三板斧:

  • 跟线观察法:我习惯直接去产线待两天。看操作员怎么点屏幕、怎么扫码、怎么处理异常。你坐在办公室里永远想不到,一个简单的「批次拆分」操作,现场能搞出七八种花样。
  • 角色访谈法:别只找经理聊。操作员、设备工程师、工艺工程师、生产计划员,每个人视角都不一样。我记得有一次,设备工程师随口说了句「每次recipe下载都要等5秒」,结果这就是EAP优化的关键点。
  • 历史数据分析:翻翻过去三个月的生产报表、设备报警记录、良率数据。数据不会骗人,它会告诉你瓶颈在哪。
小技巧:调研时带个录音笔,回来整理成「需求卡片」。每张卡片写清楚:谁、在什么场景下、需要什么、为什么。这比写长篇文档管用多了。

2.2 功能模块划分

一个完整的半导体智能制造平台,核心模块就这几个。我按重要性排个序:

模块 全称 核心职责 我的经验
MES 制造执行系统 工单管理、批次追踪、物料管控 这是大脑,所有模块都围着它转
EAP 设备自动化平台 设备联机、recipe下发、数据采集 最容易出坑的模块,协议兼容性要命
SPC 统计过程控制 实时监控工艺参数、报警 别搞太复杂,先抓关键参数
RMS 配方管理系统 recipe版本管理、权限控制 我曾经因为recipe版本搞混,报废了一批晶圆...
RMS 报表与分析 OEE、良率、产能分析 老板最爱看,但别做成数据垃圾场

模块之间怎么协作?我画了张图,你看一眼就明白了:

MES 核心 工单·批次·物料 EAP 设备联机 SPC 统计控制 RMS 配方管理 报表分析 OEE/良率 设备层(光刻机·刻蚀机·清洗机...)

你看,MES是中心枢纽。EAP负责和设备打交道,SPC盯着工艺参数,RMS管配方版本。报表模块则从各个模块拉数据做分析。说白了,这就是一个「采集-控制-分析」的闭环。

2.3 系统架构设计

选微服务还是单体?这是个大问题。我直接说结论:

  • 小厂/初创阶段:用单体架构。别折腾微服务,你连运维都搞不定。我见过一个10人团队搞了8个微服务,结果天天修服务间调用问题。
  • 中大型产线:必须上微服务。因为MES、EAP、SPC的更新频率不一样。EAP可能每周都要适配新设备,而MES半年才发一次版。拆开才能独立迭代。
我的建议架构:核心业务(MES)用单体起步,外围模块(EAP、SPC)用独立服务。等系统跑顺了,再逐步拆分。这叫「演进式架构」,别一步到位。

2.4 技术选型

技术选型这事儿,说白了就是「够用就好」。我踩过的坑太多了,直接给你清单:

组件 推荐方案 理由 避坑
编程语言 Java (Spring Boot) + Python Java稳,适合核心业务;Python做数据分析快 别用C#,半导体设备厂商的SDK基本都是Java/C++
数据库 PostgreSQL + Redis PG支持JSON、时序数据;Redis做缓存和队列 别一上来就用Oracle,贵且没必要
消息队列 RabbitMQ 或 Kafka RabbitMQ适合EAP设备事件;Kafka适合SPC海量数据 我曾经用RabbitMQ扛SPC数据,结果队列积压到崩溃...后来换了Kafka
前端 Vue3 + Element Plus 上手快,组件丰富,适合工业界面 别用React,招人难,而且工业UI不需要那么复杂的状态管理
重要提醒:技术选型一定要考虑「设备兼容性」。半导体设备厂商(比如ASML、TEL、Lam)的SECS/GEM协议实现千奇百怪。我建议EAP模块用Java,因为Java的SECS库最成熟。Python虽然写起来爽,但遇到协议兼容问题你会想哭。

2.5 数据流设计

数据怎么流?我画个简单的:

设备 → EAP(采集原始数据) → 消息队列(Kafka)
  ↓
SPC(实时计算,报警) → 数据库(PostgreSQL)
  ↓
MES(更新批次状态) → 报表(定时聚合)
  ↓
RMS(recipe版本校验) → 设备(下发参数)

这个流程我优化过很多次。核心原则就一条:数据采集和业务处理解耦。EAP只管收数据,别让它干MES的活。我曾经见过一个项目,EAP里写了批次状态更新逻辑,结果设备一换,整个产线停了...

2.6 需求文档怎么写

最后聊聊文档。很多工程师讨厌写文档,但半导体行业不行——设备验证、GMP合规、客户审计,哪样都离不开文档。

我的文档模板:

  • 用户故事:作为操作员,我希望扫码后自动显示当前批次信息,以便减少手动输入错误。
  • 验收标准:扫码后2秒内显示信息;支持模糊搜索;错误率低于0.1%。
  • 技术约束:必须支持SECS/GEM协议;数据库响应时间<100ms。
避坑指南:我曾经因为需求文档里没写「设备断线重连」的逻辑,上线第一天就出了事故。现在我的文档里一定会加「异常场景」章节,专门写网络中断、设备宕机、数据重复这些情况。

好了,需求分析和系统设计这块,核心就是这些。记住一句话:调研要深、设计要稳、选型要准。别急着写代码,先把这些想清楚,后面能省你80%的返工时间。


公众号:蓝海资料掘金营,微信deep3321