对于嵌入式应用程序开发人员来说,开源软件似乎是一个绝妙的选择,无论是用作应用程序的基础,还是使用开源工具来加速开发过程和加快上市时间。开源软件就其本质而言是免费的——这意味着无需成本或付款。在管理人员不断尝试限制开发成本的环境中,开源听起来是个好主意,并且根据每个开发人员的独特情况,它可能只是解决预算限制所需的解决方案。
考虑一些专业人士。首先,开源很容易获得。使用开源,开发人员只需下载和使用该软件。开源代码质量也可以是积极的。如果代码已经不错,它只会随着社区的改进而改进。利用开源社区获得帮助、支持和功能开发是开源的最大资产之一。“我们都在一起”的感觉有助于所有船只升起。
总而言之,这些好处可以让开发人员怀疑开源是否存在不利因素。事实证明,开源确实有隐藏的成本,只有在组织处于开发过程中时才会显现出来。虽然开源产品可能适合某些开发人员,但其他使用开源产品的人在考虑替代方案为时已晚后可能会遇到各种陷阱。
让我们回顾一下开源对开发过程的四个关键部分的影响——使用开源代码作为开发嵌入式应用程序的基础、定制开源平台以加速构建、开源蔓延和可见性以及对时间敏感问题的支持。
为嵌入式环境定制开源
在考虑将开源作为网络基础设施平台、机顶盒平台、医疗设备或任何其他嵌入式应用程序的基础时,请考虑满足特定行业需求所需的定制量。
在实施一个新的开源项目时,一个团队要么需要使用他们自己团队的宝贵资源来定制软件以满足其环境的需求,要么使用资金聘请顾问来做同样的事情。顾问路线可以节省定制软件的时间,但它仍然需要开发人员花时间管理流程。
维护开源软件是另一个时间槽。十分之九,脚本和修复是可行的,但代价是开发人员可以更明智地花费在开发产品上的时间,而不仅仅是修复开源软件。由于开发人员的高成本,这可能占分配给“免费”解决方案的开发资源的很大一部分。
优化开源以加速构建
开发人员需要以最大化工程组织生产力的方式优化他们的构建。这意味着开发人员不会坐在那里等待他们的个人构建完成——这个过程通常最多需要几分钟或几小时,最坏的情况是几天。当今市场上的构建加速器工具主要通过分布在大型构建云中的称为依赖感知并行性的过程以及巧妙的缓存和避免技术来加速构建,从而实现快速可靠的增量构建和完整构建。一些大型开发组织已经使用这些加速器优化了数据中心,以加快分布式全球团队的构建速度。
开源选项可用于管理和加速软件构建,但它们有明确的限制和警告。例如,在使用通用软件构建工具(如 GNU Make 和 SCons)时,构建必要的可扩展性和可靠性以支持和加速适当级别的软件构建通常成本很高。随着组织扩大到更多的开发人员、更多的项目以及在整个开发生命周期中对更快的反馈循环的更大需求,这个问题会成倍增加。
开源构建工具的另一个常见问题是缺乏对软件构建结构内部细节的可见性和“可调试性”,这导致希望变得更加高效和敏捷的组织需要进行昂贵的手动维护和较长的交付周期。一旦构建失败,返回并确定出现问题的可见性根本不存在。随着多个团队共同努力将产品推向市场,团队之间缺乏可见性会减慢故障排除速度,从而加快产品上市速度。在一个需要上市时间就是一切的行业,并且越来越需要嵌入式应用程序的多个版本和修复程序,这种级别的支持根本是不可接受的。
在考虑开源工具的替代方案时,团队应确保加速工具不会导致构建中断,可以利用现有的硬件资源进行并行化,并且可以使用现有的工具集和流程。
一个这样的替代方案是 Electric Cloud 的 ElectricAccelerator(图 1),它在单台机器上或跨标准服务器集群执行并行构建,将完整或增量构建时间减少多达 20 倍。这种加速的关键在于获得专利的依赖管理技术,该技术在文件级别检测和管理依赖关系,以确保准确的构建。ElectricAccelerator 可插入现有的构建和发布架构,无需修改现有的构建脚本和工具。作为构建工具的附加组件,ElectricInsight 提供了一个直观的图形表示,描述了构建的结构和运行方式,使构建管理人员能够查明所有构建中的性能问题或冲突。而不是手动倾倒数千行构建输出文件,
图 1: ElectricAccelerator 并行构建管理底层复杂依赖项。插图报告显示了如何优化硬件利用率以减少构建时间。
开源蔓延和可见性
因为开源平台很容易获得,所以大多数部门最终都会实施自己的个人版本,通常是为了满足他们的特定需求而定制的。对于较大的组织,这可能意味着在同一个开发组织中实施了数十个持续集成工具实例,从而创建了一个不受管理的、孤立的环境,或者换句话说,一个开源的蔓延。
这种蔓延所产生的成本可能是巨大的。首先,这不是一个容易扩展的模型。其次,管理层对开发工作的进展几乎没有可见性。由于缺乏标准化,无法真正评估进度或解决相互依赖的项目之间的问题。从管理的角度来看,这是令人沮丧的,因为工作不协调,对昂贵资源的要求来自四面八方。
开源和支持
在使用开源时,开发人员总是面临支持的问题。当必须解决时间紧迫的问题时,这些问题可能需要直接提交给社区,因为没有官方支持系统。影响组织收入的关键任务应用程序必须与可追究责任的专业人员合作,以对时间敏感的方式解决。有人随叫随到来解决问题而不是依赖社区,这是有话要说的。
总而言之,所有这些问题很容易复合,从而在任何嵌入式开发过程中引入重大问题。这并不是说开源不能成为嵌入式开发人员的有价值的工具——它肯定可以。但是,使用开源进行开发工作的成本具有局限性,并且需要组织必须预算的时间和精力。因此,当开发人员决定依赖开源技术时,他们应该确保了解“免费”的真实价格。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !