软件开发具有挑战性。针对最新型设备的嵌入式软件开发更具挑战性。这一技术领域面临的额外障碍很大程度上归因于设备内部部署的快速升级的代码行,如果要在商业上取得成功,这些代码行必须为传统PC用户界面提供更加一致的外观和感觉。

考虑到典型部署场景中面临的潜在障碍,嵌入式空间中软件系统设计的复杂性可能会迅速升级。该领域的软件编程架构建模对传统的基于PC或服务器的开发环境带来了额外的挑战,因为当软件处于设备内部的部署后阶段时,软件的“锁定”性质。

在探索开源软件(OSS)在嵌入式设备开发中的潜力之前,您需要问问自己,为什么选择这种方式,而不是任何专有平台或工具集。

OSS鲁棒性测试
您是否为嵌入式选择了OSS以试图节约成本?如果是,您是否考虑了必要时提供支持和服务的全部成本?它是否与尖端的开源产品一起工作,这些产品可能会为复杂的嵌入式部署提供更大的功能和灵活性?如果是这样的话,那么所讨论的代码是否经过了充分的增强和进化,从而提供了某种合理的健壮性?

专有二进制文件
你需要记住的是,在硬件上集成软件比在桌面系统上更难,因为硬件本身有很多不同。我们在这里讨论的是您需要为驱动程序进行的配置,以及软件堆栈中更高层的考虑事项。

如果您有一组二进制驱动程序,它们可能不一定能工作。要解决这个问题,您需要重新安装驱动程序的源代码,以使它们在您的硬件上运行。即使您在一个硬件配置上有一个可用的专有驱动程序,它也可能无法在更高版本上运行。使用开源软件,您有机会解决这些问题。但是对于专有二进制文件,您需要要求供应商解决这个问题,这可能会大大延迟您的项目。这也适用于整个软件堆栈,包括UI层。

什么开发方法最有效?
大多数行业评论员不会认为敏捷或极限编程方法最适合嵌入式空间,因为这些模型通常更适用于重量较轻的应用程序。在这个领域,随着项目向最终阶段发展,迭代开发模型的使用提供了一个可以说更快速的系统构建,即缩短了上市时间。

嵌入式GUI不同
嵌入式GUI可能根本不像桌面应用程序。嵌入式应用程序通常由简化的输入机制(通过触摸屏或有限的键盘)驱动任务。屏幕大小通常比桌面小得多,而且你没有桌面鼠标。这会改变整个用户体验,影响应用程序的总体设计。

您很可能会在PC上运行应用程序开发,模拟嵌入式设备。如果您决定使用Qt之类的应用程序框架,那么在PC上运行该应用程序可能也会很好。但是,您应该为手头的任务规划和设计应用程序,使用户体验适合带有触摸屏或有限键盘的小屏幕。

Embedded的三大支柱
如果嵌入式系统开发有三大支柱需要认识和接受,那么它可能是以下三个原则:集成、创新和工业化。现在,这些规则不是刻在石头上的,它们甚至不是事实上的标准,而是这个领域的发展一再遇到的共同挑战。

集成挑战: 与外部合作伙伴和软件开发人员的协调将不可避免地成为整个项目方程式的一部分。在这种高度“严格”的开发环境中,为了有效地管理这个过程,必须有一定程度的所谓“战略业务规划”,以与您自己的开发团队的工作并行运行。

开源开发的好处在于,从本质上讲,开发人员的生态系统构成了开源社区。有时也被称为“贡献模式”,这种社会和技术一体化的个人(在某些情况下是团队)具有共同的交流和交流理念。在这种环境下,集成自然更加灵活。

如果你只能把你的项目进行到目前为止,却找不到你所需要的已经存在的缺失组件和代码块,那么“请”其他人帮助填补你缺失的空白的选项并不罕见。毕竟,开源社区的一部分人在任何时候都会寻找下一个方向来引导他们的创造力。

创新挑战: 你需要一个新产品。你还需要一个真正创新的必备产品,你需要生产它的技能。缺乏内部嵌入式软件专业知识是这个领域开发团队面临的最常见障碍之一。你怎么解决这个问题?

很明显,开源开发方法可以在这里提供帮助。很明显,从本质上讲,开放社区产生的额外范围允许您的项目利用他人掌握的技能集,并将其与您自己的项目相结合。

悲观主义者可能会认为,这永远都不理想,因为所需的技能永远不会在内部,永远都不属于需要这些技能的个人或公司本身的范围。现实是,几乎没有证据表明这是一个真正的问题。实际上,嵌入式开发人员正在使用开源插件、代码样本或更成熟的组件来检查和仔细检查他们发挥作用的外部技术的每一个元素。实际上,他们在工作中学习。

工业化挑战: 一般来说,嵌入式软件是以大规模工业化规模销售的。构建您的软件以应对这一挑战并非易事,引入互操作性测试必须是这一过程的一部分。

当开源开发以适当的战略规划水平勤奋地执行时,与大规模的基于专有技术的开发商店相比,其可扩展性没有明显的差异。如果有的话,与需要在封闭的专有商店内进行的供应相比,互操作性可能不是一个挑战。特别是在大型项目中,再多的详尽测试也不为过。

嵌入式的工业“驱动器”
人们普遍认为,智能手机在嵌入式开发的下一阶段发挥着重要作用,但手机和PDA绝不是推动嵌入式软件需求的唯一设备。消费电子产品和家用电器也将推动嵌入式增长的迅猛发展。

尽管像三星这样的公司已经在冰箱中内置了GUI——这本身就是一项复杂的任务——但这本质上仍然是一个独立的设备。当携带嵌入式软件的智能手机或其他复杂产品开始需要通过网络、蓝牙或其他标准或协议进行联网时,“未来编程挑战的复杂性将成倍增加。毕竟,没有测试的复杂性是毫无价值的。

诺基亚Qt框架与三星的合作非常广泛。除了冰箱,Qt还被用于开发三星最新的闭路电视数字录像机的GUI。作为一种先进的监控设备,该产品还具有基于网络的监控和搜索功能。将这些功能构建到嵌入式软件驱动设备中是十年前闻所未闻的,开源的广度和广度帮助了这一演变。

从嵌入式级别的开源软件开发中受益的不仅仅是面向消费者的现代制造业;Qt本身也被用于开发工业部门的产品。西门子已使用Qt开发其SIPLACE大型工业贴片机,HGZ咖啡机采用嵌入式Linux触摸屏,再次使用Qt构建。

除了意大利公司MicroNova(其咖啡研磨机具有基于Qt的触摸屏UI)之外,E.R.S.a和Pixy还开发了带有Qt的火车司机显示器。基本上,应用程序的多样性与使用当今工具的软件开发人员的想象力一样无限。

但这还不止于此。我们已经谈到了嵌入式软件日益复杂的问题。如果这种错综复杂的软件开发与相应的测试水平不匹配,那么很可能会开发出质量和可靠性较差的产品”,这是客户永远不希望看到的。

如果你考虑到这个问题,并将其与设备本身的功率和物理空间限制没有以相同的速度增加的事实结合起来,那么你就可以看到,如果软件应用程序开发的最佳实践没有得到遵守,为什么会出现潜在的障碍。老实说,即使我们确实遵循了最佳实践,代码行几乎肯定以比CPU上可用的晶体管数量更快的速度增加,因此未来的挑战是不可避免的。

嵌入式的优点和缺点
当我们从技术和商业两个角度看待嵌入式软件应用程序开发时,随着产品功能的增强,如果部署变得笨重或费力,那么您可能会面临成本更高的开发周期,并面临上市时间较慢的问题。

我们已经在这里讨论了开发最佳实践,CMMI第5级过程改进方法授权具有特殊的相关性。能力成熟度模型规定,最佳实践应支持促进零缺陷软件开发的过程,强调缺陷的因果关系,而不是其影响。

如果我们能够做到这一点,并且我们能够在一定程度上拥抱互联性和互操作性,从而使我们的开发实现工业化,并在必要时使用第三方技术,那么嵌入式的未来是光明的。现在,我们只需要开发人员的技能就可以实现这一点!

克努特·伊尔文是Qt开发框架的社区经理Burkhard Stubert先生是诺基亚Qt开发框架的销售工程师诺基亚