清华博士谈“开发工业软件”的十余年心路历程

导语:在当前大力推进制造强国的进程中大型工业软件是实现制造业运行优化和全流程整合的核心软件是高端装备制造中产品设计数据集成生产加工和质量管控不可或缺的工具和基础

在当前大力推进制造强国的进程中,大型工业软件是实现制造业运行优化和全流程整合的核心软件,是高端装备制造中产品设计、数据集成、生产加工和质量管控不可或缺的工具和基础。先进发达国家将“掌握先进大型工业软件的核心技术”视为“持续掌控全球工业产业布局主导权”的必要条件,可以说没有大型工业软件,就没有先进制造业。


工业软件按照使用领域主要分为三类:流程管理软件、专业软件和嵌入式软件。流程管理软件基于业务模型,实现产品研发、生产和管理过程的信息化;专业软件基于物理和数学原理,主要用于几何、模型设计以及与特定专业相关的研究型工业软件;嵌入式软件主要是嵌入在工业产品中的应用软件,实现产品自动化以及智能化的提升。


2018年4月,美国制裁中兴通讯,导致中兴因缺少关键“芯片”无法进行。尽管中兴每年进口六七十亿美元的芯片,但如果将采购名单上不过数百万的电子设计软件停用的话,那上百亿的芯片都不过是硅土。该事件引发了国内核心技术的全民大讨论,也使得人们深思,到底什么技术才是制约我国制造业发展的真正“短板”?


当工业4.0或中国制造2025的目标越来越集中在数字化工厂和数字运营服务的时候,"数字建模和仿真"再次成为我们关注的焦点。工业研发和设计领域最为重要CAD(计算机辅助设计)和CAE(计算机辅助工程)技术,再次成为中国信息化最熟悉但却是最“瘸腿”的工业发展领域。特别是在数字建模与仿真领域,跟国外工业软件相比,国内技术的发展可以说是不值一提。在上世纪九十年代后期,由于对工业软件缺乏战略性认识,对自主软件扶持力度不足,使得大量国外大型工业软件进入并占领中国市场。据有关数据报道,2017年,中国软件交易已超过5.5万亿人民币,增长率达13.9%。在这些交易中,制造业相关软件的占比达70%以上。研发设计和仿真软件是大型工业软件的重中之重,而在我国高端装备制造的设计软件市场上,95%的份额被美国、德国、法国等软件公司的产品所占据。


心路历程


上世纪八、九十年代,在国家的支持下,一些高校先后开展了针对具有自主知识产权的CAD、CAE等制造业核心软件的开发。以计算机辅助工程(CAE)技术为例,我所毕业的清华大学也是众多开发工业软件的高校之一。对于模拟仿真软件,从开发到最终成为一个可商业化的产品,一般来说需要经历几个关键过程,包括算法或求解器开发、软件交互界面的搭建、软件集成测试、用户反馈和不断升级。但事实上,高校或研究所里所谓的工业软件开发只是集中在第一个阶段,也即算法开发过程,很少能到达第二个阶段,即便是达到了第二阶段,在大多情况下也只是效率低下的算法+半成品的软件交互界面。


我所在的课题组从上世纪80年代末期就已经开展了针对铸造过程模拟仿真软件的开发,在我之前的很多的研究生(博士、硕士)付出了很多精力开发了用于计算铸造充型过程的流动算法和凝固过程的传热算法,并在此基础上开发了很多针对铸件质量检测的评价标准和判断准则。为了能让这个软件更好地应用于实际的生产过程,课题组与很多铸造企业开展了合作,通过测量实际生产过程的数据,不断完善计算算法和模型。同时,课题组其他人员也在不断完善软件的交互界面,减少软件的使用难度和提高用户体验。


这样的研究一直持续到了2009年,也就是我博士毕业的那年,因为在我印象中,我是最后一位仍然接棒做这一类工业仿真软件的学生了。最终,我们课题组产生了若干个独立的“软件”或者“程序”模块,各自用于解决特定的工业问题。这是我们的开发历程,但是我觉得这个过程其实是我国自主软件开发过程的一个缩影,学习这个过程,我们就能真正地知道为什么我们做不出有国际竞争力的工业软件产品。


第一,我们开发团队的主要成员是学生,不管是博士也好、硕士也罢,其实本质上都是刚刚本科毕业的学生,在理论知识的掌握方面或许有一定的优势,但是实际编码和软件开发方面是完全没有经验的。这种经验上的欠缺或者说不专业,对于开发大型的工业软件来讲是致命的。


大型工业软件的开发需要前期详尽地调研、讨论和软件架构,这种架构的作用在开始的时候可能表现的不强,但是随着软件模块的不断增多、交互性和复杂性不断地增强,在软件开发的中后期,这种架构的作用会变得越来越来强。打个比方,软件架构做的是软件的骨架,后期的开发就是不断地向骨架上添“肉”。如果骨架做的好,那么后面的开发会越来越顺畅,但是如果这个骨架先天设计不足,在后期不断地“加码”过程中,极有可能在某一时刻就会轰然倒塌,而这就是为什么我们当初无法开发出一个功能完整的工业软件的主要原因。我仍然记得,最后当所有代码都交到我这里并让我做集成的时候的那种“尴尬”。开发的时候我们每个人用的代码架构都不同,这是个历史原因(我们在校的时间并不重叠,老师并不会强制要求我们用同样的方法来开发模型,毕竟对于一个想毕业的学生来讲,毕业本身的压力大于一切,老师也希望你用自己最熟悉和擅长的方法来开发自己的模型),但是这给后期的软件集成带来了极大的困难,甚至一定程度上来说是不可能完成的。


第二,在高校开发工业软件是“非主流”的,在一定程度上,做这个工作是“不务正业”的。高校对教师的评价标准是文章的发表、研究项目数量以及教学。这直接决定了导师对其学生的工作要求,从我自身来说,我们研究生毕业要求发表一定数量和质量的论文,其实这个要求对于大部分研究生来讲是很容易实现的,但是现实的状态是仍然有很多研究生为了实现这个目标而绞尽脑汁。在这种情况下,大部分的教师和学生都会把精力集中在能够产生高质量论文的研究方向上,而对于开发工业软件这种事情,只有极少数研究生有兴趣或者说敢于去做。值得庆幸的是,我是当时少数有时间能做这个事情的学生之一。其实从本科到博士,我最大的兴趣就是数学,我的专业是机械工程,但是我并不觉得这对我是一种阻碍,相反,我认为数学只有在实际的工程背景下才会更有用,只有把数学、物理应用在实际的工业生产或生活中才是最有价值的。因此,我当时自学了很多的数学原理和编程语言,包括后来对我工作起到关键作用的数值分析和C++语言。


第三,也是最重要的——不是所有的人都适合做算法或模型开发。一个模拟仿真工业软件除去我们能看到的软件界面和操作流程以外,其实最内核的是算法或求解器,比如用于模拟金属液充型过程的流动算法和用于模拟液态金属凝固过程的传热算法等。与软件本身的开发过程不同,求解器的开发是一个构建、实现和不断改进的过程。所谓构建指的是构建物理模型或算法本身的过程。以粘性流体为例,描绘流动的控制方程是Navier-Stokes方程,但如何在保证质量守恒的前提下高效求解该方程就是一个难点,这就需要构建巧妙的算法。实际上,如何高效求解这个方程是计算流体力学到现在仍然存在的关键问题之一。同时,求解器的开发也是当今与计算流体相关的商业软件的主要技术壁垒和竞争点。比如说以SIMPLE为核心算法的Fluent软件和以LBM为主要内核算法的Powerflow软件。在高校中,大部分学生在毕业的压力下会选择相对容易的研究方向和路径,因为这容易产生论文。而对于开发“硬核”算法,大部分人都是避而远之,这使得在高校,真正能从事工业软件开发的人少之又少,而在这些少之又少的人中,真正是感兴趣并有能力从事算法开发的则更是凤毛麟角了。


除去构建算法,另一个难点是代码的实现过程,这个所谓的编码不是传统意义上的软件编码,而是算法编码,这需要编码人员本身对数学算法有极强的理解,可以把算法用编码的方式“翻译”成机器代码,这需要深厚的编程经验和代码纠错能力。单从算法编码本身来讲,针对同一个算法,不同人编写出的代码在运行效率上会存几倍甚至几十倍的差异。


第四,基于高校或研究所“生成”的工业软件,很少或几乎没有向客户收集反馈并不断升级。这其实是很容易理解的,高校做工业软件的目的从开始就不是要做成一个产品或商品,其目的只是做研究。这也决定了这个软件绝对不可能会放诸市场,经受市场或客户的检验,而最终也只是一个被放置在“空中楼阁”中的半成品。同时,做为衔接研究和市场的桥梁,国内现有的技术孵化器甚至是投资人并没有起到关键的作用。在市场竞争的逼迫下,跟转化真正的硬核技术相比,这些所谓的孵化器更注重的是短期经济效益,而工业软件绝对不可能和“短期收益”挂钩。这直接限制了支持工业软件转化的“源”,而除非国家采取必要的措施,否则这个局面在一定时间之内是不会改变的。


从这四点可以看出,依靠国内高校开发有国际竞争力的工业软件其实是不太可能的——这里我特别突出了“有国际竞争力”这几个字,因为真正的自主软件一定得具备国际竞争力,否则那就是一个失败的产品,其本身也没有存在的价值。


振兴之策


那么如果高校没有这个“土壤”,在市场竞争中作为独立个体的公司如何实现自主工业软件的开发和振兴呢?


我觉得必须具备三个条件:


第一,必须进行长期的投入,以保证技术不断更新;


第二,一定要有合适的团队来做;


第三,一定要有一套行之有效的方法或机制实现工业软件软件本身的开发、市场反馈和不断升级。


与大部分目前被推在风口浪尖的所谓“技术”不同,工业软件的开发需要长期的积累,只有不断地开发、反馈和升级才能有效地提高软件的市场竞争力,同时,用于模拟仿真的数据库(材料、工艺)也需要长期地不断积累和更新。工业软件最核心的部分是求解器,求解器的开发和普通的IT编码不同,需要开发人员有深厚的数学、物理基础和编码能力,最重要的是必须要对此有兴趣并“乐此不疲”,只有这样才能开发出效率极高、有国际竞争力的求解器,使得我们自主工业软件赶上或超越世界先进水平。


从我国现阶段工业的发展情况来看,实现工业软件的创新和突破刻不容缓。从产品特性上讲工业软件只是一个工具,但是实现自主工业软件其本身就并不只是工具了。自主的原意是指自己掌握,自己掌握核心技术之后,会极大提升与工业相关的咨询和服务业的发展,这会反过来促进和提升制造业的总体水平和竞争力,并最终形成一个成熟的工业发展体系,这其实也是工业发达国家的现状。


同时,发展自主工业软件不需要完全照搬发达国家的老路,我们完全可以依据我国现阶段的国情进行开展。在现阶段,国外进口的工业软件一般来讲价格昂贵,国内只有大型企业才能承担其使用费用。而与其他国家相比,在近十几年里我国在互联网、信息化方面取得了领先的发展优势,在发展自主工业软件的同时,我们完全可以借助互联网的优势实现工业软件的快速普及,实现工业软件的线上使用,并以相对低价的方式向中、低企业推广,全面振兴国内基础工业水平。针对这种工业软件发展模式,我们将在后面的文章中进行详细地拆解。


但是最重要的依然是,不论以什么方式推广工业软件,其“算法内核”一定是最关键的技术,我们必须舍得投入资源和耐心去开发和积累,并不断完善。


作者:Marsfish


毕业于清华大学(本、博),牛津大学、英国皇家学会研究会员,长期从事数字化工业方面的研究,包括高性能算法、高能X射线检测、图像处理以及相关工业领域的材料和核心工艺开发等,立志创造有国际竞争力的自主化CAE软件,摆脱国际垄断,提升和振兴民族工业水平。

本文来源于网络,本着学习交流的目的进行转载,已标注原始作者和出处,如存在异议,请联系editor@xingongye.cn。如您对内容有疑问,请告之,以便我们及时处理。

暂无评论,等你抢沙发

  • 短信登录
  • 密码登录
还没有账号,
登录即代表您同意本网站的 《用户注册协议》
还没有账号,
登录即代表您同意本网站的 《用户注册协议》
注册
已有账号, 立即登录
登录即代表您同意本网站的 《用户注册协议》
找回密码