当前位置:网站首页>嵌入式开发的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和许多其他行业标准包含了可数的嵌入式开发人员的知识和智慧。经验丰富的工程师们在那里做过,不仅从他们自己的错误中学习,也从其他人的错误中学习,开发了这样的标准。然而,由于时间限制、截止日期压力或其他障碍,许多开发人员忽略了嵌入式软件的最佳实践。
结论
各行各业都存在大罪。最佳实践通常旨在帮助防止它们,或者至少鼓励正确的行为。当最后期限临近,压力增大时,陷入这七宗罪的诱惑几乎是无法抗拒的。每个嵌入式开发人员和公司都曾在某种程度上成为他们的牺牲品。真正关心的是多久一次,做什么才能回到正轨。
边栏推荐
- js中,字符串和数组互转(二)——数组转为字符串的方法
- SAP UI5 框架的 manifest.json
- use. Net analysis Net talent challenge participation
- (work record) March 11, 2020 to March 15, 2021
- OneNote 深度评测:使用资源、插件、模版
- Xcode6 error: "no matching provisioning profiles found for application"
- Le langage r visualise les relations entre plus de deux variables de classification (catégories), crée des plots Mosaiques en utilisant la fonction Mosaic dans le paquet VCD, et visualise les relation
- Application layer of tcp/ip protocol cluster
- PHP saves session data to MySQL database
- Introduction to the use of SAP Fiori application index tool and SAP Fiori tools
猜你喜欢
审稿人dis整个研究方向已经不仅仅是在审我的稿子了怎么办?
Pinduoduo lost the lawsuit, and the case of bargain price difference of 0.9% was sentenced; Wechat internal test, the same mobile phone number can register two account functions; 2022 fields Awards an
[DSP] [Part 1] start DSP learning
15million employees are easy to manage, and the cloud native database gaussdb makes HR office more efficient
[200 opencv routines] 220 Mosaic the image
【mysql】触发器
KDD 2022 | 通过知识增强的提示学习实现统一的对话式推荐
愛可可AI前沿推介(7.6)
Application layer of tcp/ip protocol cluster
Opencv learning example code 3.2.3 image binarization
随机推荐
@PathVariable
1_ Introduction to go language
防火墙基础之外网服务器区部署和双机热备
JS操作dom元素(一)——获取DOM节点的六种方式
Mtcnn face detection
2110 summary of knowledge points and common problems in redis class
监控界的最强王者,没有之一!
#yyds干货盘点#重新梳理箭头函数的this
document.write()的用法-写入文本——修改样式、位置控制
Tips for web development: skillfully use ThreadLocal to avoid layer by layer value transmission
爱可可AI前沿推介(7.6)
Regular expression collection
New database, multidimensional table platform inventory note, flowus, airtable, seatable, Vig table Vika, Feishu multidimensional table, heipayun, Zhixin information, YuQue
使用.Net分析.Net达人挑战赛参与情况
Data Lake (VIII): Iceberg data storage format
Three schemes of SVM to realize multi classification
性能测试过程和计划
SAP Fiori应用索引大全工具和 SAP Fiori Tools 的使用介绍
如何实现常见框架
Comprehensive evaluation and recommendation of the most comprehensive knowledge base management tools in the whole network: flowus, baklib, jiandaoyun, ones wiki, pingcode, seed, mebox, Yifang cloud,