一 工业软件分类及与IT软件的差异
工业软件有很多定义,也包括很多分类方法,各类软件的基础与开发难度有很大差异,造成发展不均衡。但无论怎样定义与分类,都无法改变核心工业软件的重要性及其落后程度。
一般将工业软件划分为研发设计、生产控制、服务保障与运营管理四大类,其中CAE、CAD、EDA等研发设计类软件是工业软件中地位极其重要的一类,可称得上核心工业软件,却也是国内最薄弱的一类。
核心工业软件是科学计算软件在工业产品研发设计领域的应用,是以科学计算为主紧密结合工业技术的软件,本质是科学计算。IT软件是以信息技术为核心的软件,二者是不同类别的软件,绝无从属关系,存在本质差别。如果把IT软件比作写作文,那以CAD、CAE为代表的核心工业软件就是做数学题。写作文基本没有会不会的问题,只有水平高低之分,有的人能写小说、有的人能写散文,能写诗,大部分人只会写流水账。做数学题则不同,会就是会,不会的也就基本做不出来了,当然,会做的人里面也有水平高低之分。
研发设计类工业软件地位重要、基础薄弱、国产化率低,并且开发难度大、开发周期长、落后程度高、资金需求大,是发展国产工业软件首先要考虑的部分。目前有一些不正确的工业软件定义在有意无意地边缘化核心工业软件,这种避重就轻的错误思维必将极大挫伤核心工业软件的国产化进程,值得警惕。
二 发展国产核心工业软件的难得机遇
发展国产核心工业软件,现在可以说占尽了天时、地利、人和的绝佳时机,机会错过恐怕很难再有突破。
在国内,核心工业软件屡遭卡脖子,在需求侧,军工企业更是被长期禁运,急切盼望成熟、稳定、功能全面的国产核心工业软件面世;国外核心工业软件高居不下的价格也迫使用户寻找稳定可靠的低成本替代品;中小企业更是无法承受国外软件高昂的价格。而在供给侧,开发者也无不倾己所能加快研发,但无奈受限于资金、技术、人才、技术路线等,目前暂无多大起色。市场需求与研发出现巨大错位,打破僵局已势在必行。
在国外,近十多年来国外核心工业软件技术发展缓慢,已经进入了技术发展的平台期,为保持业绩而进行大规模并购,以横向扩展弥补纵向发展缓慢所带来的不足;在技术上,国外的核心工业软件,特别是CAE软件基本都是从上世纪六七十年代的代码逐步积累到今天的,基本没有做大的重构与修改,甚至CAE求解器仍然采用Fortran77语言编写的,这点可以从这些软件子程序接口规范体现出来(Ansys用户可以打开其安装目录下ansys\customize\user\ansys.F文件查看)。其图形界面也基本上从上世纪90年代开始发展的,都有很长的历史了。这都说明一个问题,国外老牌软件的代码有些“老”,软件架构、代码结构、界面样式等都需要进行深度重构与改进,以提高软件性能和适应用户新的操作习惯。这也传递出一个信号,他们需要放缓发展进程,抽出时间重构代码。
国内需求迫切、国外发展放缓,不能不说这是难得的发展机遇,但国内核心工业软件开发者却仍未找到合适的发展路线,在迷茫中艰难探索。
三 造成国产工业软件困境的原因分析
01 技术需求与机构设置产生巨大错位
以CAE软件为例,据初步统计,CAE软件的核心求解器涉及力学、物理学、数学、航空宇航科学与技术、计算机科学技术等11个一级学科, 30多个二级学科,几乎涵盖全部力学二级学科,三级学科高达110多个;CAE软件的前后处理器主要涉及计算机科学技术和数学两个一级学科,6个二级学科,12个三级学科。由此可见,核心工业软件特别是CAE软件是一个涉及众多学科的综合体,从前后处理到求解器全面开发,即使只开发结构分析方面的功能恐怕至少上百人甚至数百人的开发团队才能胜任,远非一个研究室、教研室、实验室、课题组或一个中小规模的开发公司能力所及。
国内包括各级科研院所与高校等科研机构基本按照学科分类部署研究室、教研室、实验室等基层研究单位,并按对应学科对成员进行考核,虽然也逐步建立了许多跨学科基层研究单位,但所跨学科数量也远远低于CAE软件所涉及学科的数量。技术需求与机构设置产生巨大错位,是造成国产工业软件发展困境的原因之一。
02 资金需求与投资方向产生巨大错位
从技术上讲,核心工业软件可划分为三个层面。第一个层面是科学研究层面,在这个层面上,国内科研院所、高校等机构的研究人员能够紧跟国际前沿水平,可以说基本不存在不掌握核心技术的问题。第二个层面是科学计算层面,是把科学研究层面的方法、算法、模型等基础技术通过计算机编程语言转化为代码,通过计算机分析运行解决各种工程、科研问题。这些科学计算代码基本都是科研人员自行编写的计算程序,多因项目进程影响只注重解决核心问题,很少考虑日后的扩展问题,还远不能称为软件。但这些代码都分散于各科研院所与高校,具有各自的知识产权,没有经过技术(成果)转化过程,形成不了发展国产工业软件的合力。第三个层面是软件工程层面,通过现代软件工程的手段按软件开发的规范将这些相关的代码重构、综合、融合、改进,解决代码适用的广度、深度问题,提高代码的计算效率、计算规模、计算精度以及软件使用的易用性、方便性等一系列问题,将代码性质由程序上升到软件。目前国产工业软件最需要解决的就应该是这个层面的问题,而国家资金却基本都投入到了第二个层面中去。资金需求与投资方向产生巨大错位,这是造成国产工业软件发展困境的另一个原因。
03 发展模式的错位
国内科研体系的架构下的科研成果有个极其鲜明的特性,那就是时间积累短,空间分布广,发展模式类似于农村建“平房”。而国外软件则是城市中建“楼房”的发展模式,基本上是依靠单一的时间积累连续发展起来的,期间穿插着有限数量的商业并购进行横向扩展。事实证明,再多的“平房”也很难形成高大坚固的“楼房”,这是造成国产工业软件发展困境的又一原因。
04 研究成果积累的缺失
国家在近几十年大力投入推动科学研究与科学计算发展过程中只注重了资金投入,基本没有对产出的资源进行回收、积累,以至于在需要大力推动核心工业软件自主化发展时,除了资金别无可投,比如研发核心工业软件的基础资源。这也是国产核心工业软件自主化道路上需要克服解决的一大难题。
四 国产核心工业软件发展的可行途径思考
国内核心工业软件市场上国外产品的绝对垄断地位决定了国产工业软件一上场就要参与国际竞争,对国产自主化核心工业软件在性能、功能、易用性等各方面提出了极高要求。因此,国外软件发展过程中经历过的企业伴生、迭代发展的过程不可能被目前的市场接受,自我完善是国产软件首先面临的问题。
近十多年以来国外主流软件纵向发展放缓,而工业、工程设计的需求并没有太大提高,十多年前国际主流工业软件的功能已基本满足目前需求。基于这样一个基本事实,国产核心工业软件发展的第一个目标定在十多年前国际主流核心工业软件水平或者现有国际主流软件前80%功能的水平便具有很强的现实意义。一是培养补课意识,端正心态认识差距;二是降低表面难度,增强了软件开发的信心;三是可以避免急功近利、好高骛远;四是这个定位的产品足以满足绝大多数工业、工程设计需求;五是产品可以初步具备参与国际竞争的能力。
历史经验表明,对于核心工业软件的发展,走市场化道路是可行的路线,经得起市场考验的产品才有生命力。在国内现有科研体制下,国有科研力量对核心工业软件市场化发展的推动作用似乎只能来自于各种方式、形式的成果转化。
如何理顺科研人员与核心工业软件研发人员以及科技成果与核心工业软件产品之间的关系成为当务之急,这就需要建立新型科技成果转化机制,让不同技术层次涉及的技术人员各司其职,以新型成果转化机制为媒介,搞活核心工业软件的技术市场。至此,国家回收核心工业软件基础成果(科学计算程序)的新型成果转化机制便呼之欲出了,在这个新型机制下,国家对核心工业软件的投资便不仅仅是资金投入,还有更为重要的资源(代码)投入。
对开发核心工业软件的技术路线而言,可有四种发展模式
01 常规模式
这是基本从零开始的滚雪球模式,目前核心工业软件研发企业多采用这种模式,其资源基础基本没超过研发人员的自身积累,发展现状表明效果并不理想。
02 操作系统模式
参照国产操作系统的发展方式,以开源资源为基础,通过消化吸收开源资源,构建自主软件产品。
03 航母模式
中国航母的发展“瓦良格”功不可没,国内有大量“平房”资源,即是发展国产核心工业软件的“瓦良格”。
04 高铁模式
中国高铁是以购买核心技术为主发展起来的,这也是国产核心工业软件可行的发展路线之一。
从以上四种发展模式看,国产核心工业软件发展的关键聚焦在了资源之上,基础资源是保障核心工业软件发展的绝对重要因素,因此,如何利用好现有但分散的(平房)资源,快速奠定核心工业软件基础,在短期内将差距缩短到二十年之内是需要首先考虑的问题。
五 发展核心工业软件的政策与立项建议
为促进国产核心工业软件快速有序补课发展,避免出现推而不前的状况,从技术层面提出了一些可操作的政策与立项建议。
1、制定长远规划
核心工业软件没有至少十年的长远规划要想赶上国外水平基本不现实。
2、制定可实现目标
瞄准世纪初国外主流软件水平、能力、功能,踏实补课,第一个目标是世纪初国外主流软件水平,力争在三到五年内将差距缩短到二十年以内,满足用户需求的80-90%。
3、筛选种子对象
区分产品研发型、项目服务型、销售咨询型核心工业软件相关企业,重点扶持以产品研发为主攻方向的企业。调研收集相关企业的发展规划、产品规划,以及产品持续升级维护的策略与计划、市场推广模式等重要信息,筛选有前途、有能力、可扶持的种子企业。
4、重点精准投入
以研发设计类软件为重点方向,以软件工程化研发为重点对象,重点投入扶持种子企业。
5、优先扶持传统工业软件开发
国产工业软件的突破口在于补足基础课,传统工业软件是基础,没有这个基础其它新鲜花样、噱头拯救不了国产核心工业软件。
6、试点探索科研院所与高校开展核心工业软件商业开发的可行途径
既能发挥科研院所与高校的技术基础优势,又能使产品经过市场锤炼更加成熟与稳定,同时获得市场效益促进产品的持续发展与升级维护,早日与国拨项目资金断脐,独立发展。
以CAE软件为例的共用技术立项建议
梳理国际主流核心工业软件的详尽功能,分层次建立软件功能模块的详细目录清单,作为以后立项指标设定的参考依据。责成相关科研与开发单位按该目录清单上报其程序、软件的具体详细功能,并附相关考核算例,彻底摸清国内外核心工业软件能力的底数,找准差距,有针对性地设立项目创旧补课,勿在短期内轻言创新。
建立核心工业软件系统、全面的考核算例库。针对国际主流核心工业软件详尽目录清单,设计或搜集各功能模块的分析计算实例,形成系统、全面的考核算例库,除按专业功能进行分类外,还要划分为功能验证型和性能测试型两大类。考核算例库可作为项目立项与结题时辅助专家评审的一个客观依据,也是软件开发的功能参照。考核算例库应保持随时动态更新。
制定软件的输入、输出文件格式规范,形成国内统一标准。前后处理器与核心求解器之间以数据文件的方式传递数据,各种数据需要以一定的方式、格式保存在文件中,便于读写。为减少开发者共有工作量、方便数据交流、便于验收考核、促进国内软件快速发展,制定统一数据格式标准势在必行。
开发统一的规范文件的读写模块及其与国际主流软件的数据转换模块,为选择采用国产核心工业软件的工业、工程用户提供迁移既往数据提供解决方案,消除后顾之忧。
前后处理核心模块开发。CAE软件前后处理涉及几何建模、网格生成、数据可视化等三大通用核心技术模块,目前这三大模块仍是国产CAE软件发展道路上的拦路虎,急需突破。通过对核心工业软件开发中共性技术设立专项,集中国内核心力量重点突破,项目结题后回收相关代码通过验收,并在业内共享使用。