从手机、洗衣机,再到汽车之类的家用产品;从农业机械、采矿工具再到飞机这样的大产品,软件开发在消费产品和工业产品设计程序中的地位越来越重要。
对那些曾经大规模开发硬件设施的公司而言,如今的首要问题是为它们的产品开发出高质量的稳定的嵌入式软件。在高科技商业领域,西门子公司聘请的工程师甚至比微软、Oracle、SAP这些大软件公司还多。工程化产品(engineered products)的核心和价值已经从芯片为编码。
由于核心转移,习惯于管理硬件开发的公司需要学习新的流程和规则来管理好软件开发,这样才能让它们的流程更多产、软件更稳定。一般来说,解决一个系统各组成部分如何协同工作的问题时,硬件开发方面的不确定性总是少一些,大概就是某某部分关联好了,或者没有关联好。软件开发则不同,它有很多不明确的界限。因为一个系统与另一个系统之间往往有着更多层次的关联和更复杂的结合,在测试阶段通常很难全部找到这些隐性问题。
要说明软件开发的复杂性,汽车是一个不错的例子。仔细研究一下汽车,还能为改进嵌入式软件的质量和稳定性提供借鉴并指明方向。
嵌入式软件是产业创新的重要驱动力,也决定着每一款车是否具有潜在价值,市场分额是否有可能增长。嵌入式软件系统控制着车辆上种类繁多的应用程序,并处理着大量完全不同的口令,比如悬架控制和卫星——这些功能系统都实时地交换信息。
和日本制造商的高端车型使用了65至100个电子控制单元 (ECUs),让每辆汽车成为一个实时的计算网络系统。这需要高度的稳定性。不幸的是,关于嵌入式软件的质量报告却是各式各样的:不断地报道着种种质量不合格和产品召回的消息。
为了提高嵌入式软件的稳定性,同时保全汽车品牌的声誉,汽车制造商和供应商们必须想办法改进质量。
这不是件容易的事情,但是其他行业已经有成功的例子。他们采纳了更成熟的结构、改良了设计、研发和测试的流程。比如航空航天业正在采用中央计算系统来促进组件再利用,帮助企业处理复杂的系统,以求达到严格的稳定性和质量要求标准。在日用通信行业,手机制造商正在开发软件协议群和应用软件之间的Symbian标准界面。这些方法能够促进制造商和供应商之间的合作,从而加快产品推向市场的速度。
鉴于专属优势(Proprietary advantage)在汽车业中至关重要,像汽车系统架构联盟(Autosar)与日本汽车软件标准化组织(Jaspar)这样的机构就很难制定统一的标准。但是即使没有标准,汽车制造商本身以及那些为大制造商供货的企业团体都可以努力改进嵌入式软件的稳定性和汽车本身的质量。
改进软件质量是汽车制造商及其所依赖的零部件供应商必须共同承担的责任。麦肯锡正在研究嵌入式软件的复杂性和设计选择对汽车业乃至整个经济的影响,并与汽车制造商和供应商的高层领导进行研讨。
这项工作的结果促进了四个关键领域的联合,它们共同的努力将推进嵌入式系统的质量的改进,以及研发带来的产量提升。
任何翻阅过一部新汽车长达500页使用指南的人都知道:制造商每年都在为产品增加新的特征和卖点。汽车业应该严肃地审视每一个附加特征的价值,因为这些特征的复杂性与质量评估和保修成本息息相关。我们的研究表明,包含300个特征点的小规模项目产量(我们用公制来计量特征复杂的程度)比包含了30000个特征点的大项目要高出三倍。
汽车制造商们应该分析顾客和评审机构评价汽车特征的方式,再来设计汽车,以避免不必要的复杂性。比如,一个安全气囊的供应商意识到安全气袋的质量是由“ 新车评估体系”(New Car Assessment Program,一个国际性的安全与质量评估系统)给与的星级来判断的,于是他们着力于研究能在评测过程中突显功能的软件。
好的软件架构,即作为软件设计基础的模式和结构,都是组合式的。它们应当有一个组织得很完善的分层系统,就像图书馆的图书分类号,使开发者能够对组件进行再利用。
但是在实际操作中,很多嵌入式软件开发者却依赖于那些逐渐增加的、偶然性很强的软件架构,这导致产生“意大利面条”式的编码。
事实上,我们的研究发现,嵌入式软件的架构是研发过程中最脆弱的部分,相比传统的软件开发的进展,要滞后半个等级。这些缺陷必须要改正,因为软件架构对生产力有着极大的影响:越成熟的架构越能实现组合式和标准化,越能对组件进行再利用,点对点的界面也就会越少。
从一个成熟等级发展到另一个等级能带来2.5倍的研发效果。在大多数情况下,质量的改进来自于摒弃已有的平台,采用发展得更完备的构架作为共同的标准构架。随着标准操作系统、硬件、综合平台的改良,嵌入式软件的开发者们可以期望达到传统个人电脑软件开发商们能够达到的更高的生产水平。
一个电信设备公司从专属系统转移到嵌入式Linux架构,发现后者的研发加快了6倍。一个发动机控制设备供应商投资开发了一套更灵活、层次更丰富的架构,将上市的时间从4个月减少至3个月。
成本的压力会供应商和制造商通过选择便宜的投入来省钱,但是这种做法往往导致保修成本增加。硬件方面,廉价的组件更容易坏掉或者损耗。而对嵌入式系统而言,错误通常源自粗糙的设计和不充分的检测。
当供应商和原始设备制造商们想采取低成本设计策略时,他们必须学习如何从更广泛的标准角度来考虑问题,不能忽略复杂软件和廉价硬件带来的产品使用寿命缩短的成本。
一个期望降低组件成本的汽车制造商不得不分析使用廉价硬件是否真的有意义,因为这种做对软件开发提出更多的要求,也有可能导致更多的产品缺陷。这种不必要的复杂性增加了保修成本,这时该公司发现,只有生产量增加到26万辆车以上,才能保本。但是如果使用更贵一点的硬件,则可以把盈亏平衡点降至12万辆。
很多使用嵌入式软件的公司,无论是汽车制造商,还是电信设备生产商,抑或消费电子产品行业,其产品生产都有着很强的工程学传统。因此,他们通常采用硬件驱动式的生产方式,重视物理组件,并且倾向于用机械的眼光来看待各零件如何组成整体。这样的公司就需要改进他们研发和整合软件系统的技术。
在过去的20年里,软件行业通过采取全球化的质量测评标准,如软件功能成熟度模型(Capability Maturity Model),或者那些以功能点为基础的标准,使其开发方法更专业化。但是嵌入式系统的研发却已经滞后于产业的发展。适合于嵌入式系统的软件研发工具越来越少,已有的那些工具却只注重设计过程的局部,而非全局。
由于嵌入式系统的开发要求研发人员在软件、硬件工程和物理学方面都是专家,因此理想的操作方式应当包括跨功能的专家队伍(以特征为基础的研发),应用常规模型和模拟工具的研发方法,以及时间盒(为开发者交付方案提供具体的时间)。通过建立跨功能的专家队伍和时间盒,一个系统公司能够将其产量提高到产业平均水平的两倍。
与许多其他软件开发者相比,开发汽车业嵌入式系统的工程师们没有遵循一些既有的标准,比如,衡量研发过程的产量(每个人、每个月的特征点),以及软件质量(每个特征点的缺陷)的标准,尽管这些标准曾经在其他地方推进过生产力。
这些开发者们仍然在传统思维下辛勤劳动,以硬件为导向的产品衡量标准仍然左右着他们的思维。直到公司开始使用以软件为导向的公制来衡量研发过程的绩效,他们才努力改进他们的方法,进行正确的转型,比如增加在软件架构方面的先期投资,提高软件质量。
改变既有观念,是经理们的另一项艰巨任务。在公司里,他们必须工程师们采用能够紧密产量的方法——很少有工程师能对此表现热情。他们还必须就淘汰已有的架构和研发程序,使用绩效更佳的内部标准进行激烈的争论。其他行业的例子能够帮助经理们处理这些变化,如果更多的供应商加入这一行列推动这一进程的话,事情肯定会容易许多。
在庞大的汽车供应商网络里,单独的商家必须熟知他们的系统和其他供应商的系统是如何协同工作的。专属优势的确很重要,但是他们再也不能进行黑箱操作,也不能期望制造商们铺好所有的道。在缺少权威的行业标准的情况下,实现了系统整合的人将会有更多的新机会。
汽车制造只是一个行业(但是个极有代表性的例子),在这个行业里,嵌入式软件的潜力被白白浪费,现有研发模式的缺点也。如果汽车业和其他行业的制造商想产品质量的声誉,他们和他们的供应商们必须提高嵌入式软件的质量,并提高其研发的生产能力,缩短推向市场的时间。星期二右眼跳
本文由 恒宇国际(www.neivn.cn)整理发布