ccidnet????

出版日期:1998-10-19 总期号:339 本年期号:42

本期导读
信息综述
产品技术
行业应用
网络通信
市场研究
软件开发的“灵魂”
软件工程技术现状及发展趋势
杨芙清、黄柏素

  软件工程技术历经三十年的发展,目前已进入成熟期。软件过程改善的热潮使软件企业对软件工程技术及case工具的认识有了质的飞跃,正在被越来越广泛地接收。过程改善和技术提升的结合是软件产业发展的趋势。软件复用和软件构件技术、再工程技术及领域工程技术正逐步成为主流软件技术,是软件工程化、工业化生产技术的核心技术。


  近年来,知识经济正成为全球范围内的热门话题。知识经济简言之是以知识为基础的经济,这种经济直接依赖于知识和信息的生产、传播和应用。知识经济的形成是以高技术产业、特别是信息产业的发展及成熟为主要标志的。以微电子、计算机、软件、通讯技术为主导的信息技术革命正迅猛改变人们所生存的社会,人类开始从工业社会进入信息时代。信息化正从整体上引导着世界经济和社会发展的进程,信息技术已成为经济发展的关键因素和倍增器,随之而兴起的信息产业正逐步成为全球经济发展的主导产业。据预测,到2000年,信息产品市场将达9000亿美元,成为世界市场的第一大领域。因此,可以说,信息产业将是未来知识经济时代的重要支柱。

  信息的收集、处理和服务是信息产业的核心内容,这几个环节均离不开软件。而知识的创新、获取、处理、管理、传输和运用也需要软件技术的支持。软件一方面可以作为工具,对知识进行有效的处理、管理和传输,如微软公司的成功正在于它控制了这样的软件工具。另一方面,软件也是知识的重要表现形式,是一种重要的知识产品,如现今www上众多的isp服务。可以说,软件能够将多少有些抽象的知识概念转变成具体的、特定的、可操作的,从而将其资本化而产生财富。据预测,到2000年,软件和信息服务总产值将达到5400亿美元,占信息产品市场的半数以上。因此,软件产业已成为许多国家竞相发展的重点产业并成为影响经济发展、国家安全和其它关键技术的制约因素。可以说,软件产业作为知识经济的核心,在知识经济时代将具有举足轻重的地位。

  发展软件产业需要创新的软件技术的支持。为了高质量、高效率地开发各种各样日趋复杂、大型的软件系统,软件工程技术受到越来越多的关注。

  目前,从技术上看,软件开发的主要模式仍以手工作坊式为主,但工程化技术和case工具的采用呈稳步上升趋势。软件企业的过程改善、规范化、规模化正成为一种趋势,推行软件的工程化、工业化生产技术和模式是软件企业发展并形成规模经济的必由之路,这已成为学术界和产业界的共识。


  过程改善和技术提升紧密结合


  软件工程的目标是提高软件开发的质量和生产率。在软件产业发展的初期阶段,先进技术的发展是达到上述目标的主要途径。例如,在80年代后期,case工具和环境被广泛地认为是最好的提高软件开发效率和质量的解决方案——通过自动化工具的支持可以很容易地提高质量和效率;90年代,图形用户界面(gui)生成技术和面向对象技术也被寄予厚望。

  主要原因在于:技术可以给出立即可见的解决方案,并在短期内很快得到收益。然而,随着软件规模、产业规模的发展,人们认识到仅靠技术的提升是不够的,软件开发是一个复杂的过程,和传统产业一样,单靠技术而忽略组织和管理是不可能达到最佳效果的,先进技术的采用需要合适过程的配合。先进的技术并不是一劳永逸的“银弹”。

  总结过去的软件工程实践,人们发现,开发单位软件过程的改善是达到提高软件质量和开发效率这一目标的重要因素,也是保证先进技术能充分发挥效用的重要前提。然而,软件过程的改善和技术改进相比需要更长的时间,过程改善将导致企业组织、管理方式的改变,需要高层的承诺和长期的投资。

  当前,学术界和产业界的共识是:在注重软件工程技术研究的同时应注重软件过程的研究;软件开发单位不仅需要技术创新(采用先进技术),更需要将其过程改善放在首位。过程改善和技术的紧密结合才是完善的软件开发解决方案。

  进入九十年代以来,软件过程研究及企业过程改善成为热潮,和软件工程技术研究及企业技术创新受到同等重视,两方面都得到了长足的发展。在技术方面,软件工程技术不断发展,软件工具市场不断扩大。例如:主要case产品厂商已达到40余家,96年case产品销售额近30亿美元,已出现若干家产值上亿的case厂商。市场的发展说明软件工程思想已被普遍接受,又反过来促进软件工程技术的进一步发展。但是,能有效支持过程改善的工具还不多见,过程驱动的软件工程环境的研究正成为热点之一。

  在过程改善方面,已存在若干软件过程模型,并出现了软件企业的认证热潮,例如,美国的cmm认证和欧洲的iso 9001/tickit认证。当前最重要的模型有tickit、sei的cmm、bootstrap和spice。其中,tickit主要流行于欧洲,cmm主要流行于北美。在1995年通过tickit认证的960家企业中,86%在欧洲。在美国1992年的cmm评测中,近70%在第一级。在1995年的第二次评测中,20%在第一级,40%在第二级。

  对软件企业而言,在技术革新和过程改善两方面存在一定的权衡。在欧洲委员会资助的essi(european software and system initiative)计划中,有一个sbp(software best practice)项目,其目标是通过适当的技术、工具和过程的应用,将一些业已证明的对软件质量和开发效率行之有效的经验和原则应用到软件开发活动中。该项目对欧洲的若干软件企业(或软件开发单位)进行了关于“为了提高质量和效率,您最愿意投资于技术还是过程改善?”问题的调查,调查结果为:绝大部分大公司(大于500人)愿意投资于过程改善;中等公司(50-500人)优先选择投资技术或过程改善的基本对半;而绝大部分小公司(50人以下)则愿意投资于技术(主要通过购买工具),究其原因主要是因为过程改善投资力度大、周期长,而技术投资则可能在短期内有较快回报。

  如何达到两方面无缝结合的理想境界呢?通常有两条主要途径:

  ● 首先达到过程成熟度,同时追求技术成熟度。这是一条长期的、低风险途径。

  ● 单独依靠技术改进。这可能在短期内有较快回报,但最终可能一无所获。

  图1给出了如何从原始态发展到理想态的途径:



  软件工程技术的发展


  当前,软件工程领域的主要研究热点是软件复用和软件构件技术,它们被视为是解决“软件危机”的一条现实可行的途径,是软件工业化生产的必由之路。分析传统产业的发展,其基本模式均是符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装),其中,构件是核心和基础,“复用”是必需的手段。实践表明,这种模式是产业工程化、工业化的必由之路。标准零部件生产业的独立存在和发展是产业形成规模经济的前提。机械、建筑等传统行业以及年轻的计算机硬件产业的成功发展均是基于这种模式并充分证明了这种模式。

  软件产业的发展也不可能例外,标准构件的生产和构件的复用是关键因素。软件复用和软件构件技术的成熟和流行将导致软件产业的合理分工,构件生产业作为 独立产业而存在。关键问题是找出复用什么和如何复用,应用软件系统的一般开发模式如图2:


  基本特征是:应用系统的开发总是从头开始,每个应用系统均涉及大量的重复劳动,包括:用户需求获取的重复、需求分析和设计的重复、测试工作的重复、文档工作的重复、编码实现的重复等。避免重复劳动的解决方案就是软件复用,应用系统的开发不再采用一切“从零开始”的模式,充分利用过去应用开发中积累的知识和经验,例如:需求分析结果、设计方案、源代码、测试计划及案例等,以已有的工作为基础,重点关注应用的特殊性。

  软件复用的基本规则有三:一是必须有可以复用的对象,二是要复用的对象必须是有用的,三是需要知道如何去使用被复用的对象。解决好这几个方面的问题是实现复用的关键。目前,软件复用主要有两种不同方法,一是产品复用,即复用已有的软件构件,通过构件集成(组装)得到新系统;二是过程复用,即复用已有的软件开发过程,使用可复用的应用生成器来自动或半自动生成所需系统。过程复用依赖于软件自动化技术的发展,目前只适用于一些特殊应用领域,而产品复用是目前现实的、主流的途径。

  软件复用的关键技术如图3所示:


  下面重点介绍构件技术、领域工程技术和软件再工程技术。

  1、构件技术

  基于构件复用的软件开发涉及三个主要子过程:构件开发、构件管理、基于构件复用的应用组装。下面将列出这三方面主要研究内容:

  * 构件的开发

  构件模型及构件制作:构件模型是对构件本质及其关系的抽象描述,当前的成果包括指导性的3c模型,reboot模型,resolve模型及青鸟模型等。构件制作解决如何实现构件的问题,当前已出现若干以考虑开放及互操作为出发点的构件实现标准,如,corba/com、ole/com、javabean等。

  构件获取:通过再工程或领域工程是获取构件的主要手段。

  构件测试:研究构件的独立测试及组装测试。

  * 构件的管理

  构件库数据模型:主要工作有rig(reuse library interoperability group)提出的udm(uniform data model)、bidm(basic interoperability data model)。青鸟构件库系统也提出了与之相容的构件库数据模型。

  构件分类检索策略:主要有基于刻面、关键词、枚举、类型和关系等分类方法,这些方法各有优缺点,通常构件库系统均采用这些分类策略的组合。

  构件broker:如何在构件库管理中引入管理运行态构件的broker,对外提供构件服务是构件互操作技术的发展所带来的新课题。

  *基于构件组装的应用开发

  软件体系结构;源代码级的组装技术;运行级的组装技术,支持即插即用;面向corba、ole、javabean的辅助开发工具;应用系统演化——构件的灵活替换和升级。

  *典型工作

  大量activex、vbx构件开发;美国军方的构件库系统;sei的cbse(component——based software engineering);sei的产品线方法;青鸟软件生产线系统——支持基于构件/构架模式的应用系统集成。

  2、领域工程技术

  构件通常可以分为三类:

  * 基础构件:和计算机平台相关的构件

  * 领域构件:应用领域中共性构件

  * 应用构件:特定应用的专用构件

  现在人们的基本共识是:在特定领域中的复用更易取得成功。领域是指共享某种功能的系统或应用程序的集合,我们用领域模型来描述领域中系统之间的共同需求,用dssa(domain specific software architecture)来描述在领域模型中表示的需求的解决方案。领域工程即是指产生dssa及相关共性构件的过程。

  通过领域工程,我们建立起相应的dssa和相关共性构件,具体应用系统的开发则是若干基于dssa的应用工程,同时,通过不断的应用工程实现dssa的演化和扩展。

  领域特定软件的研究还涉及系统的精确表示,包括:体系结构、模块拓扑结构、时序、实时限制等。

  3、软件再工程技术

  大量存在的遗产系统仍在运行中,已经历了长期的用户考验,功能及非功能特性确实符合需求,可靠性有较好保证。然而,计算平台的变化、技术的发展、文档的缺乏及非优化的设计使得遗产系统需要重新开发——再工程。

  再工程是一个工程过程,它通过逆向工程、重构和正向工程的组合,将现有系统重新实现为一种新的形式。如图4所示:


  软件理解是再工程的基础和前提。再工程框架的建立、创新性技术研究和再工程工具开发是当前的研究重点。

  软件工程历经三十年发展,目前已开始进入技术和市场成熟期。软件过程改善的热潮使软件企业对软件工程技术及case工具的认识有了质的飞跃,正在被越来越广泛地接收。过程改善和技术提升的结合是软件产业发展的趋势,已成为学术界和企业界的共识。软件复用和软件构件技术、再工程技术及领域工程技术正逐步成为主流软件技术,是软件工程化、工业化生产技术的核心技术。

  我国政府支持的国家重点科技攻关项目青鸟工程长期从事对软件工程技术的研究,在上述几方面及其集成上均有卓有成效的成果,保持了和国际前沿同步,同时,为我国软件产业基础设施建设以及软件工程学科建设作出了积极贡献。



  杨芙清,女,计算机软件及软件工程著名专家。1932年11月生于江苏省无锡市。1983年任教授,1984年任博士生导师,1991年当选为中国科学院学部委员(院士)。1983年8月至今,任北京大学计算机科学技术系主任。

  主要贡献:八十年代以来,杨芙清致力于软件工程环境研究和软件产业建设,先后主持了国家重点科技攻关课题,研制成功了大型软件开发环境青鸟系统,它是我国第一个大规模的、综合的软件工程支撑环境。“九五”期间,杨芙清主持了“九五”重点科技攻关项目“软件工程环境(青鸟case)工业化生产技术及系统”的研究开发,现已初步形成了基于构件/构架模式,可支持软件开发、软件构件生产、应用软件集成组装的青鸟软件生产线。