发展部件技术分享 http://blog.sciencenet.cn/u/求新 研究方向:数据库、MIS,教育部教指委计算机分委会专家工作组成员

博文

难道只是失误吗?-给14届全国软件与应用学术会议代表们的公开信

已有 3795 次阅读 2015-11-4 21:20 |个人分类:生活点滴|系统分类:博客资讯| 软件生产线, 公开信, 软件复用, 软件与应用学术会议, 领域构件

    给第十四届全国软件与应用学术会议代表们的公开信

各位领导、各位专家、各位老师:您们好!

我投了一份稿件,名:“管理信息系统软件生产线研究”,文号NASAC201500023,同时报名参加原型竞赛,投寄的介绍文章为“管理信息系统软件生产线软件简介”,其中介绍文章共8.25兆、107页、143幅截图,介绍了65个部件程序运行界面与操作情况。但因没通过评审而未进入决赛。组委会查找了原因是:“在评审参赛作品时,只看到了摘要,评审系统中没有看到作品的介绍文档”。又经进一步检查,发现是组委会中的操作者“没有及时将附件上传到会议系统”。照说这只是非会议预审,本来就是各请专家在家里打分,目前完全是因为组织者的失误使得作品被漏判了而照成的错误,是可以弥补的,找几个专家复议一下,补评审一下,补打个分,风波就有可能平息。但我们的这个请求被以北大梅宏教授为执委会主席、北大王千祥教授为程序委员会主席的组委会否决了,这可不能算作操作失误了。

我们文章的主题是希望研究新时期软件复用的有关课题,如图1所示。


                        图1 软件代码复用三阶段

我们认为,软件代码复用历史可分为三阶段:最早的面向过程设计阶段通过子程序、函数、过程、宏集成多条语句使可以跨程序实现程序部分语句的共享,不涉及界面共享,共享内容存放到子程序库、宏库的一个或少数文件中,共享手段是指针链接或复制嵌入。第二阶段面向对象中的“类”集成多种方法与属性实现方法级的共享,共享内容放到类库中,每个类源代码放到一个或多个文件中,每个类字节码放在一个文件中,涉及单控件界面(例如文本框、菜单、组合框等)的共享,共享手段是生成对象,复制嵌入,构成一个完整程序的一部分。当前,计算机应用更加深入、软件规模越来越大,软件复用粒度不再增大就不能适应计算机应用的需要了。从软件代码复用历史的第一阶段过渡到第二阶段用了差不多30年,而面向对象技术又发展了近30年,到了再进一步向第三阶段发展的时候了。

大约10多年前,学术界就提出了领域构件的概念,领域构件实际也是程序模块级软件代码复用,卡内基-梅隆大学软件工程研究所与国内的北大的青鸟工程及几乎软件工程方面的学术界专家都热议领域构件的课题,其主要观点是:由于某个特定领域需要的软件具有相似的需求,软件复用在特定领域内更容易获得成功。领域工程是为一组相似系统设计软件的过程,涵盖了建立可复用软构件的活动,要求将构件生产将生产过程中产生的可复用制品放入公共资源库使实现复用开发。特别强调“自底向上的重用”:从系统最基本构件块搭建的方式考虑系统的重用。认为构件应从已有系统中挖掘提取,首先对业务需求进行分析,提炼出构件,通过交流沟通,将专家知识提炼成领域知识库,再确定重用库构件是否满足知识库需要。复用源大多只能选择某一个类似的产品,所能复用的内容只能局限于此产品;复用采用的是拷贝然后修改的模式。

但我们认为单纯使用卡内基-梅隆大学软件工程研究所与青鸟工程等提出的从下至上设计领域构件的研究路线是错误的,要研究通用于一切管理信息系统的软部件,就无法采用对已有的领域内系统程序归纳总结提炼的方法来设计,必须研究从上而下设计通用可复用系统级程序模块的课题。在我们的论文与作品中点名批评了从下至上设计领域构件的研究路线,并以管理信息系统软部件库的设计为例,介绍了从需求分析到详细设计的概况,从而给出了我们主张的从上而下设计可复用软件资源库的方法。

我们认为比“类”更大粒度的可复用软件必须是通用的程序模块级可复用软件,也就是我们称为的通用软部件,涉及一个程序模块全界面的共享,每个软部件代码放到一个文件中,共享内容放到一个文件夹或多个文件夹中,其字节码可为一个到多个类代码,放在一到多个类文件中,共享手段是设定参数后链接全文件嵌入。只有设计出这样的软部件库,才可能设计出相应建模软件,实现从建模到一键建立应用系统。才可能以组装方式、不需要编写代码建立应用系统,才可能如工业化生产那样形成软件组装业,才有软件生产的工业化与现代化。

从我们的博文中可以看到,我们长期研究与呼吁开展软部件和软件生产工业化的研究,但是收效甚微。本次大会,组委会有些专家过去曾经署名发表过关于领域构件的论文,我们本期望会遇到真正懂行的专家,能进行相关的交流与探讨,希望他们能够帮助我们总结经验教训,促使新技术的诞生与我们工作的改进,但是这个希望破灭了。

那么,为什么“领域构件”会被热议,而我们的论点得不到支持呢?许多企业愿意接受领域构件的思想,我们分析:1、比较容易实现,只要在已经建成的系统上进行归纳与总结,提升到理论层面上,建立领域构件库就可以了。2、有利可图,领域构件可以提高之后设计同领域系统的效率与质量,降低成本,包括降低软件维护成本。3、可以提升企业的地位,领域构件的归纳总结使企业技术水平提高,软件维保变得简单,在一定范围内可以适应应用需求的变化,更让用户欢迎。4、形成的资源库是企业与领域专有的,有可能垄断市场。

相对而言,我们提倡的通用的软部件设计难度大,第一,它所涉及的不只是一个领域,需要了解所有领域的知识与经验。

第二,由于从事软件开发与编写代码的工作既困难,待遇又低,因而流行一种“开发软件是吃青春饭”的说法。代码设计人员编写代码的时间一长,就极力谋求转入行政或其他工作岗位。我们的40以上的编程人员数量是很少很少了,在学校40岁以上副教授和教授亲自编写应用系统的代码的就更稀有了。年轻人编写代码思维敏捷,记忆力好,编写代码无疑具有优势。但是,他们的劣势是缺少经验,缺少理论的修养,要独立设计并完成具有如此高综合性的课题具有难度。

第三,技术上有许多大家公认不好解决的问题,例如,应用JAVA开发软部件,要解决根据数组数据声明对象及宏替换的问题,需要大量自动生成代码文件的设计等。

第四,这个问题只在我们国家内受到特别的关注,由于语言与习惯,我们的软件特别强调中文的界面与报表的格式,而这写在英美则不那么受到重视,只有中国的技术人员才特别关心这一课题。

第五,得不到学术界与企业界的支持,处于孤军作战,困难可想而知。

企业不热心于这一课题,第一是缺少利好信息,因为是以文件整体调用为复用基础,代码知识产权难以得到保证,这是公益事业,投入很大,回报却低。

第二,许多软企只谋求在部分领域的垄断地位,而通用软部件会降低应用门槛,在一个短时期内不见得能提升企业的垄断地位。

第三是害怕打破当前的平衡会引起管理各方面的变化。

我们都知道,中国农民特别在乎他们的一亩三分地。但是,如果土地都是小块的,最多只能使用小型农耕机器,无法实现农业的机械化与现代化,就难以提高农耕生产力,实现小康难度也会加大。同样,如果不能从领域复用过渡到全软件复用,打破领域的界限,软件生产工业化也只能是空话。

我们的文章与参赛的原型设计基于局域网,希望能用于不同操作系统、适应不同数据库,作品介绍了参考uml设计的建模工具程序,只要绘制用例图、数据结构类图、组件图、系统结构类图、时序图(工作流程图),在绘图的过程中要从我们设计的通用软部件库中选择部件并正确配置参数,之后一秒钟不到,一键应用系统就建成了。这一设计和相关论文是程序模块级软件复用的一个探讨,说明程序模块级软件复用是可以实现的。其意义是明显的,1、软件生产工业化是软件界长期希望解决但没能解决的课题,其中的关键问题是系统模块级软件复用问题,这一问题不解决就难以实现从数据建模到自动化建立应用系统,软件生产工业化就难以实现。实现软件生产工业化将促使软件生产出现分工,从工业生产工业化实现的历程看可以扩大就业,解放生产力。2、如果解决了系统模块级软件复用问题,有可能提高信息系统开发效率数倍到10多倍,同时大大提高质量、大大减少软件开发、软件扩展与软件维保的难度与成本,促使计算机应用更加扩大与普及。3、目前数据库基础课不少学校还在教VFP,但2007年Alan Griver代表微软宣布停止发展VFP,且微软支持VFP9.0只到2015年;有些学校在教Access,但许多地方教学内容脱离数据库基本知识,对于学习数据库基本理论、基本方法存在不足;有些学校开SQL Server,但解决不了应用系统建设的问题,学生不知道学了数据库有什么用。我们的课题为解决这问题提出了思路,有助于提高数据库基础课程教学质量。
  会议程序委员会找了一位“对软件生产线研究与应用均比较熟悉的专家”对作品写了一个评阅意见。

这位专家说:“该软件生产线软件所提供的UML等建模工具不规范,所提供的用例图、类图、组件图等UML图都不太符合UML规范。这些图一般用于表示系统高层分析和设计,不理解为什么需要为这些模型指定数据库连接信息。此外,这些模型与后续的应用开发的关系也不清楚。如果只是为了配合基于软部件的定制化开发,那么只需要提供数据库设计建模(如ER模型)即可。"

UML图只是“用于表示系统高层分析和设计”吗?多看几本书就知道,人们对UML的兴趣除了建模,还包括建表与双向工程,使用比较普遍的Rational Rose就设计了通过数据库建模定义数据模式进而在数据库中建表,以及自动生成和维护c++、java、Oracle等语言和系统的代码。只是,建表和生成代码的操作比较复杂,效率不高,因而在一些只搞应用的人看来,UML只是用来务虚的,他们不知道,人们是希望能用它来务实的。而要用它完成建表操作,不“指定数据库连接信息"能行吗?在我主编的2001年由水利水电出版社出版的《数据库原理与技术》和2014年由清华大学出版社出版的《数据库系统原理与应用》二书中都用专门一节内容介绍利用Rose建库建表,随书发布的实验手册上同步介绍了利用Rose建库建表的方法与步骤。这些内容指出Rose建表过程和Rose前面的建模过程以及已经生成的图形有比较大的断裂,操作比较麻烦,需要创建数据库对象、选择数据库管理系统、选择表空间,之后才能完成建表操作,不如直接在数据库提供的可视化操作平台上建表来得简单、方便、易学,在实际开发工作中大家就很少用了。但是,它们的设计理念并没有错误,人们迟早是会找到解决办法的。我们目前设计的程序对建模内容作了简化,基于数据模型建表不仅比Rose简单,比在数据库中可视化建表也容易多了。至于生成软件代码一般也只能生成程序框架,不如将一些现成的程序拷贝后修改要更加简单好用,使用Rose这些功能的就更少了。而我们要从建模直接实现建立应用系统,请问这位专家,不指定数据库连接信息能实现吗?不知道怎么会问出这样低级错误的问题,而用这来否定我们的作品就更匪夷所思了。

至于所说“为了配合基于软部件的定制化开发,那么只需要提供数据库设计建模(如ER模型)即可。”就更不知说的是什么了,应用系统的定制开发与ER模型有什么直接的关系呢?

所谓我们参考UML设计的建模图形“都不太符合UML规范”就完全背离“创新”的会议宗旨了。UML是面向对象时代出现的建模语言,从自动生成代码的要求而言,类图用类名、属性栏、方法栏来表现是足够了。但目前我们要求实现的是从建模再一键生成应用系统,需要定义菜单的层次结构,需要选择部件,还需要定义有关的参数,如果还墨守老的UML的规范,不求发展,能设计得出满足需求的建模工具吗?有些人只相信外国人,绝不越外国人的“规范”一步,如果有人要图发展,就坚决扼杀之。难道本次大会就以这样的标准来鼓励创新吗?

   我们批评单纯从下至上设计领域构件的研究路线,认为正是这一路线迟滞了软件生产工业化的进程。从下至上设计领域构件具有随机性,所设计的领域构件不具有普遍性。各企业单位可以设计自己独有的软件生产线,生产自己领域内的软件,但无法设计通用的软件生产线。而要设计通用建模工具,建立通用软件生产线,就必须研究从上而下设计软部件的方法与技术并组织实现。

    这位专家还批评说:“该软件生产线软件的基本原理是将基于数据库的增删改查操作以及信息系统界面上各种常用的呈现方式进行抽象总结后形成可定制的软部件。这种设计理念和实现技术已经成为共识,并被广泛应用于企业开发工具和平台中,其中一些定制化的开发工具也在一些企业得到了大范围应用。但从本工作现有提供的材料中,评阅人难以发现作者在上述设想和技术的原创性贡献。”

   这就是在信口开河了。“这种设计理念和实现技术已经成为共识"吗?请问专家,有哪些论文或文章或著作介绍了我们提出的设计理念和实现技术呢?关于领域构件的文章是不少,但是我们并不是研究领域构件,而是在批评其研究路线。据我所知,确实有企业在进行这一方面的研究,而且取得了进展,在软件企业界已经有一定的地位,但是,这样的企业并不多,更没形成共识。至少在武汉市还没有一个企业拥有这样的认识与技术。我前二天还参加一个工程软件招标,只涉及一些查询、数据核对与整合、少数数据维护、报表等内容,开价1200万,最后以近700万价格成交。如果有优秀的部件库,相信能用1人在一月内完成其软件部分,还需要700万吗?本次会议我们受到的歧视也充分证明了不存在与我们的共识,我们的认识依然不为学术界所认同。

   至于我们在本课题上面的贡献,也确实谈不上贡献,对于一个不被认同且未实现的命题何来贡献呢?但是,不能否认我们已经做过的工作。我们是2000年开始研究;2001年在公开出版的教材中提及并介绍了基于VFP设计软部件的方法;在2003年申请国家自然基金的申请中正式提出该项目,并提出软件生产工业化的设想,之后一直到2007年我们连续5年5次提出申请,均被否决;2005年我们基于JAVA设计软部件的早期研究取得进展,经省教育厅组织鉴定认为达到世界先进水平;2007年我们在博客上发表文章“加强对软部件技术的研究,促软件工业化生产时代到来”;2009年我们先后在博客、管理观察发表文章“软部件技术为什么成为独家技术”,没见到任何批评驳斥或质疑的回复;到2010年前,还没见有企业提出通用性、自适应性软件设计的内容,直到2010年后我见到先是深圳太极公司,后是神州数码公司宣称自己的软件具有通用性与自适应性,其中,深圳太极公司的确是有深入的研究并取得成功。但是,各个企业的设计是私有的,所有软件都不公开,都需要自己的专业性很强的资源库的支持,因此都没引起学术界普遍的关注与企业界的跟从。本次论文题目是《管理信息系统软件生产线研究》,实验的作品是软件生产线,这是去年我们才研究完成,并首次在博客中发布,再于今年9月交少部分内容随我编写的教材《数据库系统及应用基础》在清华大学出版社网站中提供下载。虽然关于所设计内容目前还只是用到教学中,还只能是停在科研、口号的阶段,但是,所做工作还是有一点说服力的。

   除这位专家外,还有专家提出需要从中凝炼一些特点,比如自适应性等,包装一点更理论化的内容的意见。这是非常好的建议。理论的一个定义是“通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。”,也就是说,理论指由实践活动中总结形成的具有一定专业知识的智力成果。该智力成果在一定范围内对人们的行为具有指导作用。我们全部实验都是希望能研究软件生产工业化的新的理论、新的技术与新的方法,希望对今后软件工程发展有所贡献。不过,我们目前研究的项目是公益项目:设计出来了,不公开原代码,别人难用;如果公开原代码,还有企业愿投入吗?我们曾经设想,如果能有政府机关出面组织集体公关,建立对公众有益的各类层次的部件库,再提供给企业使用,中国的计算机应用必将会有促进,生产力必将有所提高,具有重大意义。




https://blog.sciencenet.cn/blog-2551-933380.html

上一篇:数据库系统及应用基础
下一篇:蓝桥杯2016湖北省预赛获奖情况(依次按获得1,2,3等奖人数排序)
收藏 IP: 183.94.93.*| 热度|

1 yangb919

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-26 11:20

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部