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

原因4——缺乏自动化或手动测试
是的,这可能是一个棘手的问题,因为有很多工程师和客户不使用自动化测试。一个形式化的测试过程,尤其是自动化测试,对于确保一个代码库是健壮的并且有足够的质量来满足它的需求是至关重要的。但是对于低级固件和嵌入式系统,我们似乎仍然落后于软件行业的其他部分。如果没有自动化测试,我们就无法知道集成开源组件是否破坏了其中的某些东西,直到我们进入生产时才会注意到。
原因5——文档质量差或完全缺乏
文档在已经存在很长时间或者有强大商业支持的开源项目中变得越来越好。尽管由个人驱动的较小的项目倾向于很少或者没有文档。如果开源代码没有文档,将其付诸实践或调试将会是一场噩梦,并且比仅仅获得商业或工业级软件更昂贵。
原因6–缺乏实时支持
很少有什么事情比竭尽全力让某个东西工作或调试却碰壁更令嵌入式开发人员感到沮丧的了。发生这种情况时,解决问题的最佳方式是寻求支持。开源的问题在于,不能保证你能及时得到解决任何问题所需的支持。当然,有论坛和社交媒体来寻求帮助,但这些都是由放弃空闲时间来帮助解决问题的人操纵的。如果他们没有时间去钻研一个问题,或者这个问题不有趣或者太复杂,那么开发者就只能靠自己了。
原因7——整合从来不像看起来那么简单
下载源代码并开始集成。几个月后,整合仍在进行。看似简单的事情很快变得复杂,因为没有使用相同的平台或工具链,必须进行“微小的”修改。
结论
我绝不反对开源软件,在某些情况下,这是非常有用和有益的。重要的是不要仅仅使用软件,因为它是免费和开源的。嵌入式开发人员需要认识到他们的需求、需要和他们产品所需的健壮性级别,并适当地开发或采购满足这些需求的软件。
边栏推荐
- Approval process design
- CString在多线程中的问题
- Markdown file titles are all reduced by one level
- Jvm-06-execution engine
- App移动端测试【3】ADB命令
- Redis high availability and persistence
- Custom annotation
- Microservice - fuse hystrix
- Final review points of human-computer interaction
- Tensorflow realizes verification code recognition (III)
猜你喜欢

深度学习之三维重建

App移动端测试【3】ADB命令

Microservices - load balancing ribbon

Microservice API gateway

App移动端测试【4】apk的操纵

Please be prepared to lose your job at any time within 3 years?

Visual upper system design and development (Halcon WinForm) -3 Image control

Detailed pointer advanced 2

Final review points of human-computer interaction

Microservice API gateway zuul
随机推荐
How to use annotations such as @notnull to verify and handle global exceptions
Popular understanding of linear regression (I)
App移动端测试【4】apk的操纵
Redis high availability and persistence
Puppet automatic operation and maintenance troubleshooting cases
Unity function - unity offline document download and use
Jvm-06-execution engine
Tensorflow realizes verification code recognition (I)
Go语言自学系列 | golang中的if else语句
Location of software installation information and system services in the registry
[combinatorics] combinatorial identities (recursive combinatorial identities | sum of variable terms | simple combinatorial identities and | sum of variable terms | staggered sums of combinatorial ide
Final review points of human-computer interaction
Analysis of development mode process based on SVN branch
Automatic generation of client code from flask server code -- Introduction to flask native stubs Library
软件安装信息、系统服务在注册表中的位置
qt使用QZxing生成二维码
Approval process design
[系统安全] 四十三.Powershell恶意代码检测系列 (5)抽象语法树自动提取万字详解
利用MySQL中的乐观锁和悲观锁实现分布式锁
A Fei's expectation