具有嵌入式软件开发的敏捷硬件
已发表: 2022-03-11构建适合产品/市场的复杂硬件和软件生态系统是一项艰巨的任务。 根据 CB Insights 的一份报告,虽然大多数硬件初创公司最终因资金不足而失败,但最大的根本原因实际上是对其产品的需求不足。 这只是强调了产品经理角色对于硬件初创公司的重要性,因为他们的主要目标是找出客户需求和痛点,以交付成功的产品。
我经营的最后一家公司为停车行业创建了一个由网络、移动、嵌入式软件应用程序和硬件设备组成的生态系统。 硬件产品策略是我日常工作的一部分,这让我尝试了各种硬件产品开发工作流程。 尽管从事硬件产品工作 10 年并拥有电子和电信学士学位,但我在工作中仍然有很多东西要学习。 我创建了下面的指南,希望您能够比我更快地在具有嵌入式软件空间的硬件中加快产品管理的速度。
硬件产品管理的挑战
虽然 SaaS 和移动应用程序可以使用敏捷框架轻松开发,但嵌入式软件和硬件设备开发的独特条件使得应用敏捷原则变得更加困难。 在第一部分中,我们将介绍造成复杂性的硬件开发的特征。 并非所有人都有直接的解决方案,但有一些方法可以通过采用特定的硬件开发策略来降低难度,这将在下一节中介绍。
专业技术人才在当地难找
创建新的硬件产品比迭代现有产品要困难得多。 它涉及大量的原型制作创意和经验,这在大学里很少教授。 一些大学甚至没有原型设计设施或必要的工具来开发这些技能,而这种经验几乎完全是在拥有研发中心的大型硬件公司中获得的。 因此,寻找具有相关专业知识的本地专业人士可能非常困难,导致许多硬件初创公司创始人需要通过远程招聘来扩大他们的人才库。
版本控制系统不适应硬件设计
大多数版本控制系统 (VCS) 都面向支持文本格式,因为它们是为软件开发协作工作而创建的。 在涉及硬件开发的项目中,信息被封装在借助 OrCAD 等特殊工具创建的设计文件中。 其中一些工具仅支持二进制文件,这些文件甚至没有经过优化以在 VCS 中使用。 CADLAB 是创建硬件兼容 VCS 的一项相对较新的尝试,希望在不久的将来会有更多类似的工具。
硬件生产设施异地化
硬件生产设施通常位于另一个地区、国家或大陆。 硬件生产商和制造商之间的沟通需要特别考虑,并且是成功交付产品的关键。 成功的沟通需要更多的战略框架,以确保产品的质量,并确保它能够应对动态的产品市场验证阶段的变化。 为了实现这一点,硬件生产商需要创建许多发送给制造商的详细规范。 协作框架必须确保信息的快节奏交付和规范生命周期的管理,因为它们很容易很快过时。
硬件更改不太灵活
软件初创公司中流行的运营模式会在早期阶段牺牲质量来换取速度。 就连 Facebook 也在相当长的时间里倡导“快速行动,打破常规”的口号。 另一种熟悉的方法是“假装它,直到你成功”。 这适用于软件初创公司,因为廉价的基础设施成本和简化的编程框架允许开发人员每天部署代码更新。
虽然这种开发方法已经慢慢渗入硬件领域,但这是该领域的一个不幸趋势,因为进行和部署硬件更改要困难得多。 开发成本抵消了通过快速和频繁发布所获得的价值,因此在设计阶段投入更多资金以创建完善的硬件架构实际上是一种更理想的策略。
众筹的陷阱
许多初创公司都陷入了这样一种观念,即发起一场成功的硬件众筹活动就等同于市场验证。 对于涉及硬件组件的产品,众筹往往最成功,特别是因为我们无意识地渴望与物理对象相关的所有权。 然而,众筹并不是为了大规模验证你的产品,而是一种为早期产品开发提供资金的民主方式。 不幸的现实是,许多成功开展众筹活动的公司随后发现很难或几乎不可能扩大生产规模,因为他们没有大规模验证市场。
认证、法规和批准
所有硬件产品都需要某种认证才能出售。 这是将硬件产品推向市场的早期阶段最容易被忽视的步骤之一。 认证约束将如何影响产品计划和申请开发的框架? 将认证和其他批准作为项目里程碑计划项目的早期阶段并不少见,然后才有条件地回溯到启动阶段。 相反,产品经理可以以更像瀑布的方法仔细分析法规、依赖关系和产品计划战略决策网关。
硬件产品管理的机会
既然我们已经涵盖了硬件与嵌入式软件领域存在的一些挑战,现在让我们看看如何使开发过程更加简化和可预测,以抵消硬件开发的固有困难。
将敏捷融入硬件开发
经验丰富的产品经理意识到使用嵌入式软件构建硬件产品背后的挑战,试图利用新技术发展创造的市场机会。 他们学会平衡加快上市时间,而不影响从规划阶段产品成功的可能性。 大多数情况下,这是通过水-scrum-fall方法形成的。
产品构思阶段尽可能详细地扩展产品原理、目标和高级功能。 优秀的产品经理会花更多的时间来完善这一阶段的可交付成果:愿景、使命、机会评估、硬件产品目标和功能。 这是产品的北极星,在开始处理任何类型的硬件原型之前需要足够清晰,因此建议使用瀑布方法。
为硬件产品制定完善的需求和功能规范以及驱动硬件产品的嵌入式软件的良好技术架构至关重要。 要求和规范的更改应该受到惩罚,而不是在整个团队签署后才鼓励。
开发嵌入式软件时可以使用标准的 Scrum 方法。 就时间和金钱而言,调整和改进软件实现以使用预定义的硬件架构比反之亦然更便宜。
最终的集成测试和用户验收测试应该在瀑布条件下进行。 在此阶段,开发阶段已完成,新功能和缺失的功能将作为下一个计划期的附加工作请求记录下来。
将敏捷融入嵌入式软件开发
使用嵌入式软件构建复杂的硬件产品会影响传统软件开发方法的应用方式。 许多用于生产在个人计算机上运行的软件的系统不适合开发嵌入式软件,因为存在资源稀缺和更长的开发生命周期方面的限制。
来自巴西的一组学者和专业人士提供了一个潜在的解决方案:嵌入式控制系统的基于平台的软件设计方法:一个敏捷工具包。 这种方法将敏捷原则融入到嵌入式软件开发中。 以下是该方法的简短摘要,但强烈建议硬件产品经理在将其应用于实践之前阅读完整描述。

此方法中涉及的角色是:
- 平台所有者——负责定义质量、计划和成本目标
- 产品负责人——负责产品的实施、集成和测试
- 功能负责人——负责管理子系统项目并跟踪功能可交付成果的进度
- 开发团队——致力于产品开发
该方法将嵌入式软件的开发分为三个过程组:
- 系统平台进程组。 系统从平台库中选择将成为架构和 API 平台一部分的系统组件,并对其进行定制以满足相关应用程序的约束。 通过对集成到平台中的设计人员可配置处理器和运行时可重新配置逻辑进行编程,以迭代周期执行定制过程。
- 产品开发过程组。 构成产品的功能被划分为平台的硬件或软件元素。 该方法提供了分区算法,以考虑应用程序组件的能耗、执行时间和内存大小。
- 产品管理流程组监控和控制产品范围、时间、质量和成本参数。 建议的方法主要包括 Scrum Agile 方法所提倡的实践以及敏捷模式。
创建硬件开发计划
构建早期硬件开发计划使公司能够提供快速转型或 B 计划。从业务角度来看,它可能会降低财务利润,但最终,它提供了应对不断变化的市场所需的敏捷性竞争产品发布的条件和先进的技术能力。
假设一家公司为其带有嵌入式软件的硬件产品开展了成功的众筹活动。 他们在第一批产品上表现出色,直到一家大型成熟公司宣布类似的产品。 多功能性和上市时间是最重要的,对这种情况采取务实和敏捷的反应会增加产品成功的可能性。 通过制定硬件开发计划,公司可以快速适应并在聚光灯下推出更丰富的产品版本,作为对竞争对手的回应。
使用嵌入式软件成功测试硬件
测试是硬件产品管理的重要组成部分,因为与敏捷软件测试不同,大多数硬件错误只能通过生产一批新产品来修复。 着火的三星 Galaxy Note 7 设备就是一个很好的例子,说明为什么硬件测试应该是所有产品经理的头等大事。
功能测试是对带有嵌入式软件产品的硬件进行技术验证的关键目标。 这些过程的复杂性来自于错误可能来自系统的任何部分这一事实。
单元测试通常在每次 sprint 之后在模拟环境中进行,因为模拟硬件具有完全可控的优势。 测试脚本可以自动化,可以监督执行,并杀死似乎已经崩溃而无法产生任何结果的测试。
集成测试应考虑在线和离线操作以及将硬件产品提交到实际操作条件。 例如,如果公司在户外活动中开发头戴式大脑监测系统,则测试条件应考虑这些特殊性。
系统测试涉及测试整个系统的错误和错误。 该测试通过连接整个系统的硬件和软件组件(之前已经过单元和集成测试)然后作为一个整体进行测试来执行。 此测试列在黑盒测试方法下,其中检查软件的用户预期场景、潜在异常和边缘情况条件。 可提及的特殊测试类别:
- 事件触发测试:由硬件产品生命周期中的特定事件或状态变化(例如,启动、重置、关闭)启动。 其目标是检测永久性故障。
- 时间触发测试:在系统正常运行的预配置时间启动,定期进行以检测永久性故障。 它在长时间运行的系统中很有用,在这些系统中不会发生重大的测试触发事件。 时间触发测试对于检测间歇性故障也很有用。
带有嵌入式软件的硬件产品验收
带有嵌入式软件的硬件产品的产品价值通常在 Water-scrum-fall 方法中的产品验收步骤之后进行验证。 具有嵌入式软件生态系统的硬件必须优先考虑硬件而不是软件才能进行验证和验收。 如前所述,硬件更改执行起来更加困难和昂贵。 产品经理通常会构思创新的解决方案,解决验收问题或调整价值,考虑到无法更改硬件和支持软件开发领域的额外迭代的约束。
优秀的产品经理具有产品敏锐度和远见,能够预测硬件需求并优先考虑正确的包含功能,从而使业务模型合理、接受度高、用户喜欢使用产品。 考虑到嵌入式软件,硬件的“装饰”应该不足为奇,因为它需要遵循规则和约束,由硬件开发过程、认证程序、生产挑战和市场接受度驱动。
硬件开发需要托管敏捷性
敏捷已经席卷了软件开发领域,现在已经开始进入硬件领域。 然而,嵌入式软件开发的硬件产品条件带来了各种挑战:
- 缺乏专业人才
- 不适合硬件的版本控制系统
- 异地生产设施
- 与软件相比更难做出的改变
- 施加规划障碍的认证和监管要求
这些挑战使得以与软件公司相同的方式应用敏捷原则变得更加困难。
为了应对这些挑战,需要一种以水-scrum-fall 的形式进行管理的敏捷方法。 嵌入式软件开发是按照标准 Scrum 程序创建的,而其他步骤(如构思、创建规范和测试)则在瀑布设置中实现。 这使硬件公司能够获得敏捷提供的回报,同时保持一种有效的产品管理方法,该方法必须考虑上面列出的各种限制。 在瞬息万变的市场条件和不断的技术改进的背景下,这种管理的敏捷性方法提供了一条成功的前进道路。