搜索
写经验 领红包
 > 科技

国产软件发展,软件工程能做什么?

软件国产化,是中国软件工程人的一场突围战。如何在夹缝中求生存,在饱和的生态圈中拼出自己的位置,是我们这一代国产软件开发者必须要解决的问题。从软件工程的角度和大家探讨国产软件的发展现状、困境与未来。

01

国产软件的发展现状

目前,国产软件的发展在关键基础软件领域相对落后。这体现在操作系统、数据库以及依托自主操作系统的集成开发环境、编译器、驱动程序、资源管理程序等软件发展尚不成熟,并未形成规模。关键基础软件是整个软件体系中最基础、最底层的部分。国产软件在该领域发展较慢,原因是多方面的。除了技术方面的原因之外,另一个重要原因是软件的发展需要建立自己的生态环境。正如种子的开花结果离不开土壤,一款软件要想生存就要培养自己的用户群体。国外软件发展较早,抢先占据了很大部分的市场份额,导致国产软件的生态环境十分有限,无法形成从软件开发、用户反馈到软件迭代升级的良性循环。

国产软件发展,软件工程能做什么?

图1 市场上常见的三种操作系统

除了关键基础软件领域,国产软件在工业软件领域的发展也相对缓慢。工业软件是指在工业生产过程中,“分析——设计——管理——回溯”全流程所使用的软件,以及一些高精尖仪器的配套软件。虽然国内有不少工业软件的供应商,但是大多规模较小,市场竞争力较弱。此外,工业软件通常需要与设备绑定,国内相对落后的工业装备使得国产工业软件的开发与更新换代面临重重阻力。

国产软件在平台软件领域发展相对较好。平台软件是指通过云平台、互联网等技术为用户提供服务的软件,包括游戏平台、资讯平台、电商平台、社交媒体平台等。在该领域,国产软件有充足的用户群体,并且已形成良好的生态环境。此外,对于重工业、国防等特殊领域的一些专用软件,虽然国产化研发时间长,有一定的技术积累,但是这些软件针对性较强,用户规模小,市场比较有限。

国产软件发展,软件工程能做什么?

图2 中国知名电商平台

02

软件国产化面临的“卡

在软件国产化方面,国产软件主要面临以下四个“卡脖子”难题:

第一个难题是上一小节提到的软件生态环境有限。一款软件不是独立存在的。以操作系统软件为例,如果一个操作系统不支持目前常用的社交软件、通讯软件或娱乐软件,那用户很可能因为自身的使用习惯和需要而放弃这个操作系统。只有形成一套完整的生态环境,才能保证软件长期存活与发展。

第二个难题是硬件支撑不足。软件与硬件相辅相成,软件的运行离不开硬件资源的支持。操作系统软件需要调度硬件接口,影视制作和游戏软件需要针对不同的硬件资源进行性能优化。因此,国产设备在硬件上受到的约束最终也会对软件层面产生影响。当前,由于国外势力的制裁,国产高性能芯片的发展受到了制约。国产软件在性能较差的芯片上运行,会导致在拓展软件功能和提升用户体验方面遇到瓶颈。

国产软件发展,软件工程能做什么?

图3 由中芯国际代工的麒麟710A芯片

第三个难题是工业领域装备的缺乏。目前,我国在一些高精尖的工业领域装备(如光刻机)上遇到了“卡脖子”难题。这些高精尖装备所对应的控制软件的发展也因此受到了阻碍。另外,航空航天等领域的装备及其配套仪器同样需要软件和控制系统的支持。在这些软件上,国产软件的发展也相对滞后。工业领域装备的缺乏使得配套软件的生态无法形成闭环。产业链和供应链的缺口以及用户圈的狭窄使得工业配套软件的发展受阻。

第四个难题在于人才方面的匮乏。目前国内高校的学生,甚至高校老师,都在使用国外的软件,所接受的也多是与国外软件相关的教育。这使得我们在做软件国产化时需要面对生态圈变化所带来的阵痛与不适应。我们中国的软件人才能否拿出勇气去面对这种阵痛并克服这种不适应,是影响软件国产化进程的重要因素。另外,目前国产软件特别是工业软件类的企业在薪资待遇上显著低于互联网、电商、游戏与金融科技企业。如何创造更好的就业条件与氛围,转变高校学生的就业导向,引导更多优秀的人才投身于国产软件事业,是现实中必须要解决的一个关键问题。

03

从软件工程的角度如何解决以上难题

要解决软件生态环境有限的难题,需要把软件生命周期与用户的需求紧紧捆绑在一起。软件工程是一门用工程化方法构建和维护高质量软件的学科。在需求调研、分析设计、实施开发、运营维护的全流程中,软件工程师需要充分考虑并满足用户对于软件生态的需求。例如,在确定一个国产操作系统的落地技术方案时,要考虑该方案能否支持国产数据库、开发工具等国产软件。只有从软件工程的角度把支持国产化生态这一需求融入软件生命周期的全流程中,才能解决这一难题。

针对缺乏硬件的难题,软件工程能做的是在给定硬件资源的条件下,尽力做出用户体验更优的产品。从软件工程的角度看,国产软件开发者虽然没有办法改造和升级硬件,但是可以适配硬件。软件工程师可以选择轻量级的软件开发方案以适配资源有限、性能较弱的硬件。此外,软件开发者可以使用软件工程的技术着力提升用户体验,如优化国产芯片的人工智能算法性能,在可视化方面改善用户体验,或者在人机交互方面让用户操作更便捷。总而言之,要多角度、全方位改善用户体验,从而吸引用户使用国产软件。

在高精尖装备配套软件领域,我国目前的技术基础比较薄弱。例如边缘计算、航空航天等领域,很少有国产软件或架构。这些高精尖领域的配套软件大部分是军工开放的,或者直接使用国外知名机构和网络开源的产品。国内虽然也有团队研发了一些平台和架构,但是推广力度不大。因此,从软件工程的角度,首先要有更多人去研究和开发这种架构和软件,而不是过度依赖国外现有的或是开源的软件。另外,要积极推广现有的软件成果,加大宣传力度,让更多人了解和使用我国自主研发的软件。

国产软件发展,软件工程能做什么?

图4 Linux:一种可以免费使用和自由传播的类UNIX操作系统

针对人才培养的难题,需要把软件工程放在更重要的地位,加大软件工程人才培养的力度。软件工程在欧美是一门交叉融合的学科,具有重要地位,发展也相对成熟。而我国软件工程学科的创建主要是效仿欧美和与其有合作往来国家的体系,发展还相对落后。此外,人工智能、网格计算、云计算、物联网等方向的吸引使得本就有限的人才资源大量集中到这些潮流领域。互联网和人工智能的浪潮一波接一波,而软件工程的浪潮至少在近20年内没有出现过。反观欧美,软件工程的讨论要热烈得多,比如最近爆火的人工智能应用终端ChatGPT,由于具备通过人机交互生成代码或软件设计图的功能,因此也是一种用人工智能方式解决软件工程问题的应用。轻代码、无代码等工具也起源于欧美。因此,我国要提高对软件工程的重视程度,加大软件工程人才的培养力度。“十四五”时期以来,我国开始实施国家软件发展战略。软件工程作为支撑这一战略的学科,一定要被放在第一位去重视。

04

国产软件的发展趋势

尽管面临重重困难,国产软件的发展还是充满希望的。这与我国的大国体制和制度优势密切相关。在党的领导下,我国具备集中力量办大事的优势,有能力完成包含软件国产化在内的一个又一个伟大事业。随着国家对国产软件的重视,大量资源流入软件工程。相信在全社会的群策群力下,国产软件一定能克服发展过程中的种种难题,更上一层楼。

软件工程领域的工作者一定要树立自立自强的观念,不能因为国外现有的软件使用方便就不去研究国产软件,更不能因为在一些软件上没有被卡过脖子,就居安而不思危。随着软件国产化被摆在越来越高的战略高度,我们每个软件工程人更要提高自身觉悟,投入更多的时间和精力到国产软件的研发中。一些企业之前可能迫于生存和盈利的压力放弃了国产软件的开发,但是随着越来越多相关政策的出台,国有软件的发展将迎来重大变革机遇。

05

高等教育如何适应产学研深度融合新模式

高校教师不能局限于纸上谈兵,不能只待在学校里读国外文献和产品说明书、教学生使用国外软件,而是需要深入国产软件企业,看看国产软件生产线和产品。在亲身调研后,高校教师需要制定有关国产软件的教学方案,逐步引导学生从事国产软件方面的实践和实训。在过去,我们的教育集中于学习国外先进的理念与技术,这本无可厚非,但是我们不能停留在被别人灌输知识和工具的状态。要实现从学习者到参与者、领导者的转变,就要在掌握一定知识和工具后研发国产软件。我们这一代教师不能再以教了多少学生、上了多少节课作为衡量教育质量的指标,而要反思自己教了多少国产软件的知识,培养了多少投身于国产软件事业的学生。高校教师要紧跟国家战略方向,使教学工作与国家战略相匹配,这是作为人民教师应有的觉悟和应尽的职责。

推动教育资源向国产软件倾斜需要一个过程。在这个过程中,不仅教师需要努力,学校和企业同样也需要承担自己的责任。为了达到软件国产化的目标,学校和企业需要实现双向奔赴。一方面,学校要鼓励教师和学生走进企业,让学生学到真正接地气的东西。学校课程应与国产软件深度融合,培养贴近产业需要的学生。另一方面,企业专家要走进高校,与高校学生交流互动,让学生将课堂上学到的知识应用到实践中,弥补高校教师在实践经验上的不足。长期的双向奔赴能够使学生逐渐掌握与国产软件相关的知识与经验,国产软件的生态土壤也会逐渐充满活力。如此一来,将会有更多学生投身国产软件事业,国产软件的人才队伍也会逐渐壮大。

来源| 自学者网、智能算法研究中心