显而易见的是,制造业自动化领域许多参与者的崛起,以及工厂越来越多地采用工业物联网和自动化解决方案,为开源软件的应用提供了合适的环境。无论制造商的操作技术和管理要求如何,开源软件都是一种增值解决方案,因为它具有定制化、高适应弹性、可扩展性、可访问性、成本效益和质量等优势。
定制化
软件开发人员通过使用开源代码为本身特定应用软件的创建提供核心代码,在此基础上再建立特定的特性,并允许用户访问它并根据需要进行更改。与将用户锁定的封闭系统不同,开源允许他们调整和修改代码以满足特定的需求或应用。这中附加编码方式可对定制化不加限制,从而使社群(即用户的集合)能够在软件集成阶段添加有益的特性,例如用于用户测试的特性或为机器找到最佳解决方案的特性。定制在数据和流程可视化方面也很有价值,用户可以开发最能描述其操作的仪表板和视觉效果。如果采用合适的传感器为特定机器提供实时状态监测数据,就可以定制采集和处理特定参数数据或计算特定值的软件代码。
适应弹性
由于可快速对源代码进行修改,开源软件对变化的适应性表现得很有弹性。快速添加或删除功能以及适应网络环境或特定应用的能力,可能使新开发的程序不稳定,但通过接触不同的环境和应用,开源代码也可以变得更强,得以应对网络安全威胁。由于有如此多的编码人员或程序员进行测试和增强,实现开源代码的风险(例如在网络安全方面)并不一定比封闭代码来得高。在采用开源软件开发自己的定制软件时,实现者可以借鉴适用于其他闭源软件的相同规则,不过实现者必须了解代码的源代码,并避免使用不知名的源代码,因为这些源代码可能会带着不良的意图修改代码。总的来说,开源代码具有弹性、适应性和敏捷性,能够适应给定的新环境。
可伸缩性
开放源码的附加组件和定制功能也允许代码具有高度的可伸缩性。这种可伸缩的实现在两个维度上进行,即采用时间轴和基于应用的实现。为了保证用户愿意接受,并满足操作和应用的要求,这两者都不可或缺。关于采用时间轴,可伸缩性允许修改软件和代码以满足用户的期望。开源代码能够实现用户测试和反馈的特性。最终的解决方案将包括多次迭代,以满足用户的需求和实现运行预期。另一方面,基于不同的应用,代码程序也可以根据控制目的或要求加以变化和伸缩。例如控制不同的机器,或同一类型的机器但运用环境或场景不尽相同,或者为特定用途添加/删除某些功能特性等等。如果有三台相同的机器(A、B和C),它们处于不同的环境中:A在零下2度的环境下工作,B在室温下,C处于不停的洗冲中。那么状态监控软件要为每个场景定义可接受的参数,避免错误触发的误报警。为此可以调整基本代码,以满足不同应用的特定功能。
可访问性
一般来说,在线上可以找到性价比高的开源代码。还有一些额外的资源,比如免费的编码教程,也不需要任何许可。此外,当程序员更新开源代码时,他们必须让新版本共享,以便再次可用,并确保代码是可访问的和最新的。
成本效益和质量
使用社群开源代码大大降低了独自构建应用程序的开发、集成和测试诸阶段的成本。同时还减少了实施的时间,有利满足项目的进度或产品上市的时间。本质上说,开源软件应该是受信任的源代码,是由众多编码人员和用户创建的高质量、可靠的代码。
开源的安全和权限管理系统
与其他操作系统相比,开源Linux的一个优点是权限管理和安全性。为了授予定制的存取权限,Linux提供了一种非常细粒度的、可独立调整的权限管理,严格的权限分配以及对用户和组的管理。例如,允许保护配置文件和控制设置,防止未经授权的访问或无意的更改。这样,机器操作员就不能通过所分配的适当权限来对工艺参数进行任何更改。严格的权限管理可以保护操作系统免受网络攻击,在日益网络化的控制系统中,安全问题尤为重要。许多商用的基于工业PC的控制器使用Windows作为操作系统,其效果是必须定期安装安全刷新。特别是在生产环境中,安全刷新意味着中断,并可能导致不希望的副作用。然而,在基于Linux的内核中,有一些经过特殊加固的“设计安全”内核。操作系统通过简化获得额外的安全性:只保留所设定任务执行必要的代码。可能导致额外攻击载体的不必要软件一开始就没有安装在系统上。还有一个优势是在开源库和自由程序中出现了新的安全漏洞,由于开放性,相应的补丁可以很快地从社群中导入。与此相反依赖于制造商的安全补丁,这可能需要很长时间。
运用开源软件必须注意的问题
集成商和最终用户从相关的开源网站借用免费代码用于他们的项目,为了确保它运行良好,使用安全,首先需要对它进行审慎的审查。审查应该从对许可证的评估开始,要确定这是否是一个在商业上友好的开源软件许可证,能否合法使用。还要确定是否允许修改代码。开源不一定意味着必须修改它,但一定能看到和运用代码。
除了检查许可证,还要考虑安全性。最好从使用活跃用户社群支持和维护的开源应用程序和库开始。用户越多越好,因为更多的眼睛寻找漏洞并提出修复方案,不仅会持续改进软件,而且有助于让社群领先于恶意行为者。每个社群都有自己的特点,如果想要加入的社群中有熟悉的人更好,可以了解更多的情况。还要搞清谁是代码的发布者。一般来讲愿意把自己的名字与所做的工作公开的人不太可能做任何恶意的事情。
任何好的审查过程还必须包括性能测试。从开源社群获得一些代码时,接下去的工作就是确保这些代码可以为我所用,并且始终应该对所部署或修改的任何内容进行严格的测试。
审查开源软件的另一个重要方面是考虑其在产品生命周期内的成本和收益。与自行开发的软件相比,在整个产品生命周期内操作和维护开源软件的能力变得更重要,也更具有挑战性。
出于这个原因,应该开发自己的内部标准和指导方针,以审查任何考虑纳入其产品的开源代码。在软件评估阶段,从多个角度检查软件,比如它在该领域的记录、产品质量、与类似软件的比较、提供长期维护的能力以及许可证的结构等。
在使用开放源码时,仍然必须遵守许可条件,并在必要时澄清许可条件。所以每个开源软件的使用者必须让自己的程序基于开放源代码。还要考虑封闭的源代码是否可以供自己使用,这些程序是否可以商业发行等问题。
原则上,在公司内部使用各种开源许可证,如GPL(GNU General Public License)或BSD(Berkeley Software Distribution)时,它们之间的差别很小。但是,如果开源软件被进一步开发并发布,就应该注意许可条件。这里开源程序区分了“有版权Copyleft”和“无版权Non-Copyleft”的许可类型。如果制造商使用基于copyleft许可的开放源代码,就像众所周知的GPL一样,那么修改后的代码也必须按照原始许可再次发布给社群。这是为了防止用户或制造商分发修改了使用条款的修改后的源代码。因此,在其解决方案中使用带有copyleft许可证的开源软件的自动化解决方案提供商必须仔细检查除了许可文本之外,是否必须提供编辑过的源代码。例如,某些copyleft许可要求开放源码软件的每个编辑版本都不受限制地发布。但是也有中度的copyleft变体,只在特定条件下才要求发布源代码。它与包括BSD许可的软件的非copyleft许可证类型不同,不要求发布修订后的代码。因此,用户可以根据自己的需求进一步使用BSD许可开发软件,并获得专有许可。作为一种选择这样就可以开发商业产品,源代码不需要公开。总之,开源软件使用的合规性是一个必须严肃遵守的文问题。
来源:彭瑜 数字化企业