当前位置:网站首页>嵌入式开发的7大原罪
嵌入式开发的7大原罪
2022-07-06 12:51:00 【粤嵌教育】
每个行业都有他们的最佳实践和罪恶实践。大罪是许多人都知道的做法,但这些做法太诱人或太容易陷入其中。嵌入式开发行业有许多这样的大罪,但是有七个特别的罪似乎已经在整个行业中存在了几十年。
原罪1——不跟踪指标
未能跟踪开发指标似乎是一个小罪,但指标是嵌入式软件工程不可或缺的一部分。 指标不仅提供了一种跟踪进度和问题的方法,还提供了一种估计方法。 工程师经常被问到,“它会持续多久?” 或“要花多少钱?”。时间和成本问题应该基于经验数据,而不是与工程师当时的乐观程度有关的即兴发挥。如果没有基本的度量跟踪来确定微控制器需要多少闪存空间是极其困难的。如果没有跟踪,工程师如何知道典型的数字输入/输出或 UART 驱动程序占用了多少 RAM/ROM?
原罪2——黑客而不是设计
在过去十年左右的时间里,成为一名黑客甚至是一名创造者的概念或想法已经被社会浪漫化了。社会已经接受了这个概念,即软件工程师应该是一个流氓黑客,不需要什么设计或深谋远虑,就能在很短的时间内创造出一个革命性的“完整的”产品。事实是嵌入式软件工程不是一门黑客学科。嵌入式开发人员需要深谋远虑和设计才能真正成功。最常犯的错误之一是没有蓝图、设计或流程图的疯狂dash代码编写,它恰好在最简单的测试案例和条件下工作,并被认为值得发布,因为它是“功能性的”。实现和测试应该遵循设计和架构。
原罪3——从零开始
深入到硬件的最深层次,并通过软件在现实世界中创造一些东西,这既有趣又令人兴奋。 嵌入式软件工程师希望开发与软件相关的一切,从最底层开始,一直到应用程序代码。 做所有事情并从头开始的问题在于它既费时又昂贵,但这是第一本能,而且通常坚持从头开始。 嵌入式系统已经变得太复杂,开发时间太短,以至于普通项目无法从头开始。 应该利用供应商代码、第 3 方组件、开源和其他标准来完成工作。 既然有如此多的商业可用和经过测试的替代品,为什么还要开发自己的 RTOS?
原罪4 – 不适合工作的工具
奇怪的是,当嵌入式开发人员需要软件工具来完成他们的工作时,像lint工具这样的基本工具被拒绝,因为它们的价格只有几千美元。简单地看一下软件工具的投资回报率与工程师每年的花费相比,应该可以看出软件工具可以更快更高质量地完成工作。
原罪5——缺乏继续教育
处理器中的晶体管数量每两年翻一番。嵌入式软件工程师使用和开发的功能和技术确实在以指数速度变化。尽管行业变化迅速,但许多公司并不计划或鼓励他们的工程师参加会议或培训。缺乏继续教育的部分原因似乎是由于设计周期时间表和压力。有太多的事情要做,一家公司不能让他们的工程师或成本在几天内不工作。公司真正应该问的问题是,在没有最新开发技术和知识的情况下,他们是否有能力雇佣工程师。
原罪6——工作时间太长
当最后期限即将到来,而又没有额外的人手时,会发生什么呢?嵌入式开发人员加班加点。工作时间过长是嵌入式软件工程师的一个普遍问题。固件主宰着世界,但现在没有足够的固件工程师来生产社会需要的所有设备。更糟糕的是,社会对这些设备的需求速度越来越慢。总是有一种需要昨天完成的软件的冲动。然而工作太长时间肯定会累垮。而不是加速发货,发货只会延迟。不要陷入持续超时的陷阱。一个新鲜的头脑比一个疲惫不堪、精疲力竭的头脑工作起来要快得多,效率高得多。
原罪7——未能遵循最佳实践
MISRA-C、CERT-C和许多其他行业标准包含了可数的嵌入式开发人员的知识和智慧。经验丰富的工程师们在那里做过,不仅从他们自己的错误中学习,也从其他人的错误中学习,开发了这样的标准。然而,由于时间限制、截止日期压力或其他障碍,许多开发人员忽略了嵌入式软件的最佳实践。
结论
各行各业都存在大罪。最佳实践通常旨在帮助防止它们,或者至少鼓励正确的行为。当最后期限临近,压力增大时,陷入这七宗罪的诱惑几乎是无法抗拒的。每个嵌入式开发人员和公司都曾在某种程度上成为他们的牺牲品。真正关心的是多久一次,做什么才能回到正轨。
边栏推荐
- 如何实现常见框架
- Summary of different configurations of PHP Xdebug 3 and xdebug2
- use. Net drives the OLED display of Jetson nano
- C language games - minesweeping
- It's almost the new year, and my heart is lazy
- No Yum source to install SPuG monitoring
- js通过数组内容来获取数组下标
- 【微信小程序】运行机制和更新机制
- 数据湖(八):Iceberg数据存储格式
- What is the problem with the SQL group by statement
猜你喜欢
[200 opencv routines] 220 Mosaic the image
Laravel notes - add the function of locking accounts after 5 login failures in user-defined login (improve system security)
The biggest pain point of traffic management - the resource utilization rate cannot go up
[wechat applet] operation mechanism and update mechanism
Infrared thermometer based on STM32 single chip microcomputer (with face detection)
Kubernetes learning summary (20) -- what is the relationship between kubernetes and microservices and containers?
Mécanisme de fonctionnement et de mise à jour de [Widget Wechat]
ICML 2022 | flowformer: task generic linear complexity transformer
2017 8th Blue Bridge Cup group a provincial tournament
Study notes of grain Mall - phase I: Project Introduction
随机推荐
R語言可視化兩個以上的分類(類別)變量之間的關系、使用vcd包中的Mosaic函數創建馬賽克圖( Mosaic plots)、分別可視化兩個、三個、四個分類變量的關系的馬賽克圖
[DIY]如何制作一款個性的收音機
Leetcode hot topic Hot 100 day 32: "minimum coverage substring"
[DSP] [Part 1] start DSP learning
愛可可AI前沿推介(7.6)
Math symbols in lists
SAP Fiori应用索引大全工具和 SAP Fiori Tools 的使用介绍
Variable star --- article module (1)
It's almost the new year, and my heart is lazy
Data Lake (VIII): Iceberg data storage format
Mécanisme de fonctionnement et de mise à jour de [Widget Wechat]
Xcode6 error: "no matching provisioning profiles found for application"
Deployment of external server area and dual machine hot standby of firewall Foundation
3D人脸重建:从基础知识到识别/重建方法!
Select data Column subset in table R [duplicate] - select subset of columns in data table R [duplicate]
Laravel notes - add the function of locking accounts after 5 login failures in user-defined login (improve system security)
js通过数组内容来获取数组下标
None of the strongest kings in the monitoring industry!
Can novices speculate in stocks for 200 yuan? Is the securities account given by qiniu safe?
审稿人dis整个研究方向已经不仅仅是在审我的稿子了怎么办?