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

原因4——缺乏自动化或手动测试
是的,这可能是一个棘手的问题,因为有很多工程师和客户不使用自动化测试。一个形式化的测试过程,尤其是自动化测试,对于确保一个代码库是健壮的并且有足够的质量来满足它的需求是至关重要的。但是对于低级固件和嵌入式系统,我们似乎仍然落后于软件行业的其他部分。如果没有自动化测试,我们就无法知道集成开源组件是否破坏了其中的某些东西,直到我们进入生产时才会注意到。
原因5——文档质量差或完全缺乏
文档在已经存在很长时间或者有强大商业支持的开源项目中变得越来越好。尽管由个人驱动的较小的项目倾向于很少或者没有文档。如果开源代码没有文档,将其付诸实践或调试将会是一场噩梦,并且比仅仅获得商业或工业级软件更昂贵。
原因6–缺乏实时支持
很少有什么事情比竭尽全力让某个东西工作或调试却碰壁更令嵌入式开发人员感到沮丧的了。发生这种情况时,解决问题的最佳方式是寻求支持。开源的问题在于,不能保证你能及时得到解决任何问题所需的支持。当然,有论坛和社交媒体来寻求帮助,但这些都是由放弃空闲时间来帮助解决问题的人操纵的。如果他们没有时间去钻研一个问题,或者这个问题不有趣或者太复杂,那么开发者就只能靠自己了。
原因7——整合从来不像看起来那么简单
下载源代码并开始集成。几个月后,整合仍在进行。看似简单的事情很快变得复杂,因为没有使用相同的平台或工具链,必须进行“微小的”修改。
结论
我绝不反对开源软件,在某些情况下,这是非常有用和有益的。重要的是不要仅仅使用软件,因为它是免费和开源的。嵌入式开发人员需要认识到他们的需求、需要和他们产品所需的健壮性级别,并适当地开发或采购满足这些需求的软件。
边栏推荐
- Persisting in output requires continuous learning
- Unity function - unity offline document download and use
- Win32 create window and button (lightweight)
- Go language self-study series | golang switch statement
- Custom annotation
- 突破100万,剑指200万!
- Introduction series of software reverse cracking (1) - common configurations and function windows of xdbg32/64
- 子类隐藏父类的同名函数
- nifi从入门到实战(保姆级教程)——flow
- Popular understanding of linear regression (I)
猜你喜欢

Summary of JVM knowledge points

Halcon and WinForm study section 2

Download and install common programs using AUR

GCC cannot find the library file after specifying the link library path

Jvm-06-execution engine

关于网页中的文本选择以及统计选中文本长度
![[cloud native training camp] module VIII kubernetes life cycle management and service discovery](/img/87/92638402820b32a15383f19f6f8b91.png)
[cloud native training camp] module VIII kubernetes life cycle management and service discovery
![App mobile terminal test [5] file writing and reading](/img/f1/4bff6e66b77d0f867bf7237019e982.png)
App mobile terminal test [5] file writing and reading

《微服务设计》读书笔记(下)

秒杀系统3-商品列表和商品详情
随机推荐
《微服务设计》读书笔记(上)
Large CSV split and merge
Popular understanding of random forest
Introduction, use and principle of synchronized
Redis高可用与持久化
Use percent sign in CString
How are integer and floating-point types stored in memory
Characteristics of MySQL InnoDB storage engine -- Analysis of row lock
Qt常用语句备忘
阿飞的期望
Microservice API gateway
Srs4.0+obs studio+vlc3 (environment construction and basic use demonstration)
[combinatorics] combinatorial identities (recursive combinatorial identities | sum of variable terms | simple combinatorial identities and | sum of variable terms | staggered sums of combinatorial ide
Persisting in output requires continuous learning
Unity功能——Unity离线文档下载及使用
Seckill system 2 redis solves the problem of distributed session
自定义注解
Distributed task scheduling XXL job
Problems of CString in multithreading
Introduction series of software reverse cracking (1) - common configurations and function windows of xdbg32/64