每个行业都有他们的最佳实践和罪恶实践。大罪是许多人都知道的做法,但这些做法太诱人或太容易陷入其中。嵌入式开发行业有许多这样的大罪,但是有七个特别的罪似乎已经在整个行业中存在了几十年。
原罪1——不跟踪指标
未能跟踪开发指标似乎是一个小罪,但指标是嵌入式软件工程不可或缺的一部分。 指标不仅提供了一种跟踪进度和问题的方法,还提供了一种估计方法。 工程师经常被问到,“它会持续多久?” 或“要花多少钱?”。时间和成本问题应该基于经验数据,而不是与工程师当时的乐观程度有关的即兴发挥。如果没有基本的度量跟踪来确定微控制器需要多少闪存空间是极其困难的。如果没有跟踪,工程师如何知道典型的数字输入/输出或 UART 驱动程序占用了多少 RAM/ROM?
原罪2——黑客而不是设计
在过去十年左右的时间里,成为一名黑客甚至是一名创造者的概念或想法已经被社会浪漫化了。社会已经接受了这个概念,即软件工程师应该是一个流氓黑客,不需要什么设计或深谋远虑,就能在很短的时间内创造出一个革命性的“完整的”产品。事实是嵌入式软件工程不是一门黑客学科。嵌入式开发人员需要深谋远虑和设计才能真正成功。最常犯的错误之一是没有蓝图、设计或流程图的疯狂dash代码编写,它恰好在最简单的测试案例和条件下工作,并被认为值得发布,因为它是“功能性的”。实现和测试应该遵循设计和架构。
原罪3——从零开始
深入到硬件的最深层次,并通过软件在现实世界中创造一些东西,这既有趣又令人兴奋。 嵌入式软件工程师希望开发与软件相关的一切,从最底层开始,一直到应用程序代码。 做所有事情并从头开始的问题在于它既费时又昂贵,但这是第一本能,而且通常坚持从头开始。 嵌入式系统已经变得太复杂,开发时间太短,以至于普通项目无法从头开始。 应该利用供应商代码、第 3 方组件、开源和其他标准来完成工作。 既然有如此多的商业可用和经过测试的替代品,为什么还要开发自己的 RTOS?
原罪4 – 不适合工作的工具
奇怪的是,当嵌入式开发人员需要软件工具来完成他们的工作时,像lint工具这样的基本工具被拒绝,因为它们的价格只有几千美元。简单地看一下软件工具的投资回报率与工程师每年的花费相比,应该可以看出软件工具可以更快更高质量地完成工作。
原罪5——缺乏继续教育
处理器中的晶体管数量每两年翻一番。嵌入式软件工程师使用和开发的功能和技术确实在以指数速度变化。尽管行业变化迅速,但许多公司并不计划或鼓励他们的工程师参加会议或培训。缺乏继续教育的部分原因似乎是由于设计周期时间表和压力。有太多的事情要做,一家公司不能让他们的工程师或成本在几天内不工作。公司真正应该问的问题是,在没有最新开发技术和知识的情况下,他们是否有能力雇佣工程师。
原罪6——工作时间太长
当最后期限即将到来,而又没有额外的人手时,会发生什么呢?嵌入式开发人员加班加点。工作时间过长是嵌入式软件工程师的一个普遍问题。固件主宰着世界,但现在没有足够的固件工程师来生产社会需要的所有设备。更糟糕的是,社会对这些设备的需求速度越来越慢。总是有一种需要昨天完成的软件的冲动。然而工作太长时间肯定会累垮。而不是加速发货,发货只会延迟。不要陷入持续超时的陷阱。一个新鲜的头脑比一个疲惫不堪、精疲力竭的头脑工作起来要快得多,效率高得多。
原罪7——未能遵循最佳实践
MISRA-C、CERT-C和许多其他行业标准包含了可数的嵌入式开发人员的知识和智慧。经验丰富的工程师们在那里做过,不仅从他们自己的错误中学习,也从其他人的错误中学习,开发了这样的标准。然而,由于时间限制、截止日期压力或其他障碍,许多开发人员忽略了嵌入式软件的最佳实践。
结论
各行各业都存在大罪。最佳实践通常旨在帮助防止它们,或者至少鼓励正确的行为。当最后期限临近,压力增大时,陷入这七宗罪的诱惑几乎是无法抗拒的。每个嵌入式开发人员和公司都曾在某种程度上成为他们的牺牲品。真正关心的是多久一次,做什么才能回到正轨。