了解嵌入式软件开发周期

了解嵌入式软件开发周期_第1张图片

嵌入式软件与标准软件有些细微的相似之处,但其本身就存在的一些令人感到棘手的小问题以及局限性,给开发人员带来了非同寻常的挑战。

因此,我们现在将深入研究嵌入式软件开发周期,以建立一个框架,来帮助开发团队构建强大、安全,且能够让最终用户真正信赖的嵌入式软件。

是什么让嵌入式软件开发与众不同?

在标准开发周期中,软件才是主角;硬件的存在是为软件提供平台,使其易于交互,但并非是主要焦点。

但是就嵌入式软件而言,硬件和软件相辅相成。二者往往联系密切,不可偏废。

所以说嵌入式软件开发人员必须围绕一些特殊要求而开展工作。

首先,嵌入式软件应用中的每行代码均需适应硬件的约束及构成。因此,开发周期必须考虑包括硬件的重量,以及硬件将如何与其他系统交互等在内的所有因素。如果您的嵌入式软件具有人工智能组件,那么从芯片再到数据管道存在更多因素需要考虑。

其次,随着嵌入式软件日益进入更为关键的基础设施领域,如自动驾驶汽车和智能城市中的交通信号灯,安全问题至关重要。换言之,嵌入式软件开发人员需要考虑包括地方法规,企业健康及安全规则在内的所有因素。由于对使用嵌入式软件的物联网设备进行网络攻击已变得极为普遍,数据安全问题也是重中之重。

第三,就其本质而言,嵌入式软件一旦推出就很难更新。一则,大多数嵌入式软件在运行时很少(如有)受到最终用户的干预。这样一来,用户就很难破坏软件,但也让更新变得棘手;如果您需要给软件打补丁,那么必须分配一个程序员来启动更新,并检查它是否顺利运行。如果软件需要多次更新,那么可能会在推出时耗费数百个小时。

而且,不仅仅是缺少用户干预让嵌入式软件难以更新。嵌入式软件最常出现在“随时在线”的技术中,比如安全传感器、工厂机械和医疗设备。因此更新软件时,即使快速安装,并且只需快速重启,也会造成巨大的破坏。也就是说只有为提升性能非更新不可时,才应该进行更新;您不可能每月都推出新补丁。因此,风险通常更高,规章制度往往更棘手,而且容错率极小。

下面来看看如何能应对这些挑战,并仍然能构建出色的嵌入式软件。

第 1 步:范围界定(亦称:何人、何事、何时、何地以及何故)

软件开发最重要的规则之一:在确切知道您要为谁构建软件之前,请勿开始构建软件。

那么现在应该具体了解一下:

  • 谁会使用这个软件?
  • 它能解决什么问题?它满足了什么需求?
  • 他们将如何使用该软件?试想一下它将在何时何地启动,需要运行多长时间,以及这会如何改变您所构建的软件类型。
  • 顾客会为您正在生产的产品支付多少钱?

这些问题的答案将指导您完成软件开发周期的余下部分,所以请勿匆忙浏览或跳过。您需要不断回顾该研究,以确保主体方向正确。

第 2 步:设计(亦称:绘图、规划和组建团队)

既然您了解所要满足的需求,那么现在应该着手让您的设备及相配套软件的规格更充实具体些。

此处,意思是要弄清楚您的硬件和软件如何协同工作,以最大限度地提高性能。

也就是说您应该与开发硬件的团队保持持续沟通,从而找到适合的人员组建:

  • 工具——您所需要的软件开发工具能够支持嵌入式软件开发的独特需求。因而嵌入式软件开发工具应安全性高(因此您的最终用户受到保护),适应性强(因此您可以在硬件需发展时快速反应),并能加速开发过程。您还需要选择一个项目来帮助您的Linux 尽可能快速和高效地运行(我们推荐 Yocto ——您可以在此处了解更多原因)。
  • 人员——您正构建的设备类型以及团队的组成将决定您的团队所需要的硬件工程师、嵌入式软件工程师、开发人员和电气工程师以及其他一系列角色的组合。现在正是时候来弄清您是否需要一些提供嵌入式软件开发服务的公司来提供额外支持。
  • 硬件和软件要求——现在应该为您的设备创建一个详细的技术规范文档。这里,您将定义产品用途,列出主要特征,并制定出制造要求(尺寸、重量、工作电压、内存类型,以及一切您能想到的)。

同时也正是时候设定团队的成功指标,来衡量您的表现,并收集数据,从而完善下一个开发项目。

第 3 步:构建(亦称:向前一步,后退两步)

接下来一起看看所有的计划是否得到了回报。您的软件或硬件设计中是否存在任何意外困难?这两部分是否能完美地协调工作?

硬件通常居于首要地位——正如我们所探讨的,您必须调整软件以适应硬件,因而在着手开发应用之前,明智的做法是尽可能地把设备的物理形态确定下来。

也就是说,硬件工程师可以根据上一步开发的系统架构来开发阿尔法原型。他们将利用这一点来检查系统架构在实践中是否可行,并可能对设计进行一些调整,以便在建立贝塔原型之前解决任何问题。

然后就应该开始对嵌入式软件进行编码。

当然,简单语句中的背后有着很多复杂性。您将试图绕过严格的硬件要求开展工作,满足严格的安全要求,并提供技术规范中的所有功能。

但这仅仅是个开始。

第 4 步:测试和微调(亦称:无所不至,无处不在,一气呵成)

如前所述,固件一旦问世并为最终用户所用,更新起来就非常困难。因此,在进入下一阶段之前从各角度彻底测试代码均至关重要。

此处您所选择的开发工具可以制作或是破坏您的软件。

简而言之,在开发过程中,您需要像火箭燃料一样有着巨大推力的工具——这些工具可以让您开发新的迭代,并进行测试,从而快速更新为更完善、更强大的软件版本。最重要的是,您需要能够做到这一切,而不降低代码的质量或软件的安全性或可靠性。

因此,您应该寻找一种工具,能够:

  • 加快计算密集型开发任务,如编译、CI/CD 构建、QA 测试、代码分析和 API 测试。
  • 允许快速迭代和扩展,而不会使 IT 开销节节攀升。
  • 在不强迫改变常规流程或接受大量培训的情况下完成这两者。

通常,也就是说您需要一个像 Incredibuild 这样的工具:使用强大的分布式处理、虚拟化和独特的构建缓存来帮助您以闪电般的速度进行构建和测试。

由于等待代码编译或测试运行所花费的时间更少,您将能够真正深入持续集成中,更快地向开发人员获得反馈,使您的资源得到进一步扩展,并真正充分利用每一秒的开发时间。

这就意味着您将能够切实地对每条途径进行探索,并对每行代码进行压力测试,以便充满信心地进入下一阶段的进程。

第 5 步:现场测试(亦称:风、雨、热和技术恐惧症)

现在应该看看您的软件是否能通过最后一关;当它走出实验室并进入最终用户手中时,能否可靠、安全、高效地工作。

在此阶段,要留出一些时间来测试您的软件和硬件如何在环境运行。当您的软件被非专业人士使用时,如何维持运行?硬件在温暖的环境中,或在正常磨损的情况下,如何运行?

使用在第一步所收集到的信息,在将要使用的环境中对您的设备进行测试。如果你要构建智能洒水装置,请检查硬件是否足够坚固以抵抗各种外在因素。如果您正在为救护员构建医疗装置,即使当救护车必须前往交通不便的偏远地区,也请确保您的软件能快速启动并有效运行。

构建出色的嵌入式软件的关键何在?除了反复测试,别无他法。

如果您正构建嵌入式软件,您需要为更复杂的需求、更严格的限制以及更少的犯错空间而做好准备。

因此,尽管开发周期的每个阶段都很重要,但关键是要为自己准备好快速测试与快速迭代的工具。在开发过程中,您需要对代码中的所有内容进行测试——如果不能一次性完成,那当然也要尽可能快速有效地完成。

这是确保经得起任何考验的最好方法,这样一来您的最终用户也可以对其完全依赖。

点击获取试用License!
了解嵌入式软件开发周期_第2张图片

你可能感兴趣的:(C++,嵌入式开发,c++)