对于复杂项目,软件是另一门工程学科 ;我们要思考的是科学,不是艺术

   2016-11-29 智造网11060
核心提示:不管是为了攻克某个问题而孤军奋战、彻夜不眠的“编码英雄”,还是由于取得突破性成绩而令孤独开发者一夜成名暴富的智能手机应用,对外界来说软件开发通常被视为程序员个人的不懈追求。然而事实上,任何重大编程项目都需要一支庞大的团队共同开发对安全要求极

不管是为了攻克某个问题而孤军奋战、彻夜不眠的“编码英雄”,还是由于取得突破性成绩而令孤独开发者一夜成名暴富的智能手机应用,对外界来说软件开发通常被视为程序员个人的不懈追求。然而事实上,任何重大编程项目都需要一支庞大的团队共同开发对安全要求极为严格的复杂系统。

 

软件工程学科是科学,不是艺术。为了开发强大的高质量软件,美国国家航空航天局(NASA)及其他对可靠性要求极高的组织,已经建立了可重复的过程驱动开发原则。其他需要平衡复杂度、成本和风险的行业,比如国防、航空航天、嵌入式工业控制系统、医疗、能源生产和汽车等,可重复的过程驱动开发都极为重要。

 

以上这些行业都面临很高的风险和降低成本的压力,复杂性也在不断增加。汽车设计汇集了软件工程的很多不同部分,并且与机械和系统工程相结合,就像以往那些通过嵌入软件增强的机械系统一样,现在设计车辆的目的不纯粹是驾驶。汽车公司正在向移动及消费电子公司转变,不得不依靠新的、破坏性技术来打造新产品,同时也不放弃安全和性能责任。

 

因此,企业亟需能够帮助他们管理产品开发生命周期的工具,需要集成系统,涵盖多重领域和学科,支持信息无缝流动,提高所有开发阶段的效率和责信度。

 

是汽车,还是复杂的互连系统?

辅助、互连的无人驾驶车只是最极端情况,目前行业面临的问题主要是电动汽车和混合动力车所带来的全新的设计挑战。比如,动力系统是汽车中精确度要求极高的众多实时系统之一。你永远都不能错过任何信号,或者对输入信号做出错误反应。但是,它不再是一个独立系统。如果要从刹车系统获取能量,给混合动力系统的蓄电池充电,就必须增加传感器,以查看整台车辆的能量优化和蓄电池消耗情况,因为这会影响到行驶范围。这一切还需要与信息娱乐系统集成在一起。信息娱乐系统为驾驶员提供信息、控制和导航,通过这一点,新的互连汽车特征与传统个人娱乐选项结合,实现了人车互动,因此厂商必须设计该界面,给用户提供该体验,以免增加驾驶员因为复杂的操作系统引起交通事故。

 

集成所有这些维度而不降低每个系统的关键功能,或引发安全问题,是软件工程面临的一项重大挑战。

 

汽车最初是作为机械装置问世,如今却变成了拥有数百万行代码的超级复杂软件体和几个车轮的结合。很少有其他产品需要像轿车或卡车这样多的软件参与,一辆轿车内的代码数量甚至超过一架喷气式战斗机所包含的代码数量。现在,一款新车需要满足500,000项不同要求,其中有90% 根本不属于机械方面的要求,而是电气和软件方面的要求。设计师写这些代码的目的不单单是为了建造一辆车而已。即使汽车设计已经转向了不同车型共享的公共平台,车辆平台间也有数十个甚至数百个变型。这意味着厂商不能再将汽车视为一组单独建造、最后再集成组装的机械设备。设计师必须用仿真软件对物理系统进行建模、创建、测试和验证,并且在此过程中要结合使用对其进行互连和控制的软件。

 

软件开发只是产品开发过程中的一个阶段,从对总体架构和系统设计进行规划,到定义系统部件,软件和硬件必须并行开发,而不能是异构的和碎片化的。在整个开发过程中,厂商须在构成总体系统的机械、电气部件和软件组件之间实现高度集成,以便同时验证。这种模型驱动的开发需要包含动力系统、安全系统、信息娱乐系统等各个领域的系统工程。

新型汽车将之前用“产品生命周期管理”工具支持的机械和电气系统,与用“应用生命周期管理”工具支持的电气和软件系统结合。要在规定时间内有效交付这些新车辆,同时不降低安全性和创新性,就需要能将上述领域无缝集成、并且有效支持关键最佳实践的工具。

 

由于大量软件工程师共同开发多个系统的逻辑和代码,因此需要明确所有系统的开发责任人,并进行回归测试,确保没有危险的设计变更。对于建造车辆平台的所有不同偏差,需要通过自动的持续集成来验证代码的总体安全性,以确保变更效率。该流程在任何时候都有可能返回查询上一环节的批准情况,查询哪些部件组合通过了测试,或者缺陷得到优先处理,因此设计师需要全面了解汽车中的机械、电气和软件控制系统等所有领域的工具。

 

为了跟上行业发展步伐,汽车开发必须进行大量仿真,对来自物理系统的数据进行捕捉和回放,以验证每项软件变更,并且确保其在更大范围内对于汽车、车辆平台和变型的兼容性和重用性。对于无人驾驶车辆和辅助系统,数据采集和测试还必须考虑车辆将要行驶的所有地区,这些地区可能有不同的驾驶文化和不同的驾驶及安全规则。

大部分汽车召回问题涉及软件,而不是硬件,因此关键在于通过更好的软件工程提高质量,以避免财务损失以及声誉影响。

 

所有车型的测试和验证必须采用与PLM系统集成的方式,且这些功能自身的软件开发工具必须相互集成,以帮助可视化不同车型的需求、规格和信息流,确保流程一致,而不是一系列离散步骤。厂商需要从概念可行性到整个系统的实施和优化,一直到装运,都不断这样去实施。

 

不得不强调的是,厂商还需要以极快的速度做出以上的调整。

 

速度与稳定性

 

汽车产品开发周期一直在不断缩短。即使需要处理的新部件越来越多,并且新部件可能有不同的属性和行为,汽车厂商都必须更快速地推出新的汽车线或者新的功能。科技发展的步伐常常超过了汽车公司的消化速度,因为这不仅仅是采用新部件和新技术的问题,集成、验证这些新部件和新技术还需要时间和成本。

 

消费者通常对汽车的使用周期较长、更换频率较低,但是他们已经习惯了消费设备的改进速度,习惯了每年更新和频繁发布的新应用,对于他们所购买的汽车也存在同步改进的需求,无论是增加车辆的新功能,或支持新的配件。此外,如果法规变化,厂商还需要在车辆推出市场后的很长一段时间内继续对其进行研发。

 

为应对不断增加的复杂性、越来越大的成本效率压力以及日新月异的发展步伐,将开发作为一门科学和工程学科是唯一方法。这就要求软件工程实践遵循严格的结构化过程。如果能够实现闭环,实现无缝地采集需求(这一任务正占用大量开发时间),按照这些需求来创建、测试和验证代码,总体提高开发的可重复性,厂商就能够切实地提高生产力、效率和责信度。

 

汽车行业正在朝标准化发展,越来越多的ISO标准将涵盖安全、人体工程学、性能、环保和测试方法,以及与 AUTOSAR(汽车开放系统架构)这样机构合作。为了确保满足这些标准,厂商需要实施经过认证的软件开发过程。

 

正确的工具和技术可以降低成本,因为软件能够提高效率和准确性,所以软件在开发过程中有着前所未有的重要性。它们有助于软件工程师以更易于阅读和理解的方式完成要求、规格和代码。此外,它们还允许重用软件组件,这是软件开发商品化的关键所在。

 

理论上,在车辆和车辆平台之间,甚至在同一款车型的各个工程领域之间,重复使用软件组件,能减少成本和开发时间,提高质量。在实践中,要实现这一目标却更加复杂,因为要在所有这些情景下让这些部件适合重复使用,就需要进行更多的前期开发,要处理更多的依存关系,进行更多的测试和验证工作。但是,软件重复使用是汽车行业必须采用的新方法的重要组成部分。

 

数字化,设计,破坏,或者死亡

 

现今的大部分车辆是从动力系统发展起来,但是汽车界正迎来外部世界的变化。因此,车辆设计方法必须改变,以适应新世界越来越严格的要求。不能再用临时的、一次性的方法编码。相反,厂商需要采用集成方法来进行端到端的系统设计,因此软件开发就成了必须掌握的另一门工程学科 ,你需要工具来处理在硬件产品中嵌入软件所带来的复杂性。

 

汽车公司把自己视为移动和消费体验公司,因此他们必须达到专业软件公司的水准。这就要求采用涵盖整个产品生命周期(包括机械和数字部分)的集成产品设计和开发系统,从构思、设计、制造、维护和修理到持续更新和改进,信息向前流动以提高效率和生产力,信息向后流动以确保责信度和可追溯性。

 

技术和商业模式的颠覆性变化越来越快,提供新的业务价值正成为保持竞争优势的唯一方法,因此采用可支持全新的、更敏捷工作方法的工具就十分必要。事实上,当创新足以消灭原有市场时,提高业务和技术敏捷性会成为企业唯一的生存之道。越来越多的产品既不是纯粹的硬件,也不是纯粹的软件,而是两者的结合,并且变得更小、更智能、更依赖于嵌入的软件和微处理器,同时互连程度更高,更加复杂。与此同时,客户期望得到个性化产品,网上订购,迅速交付。若不能为市场提供这些,就必将被替代。
 
举报收藏 0打赏 0评论 0