论文部分内容阅读
摘 要:软件复用是现代软件工程的重要理念。本文阐述软件复用及构件集成的基本思想,分析了软件复用前提下的构件集成技术,并把现有系统中各种可复用的构件集成、组装为另一应用系统的思想进行实践研究,并对构件库的相关技术进行探究。
关键词:软件复用 软件工程 构件 构件集成 构件库
中图分类号:TP311.5 文献标识码:A文章编号:1673-8454(2007)09-0018-03
软件复用技术是解决软件危机,提高软件生产率的一个重要途径;软件构件及构件集成是随软件复用的出现而逐渐形成的实现软件复用的思想。我们可以把可复用的构件放进构件库以供复用,这能大大减少软件工程的工作量。实践证明,这种复用与集成相结合的软件开发方法具有很大的推广意义。所以,如何进行构件集成和如何建立一个支持构件复用的构件库是现代软件工程的重要研究课题。
2.软件构件开发技术
构件是实现软件复用的关键因素,构件开发的最终目的是为了复用;为使构件具有较高的可复用性,在建造构件时,应遵循构件的通用、可变和易组装的原则,同时使其可与面向对象的技术相结合;同时,也要考虑应用领域的特征,其中关键问题包括:标准数据、标准接口协议和程序模板。如果这些问题得到解决,就有了一个可以进行领域构件设计的框架,符合这个框架设计出来的新构件在以后该领域的复用中将会有更高的复用概率。目前,一般使用面向对象的语言建造系统的构件,如Java、ActiveX等。
为了便于构件之间的集成和装配,必须有一个统一的标准。目前已经提出了多种构件的模型及规范,形成了一些较有影响的构件技术,如Microsoft的COM(组件对象模型)/OLE技术、OMG(对象管理组织)的跨平台开放技术CORBA(公共对象请求代理体系结构)及由IBM、Apple和Novell等公司组成的联盟推出的OpenDoc开放式文档接口等。
二、构件组装技术与集成过程
1.构件组装技术
构件组装技术是基于构件的软件开发的核心技术,构件必须经过组装才能形成应用系统,实现构件的价值。一方面,将构件组装成应用系统受到构件模型、体系结构、构件粒度、运行环境等因素的制约;另一方面,使这些因素尽可能地有利于构件的组装则更为关键和重要。
目前,通常根据构件组装时需要对构件内部细节了解的程度,将构件组装方法按其特征分为如下几种:
1)黑盒方法,此方法不需要了解构件的实现细节,不需要对其进行配置或修改,它要求用有限的构件集合通过“组装运算”而形成无限且不断演变的应用集合,它要求构件集合必须对应用需求具有高度的完备化,这对于目前的技术难度太大。
2)白盒方法,此方法要求组装人员充分理解构件的所有细节后再进行组装,并可对构件按应用的需求进行适当的修改;但完全理解一个构件并对其进行合适的修改的代价是相当高的,而且其安全性、可靠性均得不到保证。所以这种方法对于软件复用的意义不大,只限于局部。
3)灰盒方法,此方法介于黑盒与白盒方法之间,它通过调整构件的组装机制来满足应用系统组装的需求,这样既实现了构件组装的灵活性,又不至于组装过程过于复杂。因此,它应是当前组装技术的主研方向。
2.构件集成的过程
构件集成工程是在复用的思想与复用的构件前提下构件组装集合和互配调节的过程。我们在Java平台里构造了一个由各种基本构件集成的计算器,计算器里面包含了Java程序包(相当于构件库)里不同的构件;把这些构件从不同位置集合到一起,处理好调用接口后就形成了一个完整的应用程序(代码略)。
我们主要利用接口语句import引入Java系统包,在计算器中的按纽组件、文本框组件、子菜单等都是系统包的子构件,用add语句完成各自的功能。
在计算器组装过程中体现了如图2所示的可复用构件集成过程的原理。根据计算器所要实现的功能,进行所需构件分析,在构件库中挑选各种合适的构件后运用构件工程理论指导,对各个构件进行鉴定、调整与组合等操作,使他们在同一个计算环境中适应性结合,最后通过功能等测试最终实现一个可供使用的应用软件。
对象技术将事物封装成包含数据与方法的对象,并抽象成为类。经过适当设计和实现的类也可称为构件,它们在某个领域中具有一定的通用性,可以在不同的计算机软件系统中复用。将这些构件储存起来变成一个构件库,就为基于构件的软件开发模型提供了技术基础。
三、构件库及其管理系统
1.构件库操作过程
从某种意义上说,一个结构合理、功能齐全的构件库是软件复用的基础,也是基于构件的软件工程(CBSE)的基础;它由支持构件运行和管理的构件柜架和构件字典组成,可以看作是一个特殊的信息系统。在设计构件库时,要从构件这个特殊的存储对象的特点出发,在数据存储、操作设计等方面充分考虑构件的一些特殊性。
图3表示复用者对构件的应用过程,也表示构件库与复用者的数据传递过程。在这个操作过程中,编目工具和编目说明是关键,做好这两方面的工作将为整个操作过程带来很多便利,也为这整个设想的实现提供了一个平台。编目说明和编目工具应该是由构件库开发者创建的,它们是关于构件库的组成和内容的说明,使用者可以不了解它们的来龙去脉。目录的编制也很重要,它可以是构件相关特征的描述,但最好是能在把构件放进构件库的时候就对构件进行编号,然后把这些编号对应地放进构件目录中进行编排,只要按照一定的顺序存储和把合适的编号分编到构件目录中即可。而查找的过程需要有查找功能的程序来控制完成,最后的步骤是返回查找结果。
2.构件库管理系统
构件库管理系统(CBMS)是为构件库的建立、使用和维护而配置的应用软件;它建立在操作系统的基础上,对构件库进行统一的管理和控制。用户使用各种构件库管理命令管理构件,控制构件的执行,通过有效管理构件库,从而保证构件库的安全性和完整性。
CBMS类似数据库管理系统,它是构件库建立的必然阶段和必经阶段。CBMS提供一套构件库管理语言,如构件定义语言(CDL)和构件操纵语言(CML)等来实现对构件库的一般管理和特殊管理。对CBMS的基本要求包括以下五个方面:构件库定义功能、构件存取功能、构件库运行管理功能、构件组织、存取和管理功能、构件库的建立和维护。图4是构件库管理系统体系结构的示意图。
四、结束语
软件复用是在软件开发中避免重复劳动的解决方案,使应用系统的开发不再采用一切“从零开始”的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,从而将开发的重点集中于应用的特有构成成分。通过复用高质量的已有开发成果,能避免重新开发可能引入的错误,从而提高软件质量。同时,整个系统或应用程序集成开发涉及到的技术问题主要是如何将现有构件进行整合;它不是系统要素的叠加,而是以信息技术为支撑的系统融合,是以结构优化为途径的力量整合,实现的是1 1>2的目标。当然,要实现这些理念和目标仍然任重道远。
参考文献:
[1]史济民,顾春华,李昌武等编.软件工程——原理、方法与应用[M].北京:高等教育出版社,2002.12
[2]齐治昌,谭庆平,宁洪.软件工程[M].北京:高等教育出版社,2004.4
[3]Ivar JacobsonMartin,GrissPatrik,Jonsson.软件复用结构、过程和组织[M].北京:机械工业出版社,2003.1
[4]王志坚,费玉奎,娄渊清.软件构件技术及其应用[M].北京:科学出版社,2004.4
[5]杨芙清,王千祥,梅宏等.基于复用的软件生产技术[J].中国科学(E辑),2001,31(4):364-371
[6]张世琨,张文娟,常欣等.基于软件体系结构的可复用构件制作和组装[J].软件学报,2001,12(9):1352-1359
关键词:软件复用 软件工程 构件 构件集成 构件库
中图分类号:TP311.5 文献标识码:A文章编号:1673-8454(2007)09-0018-03
软件复用技术是解决软件危机,提高软件生产率的一个重要途径;软件构件及构件集成是随软件复用的出现而逐渐形成的实现软件复用的思想。我们可以把可复用的构件放进构件库以供复用,这能大大减少软件工程的工作量。实践证明,这种复用与集成相结合的软件开发方法具有很大的推广意义。所以,如何进行构件集成和如何建立一个支持构件复用的构件库是现代软件工程的重要研究课题。
2.软件构件开发技术
构件是实现软件复用的关键因素,构件开发的最终目的是为了复用;为使构件具有较高的可复用性,在建造构件时,应遵循构件的通用、可变和易组装的原则,同时使其可与面向对象的技术相结合;同时,也要考虑应用领域的特征,其中关键问题包括:标准数据、标准接口协议和程序模板。如果这些问题得到解决,就有了一个可以进行领域构件设计的框架,符合这个框架设计出来的新构件在以后该领域的复用中将会有更高的复用概率。目前,一般使用面向对象的语言建造系统的构件,如Java、ActiveX等。
为了便于构件之间的集成和装配,必须有一个统一的标准。目前已经提出了多种构件的模型及规范,形成了一些较有影响的构件技术,如Microsoft的COM(组件对象模型)/OLE技术、OMG(对象管理组织)的跨平台开放技术CORBA(公共对象请求代理体系结构)及由IBM、Apple和Novell等公司组成的联盟推出的OpenDoc开放式文档接口等。
二、构件组装技术与集成过程
1.构件组装技术
构件组装技术是基于构件的软件开发的核心技术,构件必须经过组装才能形成应用系统,实现构件的价值。一方面,将构件组装成应用系统受到构件模型、体系结构、构件粒度、运行环境等因素的制约;另一方面,使这些因素尽可能地有利于构件的组装则更为关键和重要。
目前,通常根据构件组装时需要对构件内部细节了解的程度,将构件组装方法按其特征分为如下几种:
1)黑盒方法,此方法不需要了解构件的实现细节,不需要对其进行配置或修改,它要求用有限的构件集合通过“组装运算”而形成无限且不断演变的应用集合,它要求构件集合必须对应用需求具有高度的完备化,这对于目前的技术难度太大。
2)白盒方法,此方法要求组装人员充分理解构件的所有细节后再进行组装,并可对构件按应用的需求进行适当的修改;但完全理解一个构件并对其进行合适的修改的代价是相当高的,而且其安全性、可靠性均得不到保证。所以这种方法对于软件复用的意义不大,只限于局部。
3)灰盒方法,此方法介于黑盒与白盒方法之间,它通过调整构件的组装机制来满足应用系统组装的需求,这样既实现了构件组装的灵活性,又不至于组装过程过于复杂。因此,它应是当前组装技术的主研方向。
2.构件集成的过程
构件集成工程是在复用的思想与复用的构件前提下构件组装集合和互配调节的过程。我们在Java平台里构造了一个由各种基本构件集成的计算器,计算器里面包含了Java程序包(相当于构件库)里不同的构件;把这些构件从不同位置集合到一起,处理好调用接口后就形成了一个完整的应用程序(代码略)。
我们主要利用接口语句import引入Java系统包,在计算器中的按纽组件、文本框组件、子菜单等都是系统包的子构件,用add语句完成各自的功能。
在计算器组装过程中体现了如图2所示的可复用构件集成过程的原理。根据计算器所要实现的功能,进行所需构件分析,在构件库中挑选各种合适的构件后运用构件工程理论指导,对各个构件进行鉴定、调整与组合等操作,使他们在同一个计算环境中适应性结合,最后通过功能等测试最终实现一个可供使用的应用软件。
对象技术将事物封装成包含数据与方法的对象,并抽象成为类。经过适当设计和实现的类也可称为构件,它们在某个领域中具有一定的通用性,可以在不同的计算机软件系统中复用。将这些构件储存起来变成一个构件库,就为基于构件的软件开发模型提供了技术基础。
三、构件库及其管理系统
1.构件库操作过程
从某种意义上说,一个结构合理、功能齐全的构件库是软件复用的基础,也是基于构件的软件工程(CBSE)的基础;它由支持构件运行和管理的构件柜架和构件字典组成,可以看作是一个特殊的信息系统。在设计构件库时,要从构件这个特殊的存储对象的特点出发,在数据存储、操作设计等方面充分考虑构件的一些特殊性。
图3表示复用者对构件的应用过程,也表示构件库与复用者的数据传递过程。在这个操作过程中,编目工具和编目说明是关键,做好这两方面的工作将为整个操作过程带来很多便利,也为这整个设想的实现提供了一个平台。编目说明和编目工具应该是由构件库开发者创建的,它们是关于构件库的组成和内容的说明,使用者可以不了解它们的来龙去脉。目录的编制也很重要,它可以是构件相关特征的描述,但最好是能在把构件放进构件库的时候就对构件进行编号,然后把这些编号对应地放进构件目录中进行编排,只要按照一定的顺序存储和把合适的编号分编到构件目录中即可。而查找的过程需要有查找功能的程序来控制完成,最后的步骤是返回查找结果。
2.构件库管理系统
构件库管理系统(CBMS)是为构件库的建立、使用和维护而配置的应用软件;它建立在操作系统的基础上,对构件库进行统一的管理和控制。用户使用各种构件库管理命令管理构件,控制构件的执行,通过有效管理构件库,从而保证构件库的安全性和完整性。
CBMS类似数据库管理系统,它是构件库建立的必然阶段和必经阶段。CBMS提供一套构件库管理语言,如构件定义语言(CDL)和构件操纵语言(CML)等来实现对构件库的一般管理和特殊管理。对CBMS的基本要求包括以下五个方面:构件库定义功能、构件存取功能、构件库运行管理功能、构件组织、存取和管理功能、构件库的建立和维护。图4是构件库管理系统体系结构的示意图。
四、结束语
软件复用是在软件开发中避免重复劳动的解决方案,使应用系统的开发不再采用一切“从零开始”的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,从而将开发的重点集中于应用的特有构成成分。通过复用高质量的已有开发成果,能避免重新开发可能引入的错误,从而提高软件质量。同时,整个系统或应用程序集成开发涉及到的技术问题主要是如何将现有构件进行整合;它不是系统要素的叠加,而是以信息技术为支撑的系统融合,是以结构优化为途径的力量整合,实现的是1 1>2的目标。当然,要实现这些理念和目标仍然任重道远。
参考文献:
[1]史济民,顾春华,李昌武等编.软件工程——原理、方法与应用[M].北京:高等教育出版社,2002.12
[2]齐治昌,谭庆平,宁洪.软件工程[M].北京:高等教育出版社,2004.4
[3]Ivar JacobsonMartin,GrissPatrik,Jonsson.软件复用结构、过程和组织[M].北京:机械工业出版社,2003.1
[4]王志坚,费玉奎,娄渊清.软件构件技术及其应用[M].北京:科学出版社,2004.4
[5]杨芙清,王千祥,梅宏等.基于复用的软件生产技术[J].中国科学(E辑),2001,31(4):364-371
[6]张世琨,张文娟,常欣等.基于软件体系结构的可复用构件制作和组装[J].软件学报,2001,12(9):1352-1359