技术开发 频道

软件工程的若干探讨

    第六章 我国软件工程发展的现状

    很多国内搞计算机的专家都认为:国内的软件研发过程,个人色彩比较浓。过分地依靠个人无法形成产业规模,而没有规模就谈不上产业化了。

  不管怎么样,我们大家还是先要来看一看国内软件厂商到底提供给我们多少有震撼力的软件产品,从技术和利润的角度讲,软件系统最核心的部分还是操作系统、编译系统然后就是开发平台之类的东西,接下来就是一些应用系统,比如图形开发、游戏开发、企业应用、网站建设、杀毒、网络工具等等。

  操作系统以中科院为中心,做了一个COSIX,这个本质上是一个UNIX系统,UNIX最初的源代码是公开的,尽管COSIX是一个被称为中国的操作系统并是UNIX系列的(IX就代表UNIX系列),但是其中到底有多少独创的技术成分我们暂时还不知道,但有一点可以肯定,它现在的市场覆盖率绝对不大,而且能否在上面运行各种各样的编译系统、数据库、群件和应用系统可能还需要进一步测试。然后就是对硬件平台的支持也需要进一步完善。

  然后就是轰轰烈烈的Linux系统,Linux是遵守GNU标准的操作系统,中国有很多家公司推出了自己的Linux并且还有汉化的Linux,这就有比较疑惑的一点,为什么不在Linux上构架一个类似UNICODE这样的东西,而只做汉化这么本地化的产品呢?不知道是眼光还是市场的问题了。

    MIS系统、财务软件是中国软件行业的重头戏,它们彻底的暴露了中国软件开发无序和重复低效劳动的一面。教育软件在某一种层面上看就是电子题库,当然也有优点,比如加入了多媒体教学(可视化程度不错)和所谓寓教于乐的特点,但是从本质上说还是题库。杀毒软件据说是中国软件的骄傲,由中国权威机构评测是达到了世界领先水平,但是好象还没有得到国际权威机构的认可。游戏软件就不用提了,国内业界能够流行的游戏软件成功的秘诀众所周知,不是技术和创意,实在是归功于我们悠久的历史。字处理软件和排版软件客观的说国内的也做的不错,但是从系统的扩展性和体系结构上说和MS和Adobe相比,差距也放在那里。其实这种现状的原因很简单,一个是我们缺少创新的能力,另一个就是我们欠缺软件工程的概念,系统开发前期的需求分析、设计没有做好或者做的不够好。

  当然,我们很少怀疑自己的技术能力,我们很多时候认为这是地理环境和经济环境的原因造成了中国软件业现在的局面。当然中国软件开发人员绝对可以算是优秀的,但是想想我们软件行业龙头企业到底有多少有技术创新和专利技术呢?姑且不论这个,实际上把一个操作系统分解开来,比如文件系统、进程管理和调度、IO调度等等,也许我们可以实现其中某一块的内容,但是如何把它们合理的整合起来绝对是一个涉及到软件工程的问题。

  作为一个开发人员,我们已经习惯了自己那一套编程模式,而且我们的这种习惯也不自觉的影响着新的开发人员。所以在头脑中建立一个软件工程的作用,从某种角度上讲,要比会几种开发语言、几个编程技巧实在是重要的多。

  举一个例子来说,我们也许可以写MFC中的几个类或者是用自己的类扩展MFC,但是我们又有几个人真正去认真分析和考虑MFC架构的设计和原理呢?扪心自问,我们又有多少人能够设计出MFC这样的框架系统呢?下面就我们的题目谈一些相关的话题。 

    第七章 我有一个梦

    毋庸质疑的是,计算机的发展和人类的历史相比甚至和其他很多科技产品相比都是非常短的,从第一台计算机的研制成功到现在也没有百年的历史,但是计算机及其相关技术的发展却绝对可以说是最快的。抛开硬件的发展(硬件的发展基本上是按照摩尔定律来的,每18个月,机器的速度性能都要提高一倍),单从软件的发展来说,从体系结构来讲,我们经历了从主机结构到文件服务器结构,从客户服务器系统到基于Internet的服务器浏览器结构的体系结构的变化。从编码的角度来讲,我们经历了从最开始的机器代码到汇编代码,从高级程序语言到人工智能语言,从专用的程序设计语言到通用的程序设计语言。从开发工具来讲,我们经历了从分离的开发工具(有代码编辑器,中间代码生成器和连接器)到集成的开发系统,从最简单的单行命令式调试器到方便灵活的多功能的调试器。

  但是,今天所有的软件厂商和软件开发人员依然会想起当年的黑人人权运动领袖马丁?路德?金曾经说过的一句名言"我有一个梦想"。是的,所有的开发人员依然怀着梦想,希望能够有一个功能较多的系统开发的框架和方法,只要我们沿着这个框架,我们将能开发出适合所有领域的应用系统,于是,我们在念书的时候把这个希望投到了一门课上,这么课就是软件工程。但是当我们在学完这门课的时候,我们依然没有找到这么一个框架甚至连接近这么一个框架的东西也没有碰到。

  不管我们认为软件工程可能是多么的虚无,但是所有学工科并且有逻辑头脑的人都坚信理论对实践的指导意义,因为有了爱因斯坦及其许多伟大的科学家关于能量和质量方面的理论以后,我们才造出了原子弹。但是,遗憾的是软件工程并不是一个具体的理论,它更象一门抽象的科学。软件工程是一种方法论,而不是一种具体的摸的着,看的见的产品。它告诉我们在设计一个系统的时候,我们需要进行可行性研究、计划制订、需求分析、系统设计、编码、测试、维护等等。并且对这些过程中应该做什么提出了一个指导性的东西。但是没有任何专家和标准委员会保证只要按照这些标准,我们的系统肯定会顺利完成。而且事实上,软件开发针对的领域是如此之多并不没有一种对所有领域适用的功能较多框架。

    不管认为软件工程已经到了非常成熟的阶段还是认为软件工程依然是一个搞不懂的黑箱子,软件工程确实已经经历了三个不同的阶段。第一个阶段是软件结构化生产阶段,以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征。从80年代中期,软件生产开始进入以过程为中心的第二阶段,以提出过程成熟模型CMM、个体软件过程PSP和群组软件过程TSP为标志。第三个阶段就是以软件过程、面向对象和构件重用三把斧头出现的软件工业化生产阶段。

  言归正传,我们还是回到我们的文章标题上来,我们在开发的时候是兵马未动、粮草先行还是摸着石子过河。兵马未动、粮草先行当然意味着我们在开发的时候先不忙着编写代码做程序,我们先要制订一个关于开发的方法。这点就象元数据(metadata)的概念,元数据并不定义数据,它是对数据的说明,也就是通常所说的关于数据的数据。我们设计的时候也是这样,定义开发的标准,如何进行开发、怎样开发。摸着石子过河就意味着我们先不管什么理论,方法,科学的问题,我们先动手做起来,如果做的也算成功的话,那就可以按照这种模式来,实际上,在任何事情的最初,我们都是这样。从辨证唯物主义者的观点来说,就是从实践中来,然后升华到理论,再用理论来指导实践。记得一个笑话说:外国人搞软件工程是在一个黑屋子里面抓黑猫,不过到现在还是没有抓住,而中国人是在一个黑屋子里面,而里面连猫都没有,然后有人说,我已经抓到猫了。这个笑话一方面是说明直到现在,软件工程还是一个在继续探索、发展的过程,另一个侧面也说明中国搞软件工程摸不着边的局面。

  实际上,不管有没有软件工程,不管是否存在一个功能较多的框架系统,我们的应用系统还是要做,各种各样的软件还是要开发。说到底,软件系统是因为有需求才存在的。有了应用域才有了软件存在的意义。很多时候,我们可以看到国外有各种各样的软件和创新,而我们没有,我们更多的是模仿和一些重复的功能相近的软件的原因就是因为我们没有这方面的需求,这也正解释了为什么ERP系统能在国外开展的很好,而在国内失败多于成功的原因。一方面当然是因为我们的企业按照市场经济发展的时间还不长,另一方面是我们的企业确实也没有这方面的需求。

0
相关文章