目录
[阶段一:夯实C++ 基础](#阶段一:夯实C++ 基础)
[1. 推荐架构(分层 + 解耦)](#1. 推荐架构(分层 + 解耦))
[2. 每一层的职责(医疗场景特别说明)](#2. 每一层的职责(医疗场景特别说明))
[3. 工业级增强建议](#3. 工业级增强建议)
[4. 推荐目录结构](#4. 推荐目录结构)
技术背景&&目标
1.1 技术背景
针对医疗设备Qt上位机工程师进阶,因当前在医疗行业做Qt,趁年前细想了一下未来的技术路线,特此总结分享(未必适用于所有大佬,仅是我个人而言)。
1.2 目标
当前技术:能写界面/逻辑、了解简单通讯、能调试设备;
未来进阶:能设计架构、能做稳定系统、能满足医疗合规、能带项目
1.3 医疗设备软件为什么不同于普通软件?
- 设备故障可能造成人身风险
- 错误不能只靠"重启解决"
- 软件必须可追溯
- 每一次修改都要可验证
- 必须满足 IEC 62304
- 必须符合 ISO 13485
注:如果想长期从事本行业,那就不应该只是"怎么写代码",而是"如何写成一个长期可维护的系统"。也就是从【写功能】->【写系统】->【写符合规范的安全系统】。
阶段计划
阶段一:夯实C++ 基础
1.1 目标:写出稳定、可维护、可测试的代码。不要追求炫技,而要追求可读性和稳定性
1.2 需掌握:
- std::variant / optional / any
- type traits
- 模板泛型设计
- constexpr
- move 语义
- 智能指针
- RAII 思想
1.3 推荐书籍:
- 《Effective Modern C++》 --- Scott Meyers
注:医疗设备不能内存泄漏,也不能undefined behavior。
阶段二:Qt深度与架构能力
2.1 目标:软件能力升级到"架构级使用"
2.2 需掌握 (Qt内部机制相关):
- QObject 内存管理机制
- 事件循环原理
- 信号槽底层机制
- QThread 正确用法(不要乱 moveToThread)
- Model/View 架构
2.3 需掌握(架构模式):
- MVC / MVVM
- Repository 模式
- Service 层抽象
- 依赖注入(DI)
- 插件式架构
- SOLID 原则
- Clean Architecture
- 线程模型:UI线程、设备通讯线程、数据处理线程、日志线程
- 错误处理策略
- 配置管理:设备型号差异、参数配置、校准参数、版本控制
注:医疗设备上位机通常会经历:功能约堆越多,最后变成屎山,因为很难有人能在第一次沟通需求时就把需求说全,几乎都是迭代开发。
阶段三:并发与实时系统能力
3.1 目标:串口 + 设备控制。并发问题通常不是写代码时出现,而是在设备运行几小时后才暴露
3.2 需掌握:
- 生产者消费者模型
- 线程安全容器
- 原子操作
- 锁优化
- 无锁设计基础
- 重点学习:
- std::thread
- std::future
- QtConcurrent
- QThread + Worker Object 模式
注:医疗设备最怕:死锁、UI卡死、线程资源泄露、数据竞争
阶段四:医疗设备特有能力
4.1 目标:医疗特有技术,通常普通Qt工程师不会涉及。
4.2 需掌握(软件生命周期相关):
- IEC 62304
- ISO 13485
- 软件安全等级,不同等级测试强度、文档要求、风险控制均不同
- A 类(无伤害)
- B 类(可能非严重伤害)
- C 类(可能严重伤害)
- 风险控制
- 变更管理
4.3 需掌握(测试相关能力,从功能测试升级为):
- 单元测试(GoogleTest)
- 集成测试
- Mock 下位机
- 自动化测试
- 长时间稳定性测试
- 压力测试
4.4 需掌握(风险管理思维)
- 医疗软件的核心不是功能,而是风险控制
- 如果失败怎么办?
- 如果数据异常怎么办?
- 如果串口中断怎么办?
- 如果电源断电怎么办?
阶段五:高稳定系统设计
5.1 需掌握:
- 状态机设计
- 事件驱动架构
- 断电恢复机制
- 数据持久化策略
- 日志系统设计
- 异常分级处理机制
阶段六:系统级思维
6.1 需掌握:
- 模块解耦
- 多设备扩展
- 插件化硬件支持
- 网络远程控制
- 数据云端同步
- 日志远程诊断
医疗设备上位机推荐架构
1. 推荐架构(分层 + 解耦)

2. 每一层的职责(医疗场景特别说明)

3. 工业级增强建议
3.1 状态机(强烈建议)
Qt 提供:The Qt Company 的 QStateMachine;
但推荐你自己封装轻量级状态机。
3.2 统一日志系统
日志分级:INFO、WARN、ERROR、FATAL
日志必须带:时间戳、模块名、可回溯
3.3 异常隔离
串口线程崩溃不能影响 UI
3.4 单元测试
Domain 层必须可以脱离 Qt 单独测试
4. 推荐目录结构

--END--
欢迎补充