【摘 要】从市场经济的角度,以影响软件市场生命力的几个重要因素为线索,探讨了如何面对市场的竞争,开发出有生命力的应用软件产品,特别指出要抓住INTERNET汉语软件尚不完善的契机,应用工程化管理,实施软件开发人海战术,抢滩市场。
软件作为计算机的灵魂,从计算机诞生之日起就主宰着计算机产业的发展。从二进制的指令到最先进的语音及图像识别系统,勾勒出了软件发展的趋势,即面向用户,方便用户,赢得用户。微软公司的成功有力地说明了这一指导思想在软件开发中的重要性。
由于我国在基础工业和基础技术上的先天不足,使得计算机工业从一开始就存在着硬件技术落后的严重缺陷。因此,尽快制定正确的软件发展战略是调整我国计算机工业跨世纪发展战略的一个极其重要的先决条件。为了弥补硬件落后带来的问题,面向中国市场的高性能软件的开发是唯一的出路。要发展高性能的软件,必须重视以下几点:软件开发管理中的工程性;软件的商业性及其版权保护;跟踪国际先进软硬件技术,重视应用软件的创造性开发。
一、软件工程的问题
软件工程的概念是由最初的软件模块化和结构化概念演绎而来的。初期的应用软件,多数是以功能为主的。在编制应用软件时,虽然也有将其搞成通用软件的良好愿望,但在实际上却做不到,客观上是因为硬件性能的限制,即使搞出了这样的程序也无法进行调试。同时,由于各专业之间缺乏妥善的协调,主观上也缺少将各功能块有机地联结起来的机制。
随着硬件技术的发展,使得通用程序的编制成为可能。虽然受到内存规模及字长的限制,但通过“模块化”处理后,软件的功能得到了大大的扩充。从软件本身的功能看,最初的程序是“一题一解”;输入/输出;矩阵生成;求解;浑成一体。由于内存和速度的限制,对大型矩阵的存储要进行复杂的编码处理,为了施加不同的约束条件,也要进行类似的处理。这时“模块化”的概念被逐步引进。为了节约内存,具有类似处理功能的程序段被相对集中起来组成所谓“模块”,可以允许其它程序段调用。但由于计算语言本身的限制,这种“模块”的“边缘”并不十分清晰。通过对当时比较通用的计算语言如ALGOL和FORTRAN等进行所谓“ 结构化”改造,程序员有可能将通用程序各功能模块的边缘定义得更清晰,这时就产生了各模块间的协调问题,仿照机械加工中公差配合的概念,软件工作者提出了 “软件工程”这一概念,实际上,就是一套规范各模块间数据传递格式的标准。当软件变得越来越“通用”后,一个软件中涉及的内容已经不是单一学科的问题,靠一个人或几个人是无法完成整个软件的,而多学科的问题(有很多个“模块”)会产生大量的模块间协调问题,这也使得“软件工程”的概念受到更多的重视。“软件工程”的真正含义就是在保证软件所含内容一致性的前提下,将软件编制从个人化的小作坊模式转变成由多学科协调作战的大生产模式。下面从著名的有限元结构分析软件MSC/NASTRAN和最流行的系统软件Microsoft Windows的成功来看看我们可以从中得到什么启示和教训。
作为一个有限元结构分析软件,MSC/NASTRAN在1995年的水平除了在程序功能上稍有区别外,在其它方面与我们在当时已拥有的通用结构分析软件SAP-V及我们自行编制的分析软件并没有太大的差别,但到了1996年,NASTRAN就推出了XL-前后处理模块这一使其产生重大飞跃的软件包。其功能是使原来十分烦琐的输入/输出由抽象的数据流转变为直观的图像。为了开发XL,MSC公司投入了大量的人力和时间,在这种“大生产”的模式下如果不对软件工程给予足够的重视,很难想象最后的结果会是什么样子。当时我们了解到了NASTRAN的这一动向后,也曾试图完善自编分析软件的前后处理功能,但由于各方面条件所限,加之技术领导部门对这一问题缺乏应有的重视,使我们失掉了一个有可能赶上国际先进水平的时机。
Microsoft Windows开发的成功,也说明了软件工程在软件开发中的重要性,作为一个“视窗”型系统软件,它采用了先进的图形功能,并为了适应各种外设的需要,建立了一个强大的设备驱动程序库,而所有的这一切都是在很短的时间内完成的,试想如果没有在开发过程中很好地应用软件工程技术,这么庞大的系统软件怎么有可能在这么短的时间内调试成功。每个程序员都有自己的风格,自己的癖好,如果各行其是,没有约束,虽然每一个模块都可以单独正确运行,但整个程序将是一盘散沙,根本无法运行。
在当今激烈竞争的软件市场中,那种不考虑开发效率,只考虑软件功能的开发思想已被淘汰了。由于一个好的设计思想很容易遭到剽窃,而在最后的产品出来之前又无法获得版权的保护,因此开发效率实际上就是关系到软件开发是否成功的关键因素。为了提高软件开发效率,多学科的协调是必不可少的,所以对软件工程是否重视就直接影响到开发商的经济利益。因为在当今多媒体新技术的冲击下,仅靠几个软件程序员是无法完成一个涉及图像、声音、动画、通讯、人工智能等多学科领域专门知识的超大规模软件的。
强调软件工程的另一个主要原因是到目前为止,在航天计算机产业中,软件的开发还停留在小作坊的模式,这一方面是体制本身带来的问题,另一方面与我们对软件工程的重视程度有关。我们的优势在于拥有大量的廉价高级劳动力,如果我们能够充分重视软件工程在各类应用软件开发中的应用,我们的产品将会具有很强的竞争力。特别是,当我们无法在短期内摆脱硬件落后的客观现实的情况下,这一点尤为重要。
二、软件的商业性及版权问题
由于缺乏商品意识,在很长的一段时间里,我们软件产品缺乏应有的包装,用现在的话讲就是缺少用户友善的界面。软件工作者只满足于自己的产品可以实现某些功能,多数仅限于学术性考虑,甚至连同行都无法轻松地理解和使用这类软件。
笔者的一位同事,曾经将美国喷气推进实验室发表的一个用当时比较先进的FORTRAN语言编写的颤振计算程序“还原”成ALGOL-60版本,以便可以在国产719型计算机上运行。这个工作大约花了他两年半的时间,虽然在由上海交大几位教授主持的评审会上得以通过,但因其界面令人望而却步而被束之高阁,研究者两年半的心血从此付诸东流,实在是可惜。
笔者另一位曾经在德国斯图加特大学进修了两年的同学,回国前,一段小小的偶极子计算软件被学校收购,卖了两千马克。国外对软件产品的重视,实际上是对知识的尊重,也是对人力和物力资源的珍视和节约,这种做法既可以有效地避免低层次重复开发,又充分调动了开发人员的积极性。
除了软件开发人员本身缺乏应有的商品意识外,长期以来对软件版权缺乏完善的保护机制和强有力的措施,也是我国软件工业不能健康发展的一个原因。要真正做好版权保护工作,除要完善保护机制外,还需培养国民的知识产权法律意识。
从MSC/NASTRAN和Microsoft Windows的成功看国外软件的商品意识。1995年的NASTRAN版本中前后处理功能还基本上没有,而且有限元分析在当时对一般的工程设计人员来讲还是一个很抽象的概念,大量繁杂的数据输入令人望而却步,而抽象的数据输出又令人不得要领,这给软件的推广应用带来了很大的障碍。为了给用户一个“友善”的界面,NASTRAN及时地推出了XL图像界面,使得输入变得轻松,而输出变得直观,既推广了软件的应用,又提高了每个软件的附加值,真是一举两得。而微软公司的“窗口”更是在赢得用户方面达到了登峰造极的地步,它一改操作系统“学究”式的面孔,使不懂计算机的人在几分钟内就学会如何操作原来带有“神秘”面纱的电脑,在推销自己本身的同时,也推销了计算机。“微软”的成功,首先是有美国完善的知识产权保护系统的支持;其次是其重视软件产品的商品性;第三才是技术方面的诸如软件工程概念的运用及跟踪先进技术,提倡创造性开发等。没有完善的知识产权保护系统就不可能有 “微软”。
三、跟踪先进技术,提倡创造性开发
为了缩小与先进国家在计算机技术上的差距,我们必须要做好技术跟踪工作,密切注视硬件发展的动态和我国可资利用的硬件技术,其中包括技术交流和技术转让,特别是在决定最底层软件性能的芯片指令方面要下大功夫。
在软件开发方面要充分发挥我国人力资源丰富的优势,积极运用软件工程概念,采用高技术领域的人海战术,抢滩由INTERNET带来的新的软件市场,特别要提倡创造性开发。所谓创造性,就是不要仅限于国外现有软件的汉化,而是应该积极开发适应我国文化的软件。我国目前的很多产品开发,模仿的多,创造的少,由此带来的是产品淘汰速度快,开发成本高,经济效益低。而一个好的产品,不是去与同类产品争市场,而是在还没有同类产品的时候占领市场,在出现同类产品后再去开辟新的市场,永远走在市场的前面,这样的产品才是有竞争力和生命力的产品。
软件是一个带有很重文化色彩的行业,法国和德国已经提出限制英语软件在本国网上的上网率,提倡采用本国文字的软件。我国人口众多,市场巨大,随着我国知识产权保护制度的日益完善,我国的软件市场是一个有着巨大潜在经济效益的市场,我们要抓住这个机遇,拿出具有中国文化特色的软件产品,就像比尔�盖茨当初开发“窗口”一样,开发出既便于使用又使老百姓喜闻乐见的软件产品来。
要做到这一点,首先要有航天总公司有关部门的大力支持和倡导,同时也要有一个保障机制,使得在航天总公司这个相对小的范围内能够在软件开发过程中实施软件工程概念管理,并重视产品的商品化,定期进行优秀软件的评比,评奖的标准应该以其创造的经济效益为主。没有了效益,就没有了开发基金,没有了开发基金也就没有了开发本身。我们过去的教训,就在于只讲技术,不讲效益,只考虑产品的学术价值,不考虑其经济价值,这样不仅没有效益,同时也葬送了学术研究本身。
四、结束语
综上所述,从市场经济角度看,目前形势下航天计算机产业中软件开发的重点应该放在以汉语(注意这里用汉语而不用汉字以区别于“汉化”的进口软件)为载体的INTERNET应用软件上,因为这是一个巨大的有待开发的市场,从各方面的资料显示这个市场具有巨大的潜在效益。