SoftEng 版 (精华区)

发信人: redstar (明天再说。。。伤心的话!), 信区: SoftEng
标  题: 软件工程的成长[转载]
发信站: 哈工大紫丁香 (2000年08月21日18:05:37 星期一), 站内信件


软件工程的成长之路

    仲萃豪
    仲萃豪 中国科学院软件研究所研究员,博士生导师,研究方向是
计算机软件与计算方法。仲老是我国第一代软件专家,曾率先研究软
件中各领域课题:编译程序、语言、操作系统、应用软件等。近10年
来主要从事应用软件开发及其软件工程研究。曾先后任10多所院校的
兼职教授、北京市软件专业顾问、软件工程国家工程研究中心研究员
,并获国家科技进步二等奖、省部级一等奖等共8项。
    一、 中国软件工程的形成过程
    早在70年代,在国家科委的直接主持下,国家抽调了一批技术人员
,在美藉华人叶祖尧教授的帮助下举办了几期软件工程培训班,并成立
了软件工程实验室。同时选送了一批软件人员去美国马里兰大学学习
,学习开发和建立软件工程的开发平台和工具,即计算机辅助软件工程
(CASE)。当时是以结构化设计和分析方法(简称SASD)为模型,建立相
应的开发规范及其开发工具。两年后这批人员陆续回国,分散在中国
科学院和其他高等院校,成为我国软件工程的先驱者。他们编著并出
版了一批教材,并承担了国家计委支持的"七五"国家重点科技攻关项
目,研制CASE。在此后短短的几年里,先后用软件工程技术开发了上百
个OA和MIS系统。经过几年的努力,SASD软件工程开发方法已成为当时
国内最成熟的技术,并产生了深远的社会影响。然而这种技术只能适
应某些领域中的软件工程,它成本高,开发周期长,更重要的是它不能
适应系统的不断更新变化,因此用它开发出来的软件很难长期生存。
    随着计算机硬件价格的不断下降,各行业有了用计算机来改造和
发展本行业的条件, 大型复杂软件开发的需求日益迫切,而前期研制
的CASE工具都不能解决当时软件开发效率低的问题,因此许多先进国
家(如美、英、日)都将"如何开发大型复杂软件"确定为国家的关键研
究项目。同样我国的"软件工程"获得了国家计委的进一步支持,被列
入"八五"和" 九五"的国家重点攻关项目。
    所谓软件工程,就是把开发大型复杂软件的过程用工程实施的方
法来实现。不同类型的软件具体实施的过程和方法是有差异的。对一
些正在使用的软件,为适应新的需求,或更新硬件设备平台时,需要对
软件进行改造或重新设计,这一过程被称为再工程。在国外,这类工程
很多,而国内,目前主要的市场是开发不同领域中的应用软件,如MIS、
OA、电子商务、局域网、电子通信、酒店或商场管理等。为此下面主
要讨论开发应用软件和分布式系统中的软件工程问题。
    二、 可重用软件开发技术的诞生
    依靠知识的不断积累,社会生产力才会获得发展。计算机软件也
需要利用已有的成果,才能完成一个大型复杂软件。不能每个软件都
要重新从头开发,只有通过软件重用才能从根本上解决目前软件工程
中存在的问题。
    软件重用在20世纪50年代的重要成果是提出了程序库的重用思想
,大大提高了科学计算中的软件编程效率;20世纪60年代提出的模块重
用思想,把数据及其操作封装在一起,实现重用;20世纪70年代进一步
发展成面向对象技术(OO技术),增加了继承性和多态性的重用。虽然
面向对象被公认为一项重要技术,但在具体工程实施中确实存在困难,
很少有人采用此技术来开发大型软件;90年代开始在基于面向对象技
术基础上发展了构件技术,它丰富了重用手段和方法,为软件工程开创
了一个新纪元。
    三、 发展构件软件技术形成软件产业
    构件概念是基于面向对象技术而发展起来的,但它仍存在很大差
异:构件只强调重用性,而不强调继承性;构件类对应于对象中的类,但
生成实例时可以采用各种灵活的手段, 如宏定义、编译、设置环境变
量等,也可以采用动态连接与嵌入方式;构件的种类较多,除基本构件
和领域构件外,还包括有构架、体系结构、参考模式、设计件、分析
件、中间件等;构件的标准根据用途不同分DCOM、CORBA及Java几种;
对象可作构件用,反之不行;对象通常是白盒或个人使用,而大量成熟
构件已作为产品推向市场,或跨平台通过联网使用,且都是黑盒方式使
用。总之构件技术已被广泛应用,而纯面向对象技术在实际工程中的
应用却不多见。由于构件技术正在发展中,其开发模型、规范、描述
语言等方面还不够成熟, 因此在实际工程应用时还必须要做以下几件
事:
    (1) 确定采用哪种构件标淮、使用何种开发平台和开发工具,必
要时应自行动手开发一些工具。
    (2) 制定出开发过程的模型和规范、管理体制和质量保证体系。
通过制定出各种语言,有利于规范的制定,如需求描述语言、构件描述
语言、构架描述语言、系统集成语言等。
    (3) 采用领域工程技术、构架技术和模式重用技术等来提取各种
可重用的领域构件,建立构件库,国外虽然已有不少构件产品,但还需
要经过改造,以适合国情才能使用。一旦有了丰富的构件库,开发工作
才会见到效果。
    (4) 软件产业的分工。根据构件软件的开发模型,软件开发一般
分为需求获取、分析并提取构架和构件、系统集成三个阶段,软件产
业也依此分成不同的专业部门,有从事需求获取的投标、咨询、方案
设计的公司或部门;有专门生产构件的公司(当然一个成熟的构件总是
在应用过程中逐步充实和完善的);还有开发系统的集成公司。社会上
有了分工,产业才会形成和发展。
    虽然上述技术还不成熟,在实际工程中还是可以先用起来,即使采
用初等的模块参数化重用技术,也会取得明显效果的。在初次试用时,
应选择较为熟悉的领域,以避免失败。构件技术特别适合于将软件产
品化,或者所开发的软件将来要不断演化和修改。但是对那些仅开发
一次的项目或某些领域,还是采用SASD技术为妥。
    四、 分布式大型复杂软件的开发
    随着网络技术的迅速发展,国内急需建立一批复杂的分布式系统,
如银行的通存通取、火车订票系统、股票交易、电子商务等。这些系
统在功能上有以下特点:
    (1) 要求同时支持成千上万个用户的并发服务;
    (2) 由单一局域网向跨多个网络协议的广域网扩展;
    (3) 要支持各种商务规则联机事务处理(OLTP);
    (4) 由单一平台转向多平台和多数据源。
    然而,目前国内能掌握的技术只能对付二层体系结构的分布式系
统,而二层结构存在很大的缺陷,它难以扩展成多服务器,难以管理大
量客户机,组合和集成能力有限,且受限于供应商。目前流行的是采用
三层体系结构模型:外层是用户直接操作的表示层,中间层为业务处理
的应用逻辑层,底层是数据层。对这些系统在性能上提出了更高的要
求:
    (1) 确保交易过程数据的完整性和一致性;
    (2) 安全性,在广域网上安全性已成为首要问题;
    (3) 可伸缩性,即改变系统的服务能力;
    (4) 可用性,系统发生故障时的数据恢复能力;
    (5) 可管理性,能实时监视和调整系统,也称自主或自治;
    (6) 系统的可靠性和坚固性;
    (7) 执行时数据的分布性,执行后数据的永久性;
    (8) 快速响应,投资低,易开发,易集成,易使用;
    (9) 不同系统平台上的互操作性。
    由于以上所述特点是实现分布式系统所固有的,因此应由系统软
件提供这些功能和解决方案,而现有的操作系统却没有提供这些而解
决这些难题又不是开发者的特长,因此目前已推出了一批成熟的产品,
称为中间件,如BEA公司的Tuxedo,中国通科技公司的Tong L ink/Easy
等。
    所谓中间件就是在系统软件平台上再增加一层平台,并提供多机
系统间的通信接口, 以提供开发和实现分布式系统,中间件就是平台
加管道通信。
    分布式系统都是以联机事务处理(简称OLAP)为核心来分析和设计
系统的,那么如何与构件技术结合起来,实现系统的可重用和系统的应
变能力呢?我们采用的办法是:分析系统时用OLTP,再用领域工程方法
来设计系统构架和提取领域构件。
    中间件按功能大致可分5类:数据库访问中间件,支持数据库服务
器;远程过程调用中间件,实现网络远程通信;通信中间件,通过消息传
递实现不同系统平台之间的互操作;事务处理中间件,支持OLTP;分布
对象中间件,支持CORBA的Tuxedo、COBIX。
    中间件的作用:在网上通信,打包和排队,提高效率;确保系统完整
性、可用性、可靠性;统一管理、调度、新老软件同时运行等,减少关
键任务切换,提高运行效率;严格认证,使系统更安全;状态监控,可随
时调整设置,便于管理;减少购买一些软件,节省开支。中间件是可重
用构件,但比对象或构件具有更多内涵,因为它包含平台功能, 自身具
有自治性、隔离性、社会性、激发性、主动性、并发性、认知能力等
特性,它具有近似于Agent 的结构。
    三层结构通常分为: 底层为数据层,由多种数据服务器组成,它不
仅仅提供数据库服务,还提供文件系统、电子邮件、数据仓库等数据
的管理;中层为应用层,实现系统中的关键业务处理,它可以是分布于
不同系统平台上的多种应用服务器;外层是用户层,为用户直接操作的
表示层,由于目前都采用浏览器界面,因此目前的趋向是再增加一层,
即Web层。各层之间都是客户/服务器结构,它们之间都由中间件连接,
中间件已成为分布式系统中不可缺少的构件。由于市场上已有成熟的
产品,因此设计和实现三层体系结构的分布式系统已不再是困难的事
了。
    五、 环境和工具
    早期的CASE工具都是为结构化方法而设计的,其适用范围较狭窄,
除少数功能还能使用外,均需要重新补充完善。近年来国内外己推出
了一批实用的产品。下面对这些产品给以简要评述。
    1. C++或VC 是开发高质量软件的最佳语言,它还提供了大量的基
本对象库(MFC),是开发软件产品的一种工具。但是它要求使用者有较
高的素质,为此在开发应用软件时常常用以下工具语言。
    2. VB 它提供大量的界面构件库,易学易用,受到不少用户的青睐
,但是执行效率不高。
    3. PB 它是一种第四代语言,是一种最容易掌握的工具,它还提供
与数据库的通用接口ODBC及动态连接库,是目前使用最为广泛的环境
和工具。
    4. DP 是以Pascal语言为基础而设计的,它也能设计出高质量的
软件,因此一般软件公司可选用这个工具。
    5. Java 在不同的系统平台上可提供统一接口,它是设计和实现
浏览器软件的很好工具。
    6. MAPINF 是设计地理信息系统的很好工具。
    7. NOTE 它提供OA的群体构件库,实现文档流转,设计和实现办公
室自动化最好采用这个工具。
    8. TONG Link/Easy 是国产的中间件产品,较适合中国国情。建
议在实现分布式系统时采用这个工具。
    9. Ariss 建立系统模型工具。
    我国正处于信息时代的浪潮中,信息产业将成为我国的第一产业
。我国计算机科研起步早,而且中国人聪明,适合开发软件,软件应该
成为我国信息产业的一个主力军。目前我国己有软件开发人员15万,
应用人员50万。通过多年的磨练,走过了一段艰难的路程,现已进入发
展阶段,也正在形成软件产业,已有一大批软件开发和集成公司成长起
来了,掌握了软件工程技术,并正在建立相应的开发环境工具,建立质
量保证体系,有些已开始研制和形成产品。未来几年,我国软件产业的
发展势头不可限量,大有可为。  
--
  我要这天,再遮不住我眼,
  要这地,再埋不了我心,
  要这众生,都明白我意,
  要那诸佛,都烟消云散!

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.179.46]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.094毫秒