1、项目启动与需求分析:窗帘电机项目背景、干系人识别、用户故事编写、需求优先级排序(MoSCoW方法)

好,咱们正式开始。第一节课,我打算先聊聊项目启动这件事。

很多人觉得做嵌入式开发嘛,上来就画原理图、写代码就完了。其实不然。我见过太多项目,做到一半发现需求没对齐,或者做出来的东西客户根本不买账。说白了,需求分析没做好,后面全是白忙活。

今天咱们就拿窗帘电机这个项目来练手。从零开始,一步步把需求理清楚。

1.1 项目背景:为什么要做这个窗帘电机?

先说说背景。这个项目来自一家智能家居公司,他们想推出一款支持Wi-Fi和蓝牙双模的智能窗帘电机。目标用户是家庭用户和中小型酒店。

我个人的理解是,这个产品要解决三个痛点:

  • 手动拉窗帘太麻烦——尤其是高窗、落地窗,够不着也拉不动
  • 定时控制需求——早上自动拉开,晚上自动关上
  • 语音控制——配合小爱、天猫精灵这些生态

嗯,说白了就是「懒人经济」嘛。但你别小看这个需求,它背后涉及电机控制、无线通信、功耗管理、OTA升级等一系列嵌入式难题。

核心目标:开发一款稳定、低功耗、支持远程控制的窗帘电机,成本控制在150元以内,量产良率95%以上。

1.2 干系人识别:谁说了算?谁在用?

做项目最怕什么?最怕你辛辛苦苦做完了,发现关键人物不满意。所以第一步,先把干系人拉出来遛遛。

我习惯用一张表来梳理:

干系人 角色 核心诉求 影响力
产品经理 需求提出方 功能完整、上市时间快
硬件工程师 方案设计 元器件选型、PCB布局
嵌入式软件工程师(你) 固件开发 稳定、低功耗、可维护
测试工程师 质量把关 可测性、异常场景覆盖
最终用户 使用方 操作简单、响应快、安静
生产部门 量产执行 易组装、易测试、成本低
售后/客服 问题反馈 故障易排查、OTA可修复

你看,这里面每个人的关注点都不一样。产品经理要快,硬件工程师要省成本,测试要覆盖各种边界情况。你作为嵌入式软件工程师,得学会平衡这些诉求。

我曾经在一个项目里,只顾着满足产品经理的功能清单,结果忽略了生产部门的测试接口需求。到了量产阶段,每台设备都要人工手动烧录,效率极低。嗯,这个坑我踩过,所以现在特别重视生产环节的需求。

1.3 用户故事编写:用故事说话,别用功能列表

需求文档怎么写?很多人喜欢列功能清单:

  • 支持Wi-Fi连接
  • 支持定时开关
  • 支持手机APP控制

这种写法太生硬了。我推荐用用户故事的方式。用户故事有三个要素:

  • 角色:谁在用?
  • 功能:他想做什么?
  • 价值:为什么做这个?

举个例子:

用户故事1:「作为一个上班族用户,我希望能通过手机APP远程控制窗帘,这样我可以在下班路上提前打开窗帘,到家时房间已经亮堂了。」

你看,这样写出来,你就能理解用户的使用场景和真实动机。而不是冷冰冰的「支持APP控制」。

咱们这个项目,我梳理了几个核心用户故事:

  1. 家庭用户:希望语音控制窗帘,解放双手
  2. 酒店管理员:希望批量管理多个房间的窗帘,统一开关
  3. 老人/小孩:希望操作简单,最好一个按键搞定
  4. 安装师傅:希望电机安装方便,不需要复杂调试

每个用户故事背后,都对应着一组技术需求。比如语音控制,就需要对接第三方语音平台;批量管理,就需要支持MQTT协议。

小技巧:写用户故事时,尽量用「用户的语言」,别用技术术语。比如「支持OTA升级」可以写成「用户希望不用拆机就能更新固件」。这样产品经理和测试都能看懂。

1.4 需求优先级排序:MoSCoW方法

好,现在需求收集了一大堆。但资源有限,时间有限,不可能全部做完。怎么办?

我推荐用MoSCoW方法来排序。这个方法把需求分成四类:

优先级 英文 中文 含义
P0 Must have 必须有 没有这个功能,产品无法发布
P1 Should have 应该有 很重要,但可以延期到下一个版本
P2 Could have 可以有 锦上添花,有更好,没有也行
P3 Won't have 这次不做 明确排除,以后再说

咱们这个窗帘电机项目,我按MoSCoW排了一下:

P0(必须有):

  • 电机正反转控制(开/关窗帘)
  • Wi-Fi配网与连接
  • 手机APP基本控制(开、关、停)
  • 过流/过载保护(防止电机堵转烧毁)

P1(应该有):

  • 定时开关功能
  • 语音控制(小爱/天猫精灵)
  • OTA固件升级
  • 低功耗待机模式

P2(可以有):

  • 场景联动(比如和灯光联动)
  • 电量统计
  • 窗帘位置百分比控制

P3(这次不做):

  • 太阳能充电
  • 手势控制
  • AI自动学习用户习惯

你可能会问:为什么P0里没有「定时功能」?

嗯,这个问题问得好。我的判断是:如果电机连基本的正反转都控制不了,或者连不上网,那产品根本没法用。定时功能虽然重要,但可以放在V1.1版本里。先保证核心功能稳定,再谈锦上添花。

避坑指南:我曾经在一个项目里,把「OTA升级」排到了P0。结果为了赶OTA功能,底层驱动写得不够扎实,导致量产时频繁死机。后来复盘发现,OTA完全可以放在P1,先把基础控制做稳。所以排序时一定要想清楚:没有这个功能,产品真的不能发布吗?

1.5 小结:需求分析阶段要交付什么?

好了,第一节课的内容差不多就这些。咱们总结一下,项目启动与需求分析阶段,你要交付这些东西:

  1. 项目背景文档:说明为什么要做这个产品
  2. 干系人清单:谁参与、谁决策、谁使用
  3. 用户故事列表:用故事描述需求,而不是功能列表
  4. MoSCoW优先级矩阵:明确P0/P1/P2/P3

这些东西看着简单,但做扎实了,后面开发会顺畅很多。我个人的经验是,需求分析阶段多花一周时间,后面能省下一个月的时间去返工。

下一节课,咱们会聊聊系统架构设计。到时候我会画一张整体的系统框图,把硬件、软件、通信协议都串起来。敬请期待。