当前位置:网站首页>嵌入式开发:避免开源软件的7个理由
嵌入式开发:避免开源软件的7个理由
2022-07-03 15:44:00 【粤嵌教育】
可能很多人会认为开源软件是这个行业有史以来最伟大的事情!免费的!我们究竟为什么要避免开源软件?这可能会让一些读者感到惊讶,但是尽管我们热爱“开源”和“自由软件”,嵌入式开发者应该考虑几个理由来证明避免开源软件是正确的。
原因1–意外暴露机密知识产权
开发人员通常认为所有开源软件都是免费的,没有任何附加条件。问题是事实并非如此。开源软件开发人员使用几种不同的许可方案。然而,也有一些许可证要求任何修改,甚至相关软件都要作为开源软件发布。如果没有密切关注,那么开发人员可能会发现他们不得不向外界发布机密代码和算法。自由软件只是让公司付出了披露代码的代价,或者如果他们想受到保护,他们现在需要花钱请律师,以确保他们不会因为使用“自由”软件而放弃一切。
确保如果你要使用开源软件,你要计算律师费用来证明你是清白的。
原因2——专为功能性而非坚固性而设计
开源软件通常是按功能编写的。访问并写入SD卡。通过USB通信。这里的问题是,虽然它的功能代码通常是不健壮的,并期望扳手永远不会扔在齿轮上。这种情况很少发生,尽管软件是免费的,但开发者很快就会发现他们的开源软件只是功能性的,无法承受现实世界的压力。
原因3——缺乏可追踪的软件开发生命周期
软件在发展,但它并没有真正遵循可追踪的设计周期,甚至没有遵循最佳实践。这些不同的嵌入式开发人员实现他们想要的东西,或者将代码推向满足他们需求的方向。结果是软件在有限的情况和环境下工作,用户需要祈祷他们的需求和条件与他们相匹配。

原因4——缺乏自动化或手动测试
是的,这可能是一个棘手的问题,因为有很多工程师和客户不使用自动化测试。一个形式化的测试过程,尤其是自动化测试,对于确保一个代码库是健壮的并且有足够的质量来满足它的需求是至关重要的。但是对于低级固件和嵌入式系统,我们似乎仍然落后于软件行业的其他部分。如果没有自动化测试,我们就无法知道集成开源组件是否破坏了其中的某些东西,直到我们进入生产时才会注意到。
原因5——文档质量差或完全缺乏
文档在已经存在很长时间或者有强大商业支持的开源项目中变得越来越好。尽管由个人驱动的较小的项目倾向于很少或者没有文档。如果开源代码没有文档,将其付诸实践或调试将会是一场噩梦,并且比仅仅获得商业或工业级软件更昂贵。
原因6–缺乏实时支持
很少有什么事情比竭尽全力让某个东西工作或调试却碰壁更令嵌入式开发人员感到沮丧的了。发生这种情况时,解决问题的最佳方式是寻求支持。开源的问题在于,不能保证你能及时得到解决任何问题所需的支持。当然,有论坛和社交媒体来寻求帮助,但这些都是由放弃空闲时间来帮助解决问题的人操纵的。如果他们没有时间去钻研一个问题,或者这个问题不有趣或者太复杂,那么开发者就只能靠自己了。
原因7——整合从来不像看起来那么简单
下载源代码并开始集成。几个月后,整合仍在进行。看似简单的事情很快变得复杂,因为没有使用相同的平台或工具链,必须进行“微小的”修改。
结论
我绝不反对开源软件,在某些情况下,这是非常有用和有益的。重要的是不要仅仅使用软件,因为它是免费和开源的。嵌入式开发人员需要认识到他们的需求、需要和他们产品所需的健壮性级别,并适当地开发或采购满足这些需求的软件。
边栏推荐
- Detailed explanation of four modes of distributed transaction (Seata)
- 秒杀系统2-Redis解决分布式Session问题
- 一些事情的反思
- Tensorflow realizes verification code recognition (III)
- VS2017通过IP调试驱动(双机调试)
- Popular understanding of ovo and ovr
- QT use qzxing to generate QR code
- Redis single thread problem forced sorting layman literacy
- do{}while()的妙用
- WinDbg分析dump文件
猜你喜欢

Popular understanding of decision tree ID3

Visual upper system design and development (Halcon WinForm) -3 Image control
![App mobile terminal test [5] file writing and reading](/img/f1/4bff6e66b77d0f867bf7237019e982.png)
App mobile terminal test [5] file writing and reading

Microservice - declarative interface call openfeign

Seckill system 3- product list and product details

UnityShader——MaterialCapture材质捕捉效果 (翡翠斧头)

【OpenCV 例程200篇】217. 鼠标交互获取多边形区域(ROI)

Redis lock Optimization Practice issued by gaobingfa

Summary of JVM knowledge points

Microservice - Nacos registration center and configuration center
随机推荐
Atlas atlas torque gun USB communication tutorial based on mtcom
Jvm-04-runtime data area heap, method area
Detailed explanation of string function and string function with unlimited length
Microservice - fuse hystrix
Find mapping relationship
Srs4.0+obs studio+vlc3 (environment construction and basic use demonstration)
坚持输出需要不断学习
Microservices Seata distributed transactions
[combinatorics] combinatorial identities (recursive combinatorial identities | sum of variable terms | simple combinatorial identities and | sum of variable terms | staggered sums of combinatorial ide
A Fei's expectation
自定义注解
如何使用 @NotNull等注解校验 并全局异常处理
软件安装信息、系统服务在注册表中的位置
Enable multi-threaded download of chrome and edge browsers
QT common sentence notes
Shell script import and export data
Redis high availability and persistence
Concurrency-01-create thread, sleep, yield, wait, join, interrupt, thread state, synchronized, park, reentrantlock
App移动端测试【5】文件的写入、读取
大csv拆分和合并