遗留系统中构件的提取及管理研究

2018-09-26 11:34李天科
数字技术与应用 2018年5期

李天科

摘要:为了从遗留系统中提取具有可复用价值的构件,并对提取的构件实施有效的管理。提出了基于UML的构件提取方法,通过分析用例图、交互图、类图,筛选需要提取的候选构件,依据构件质量度量模型,对候选构件进行度量,确定所提取构件并进行封装。最后确定了构件描述的刻面术语,并选择应用数据库保存构件的描述信息,应用文件系统保存构件。

关键词:遗留系统;构件提取;构件描述

中图分类号:TP311.54 文献标识码:A 文章编号:1007-9416(2018)05-0109-03

1 引言

随着软件需求的迅速增长,软件复用技术和基于构件的软件开发技术逐渐受到软件开发者的青睐。软件复用是指在新软件系统的开发过程中,重复利用已有的、相同或相近软件元素的过程。作为提高软件生产率的一个有效方法,依照软件复用的思想,软件系统的开发不再采用一切“从零开始”的模式,而是以己有的工作为基础,充分利用遗留系统开发中积累的成果,消除重复劳动,提高软件开发效率和质量[1]。

构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的、具有相对独立功能的构成成分。简单地说,构件就是具有一定功能,能够独立工作或能同其它构件装配起来协调工作的程序体。

基于构件的软件复用,存在两个关键技术问题,一是需要大量的可复用构件,二是如何找到合适的构件。

软件工程专业的历届学生在课程设计、毕业论文设计过程中,开发了大量的应用系统。这些遗留系统针对的问题域各种各样,实现方法也各有不同。这些系统都是以学习为目的而开发,大多或多或少存在一些缺陷,系统的功能、性能很难真正满足行业的需要,多数应用系统难以投入实际应用。即便如此,许多遗留系统中还是存在一些有价值的软件模块,随意丢弃必然造成资源浪费。从这些遗留系统中提取有复用价值的软件模块或软件构件,进行合理的分类描述,然后通过软件构件库收集、存储。在以后的软件开发实践中,就可以根据需求选择重复。

2 遗留系统中构件的提取

从遗留系统中提取有可复用价值的构件是构件获取的主要途径之一。然而,大多数遗留系统在软件设计和开发时并没有为复用作专门的考虑,系统的接口和文档也不是为复用而设计的,甚至有些遗留系统只有代码,没有相关的文档。因此,要从遗留系统中提取构件存在很多困难。

如何从遗留系统中提取构件,是软件复用与程序理解领域的一个重要交叉研究领域[2]。许多专业人员对此做了深入研究,文献[2]从系统分解和度量两个方面对构件提取的研究现状做了综述,文献[3]以系统理解和软件度量为基础,提出了一种从面向对象遗留系统中挖掘可复用构件的方法,文献[4]提出了一种领域框架和构件的提取方法。这些研究为自动化的构件识别和获取提供基础,但是至今,构件的提取还不能做到完全的自动化[3]。

学生的课程设计、毕业设计产生的遗留系统一般都有比较完整的文档,因此,可以依据这些文档理解系统,采用手工方式从这些系统中提取构件。本文采用了基于UML的软件构件提取方法,提取过程是一个基于用例迭代的过程,构件的提取由用例驱动,用例图描述系统的功能需求,交互图描述每个用例的流程和涉及的类,类图描述实现用例的类和类之间的关系,构件则是类的抽象[1]。下面结合图书馆管理系统,说明构件的提取过程:

(1)依据用例图,分析每一个用例的可复用性,并利用有用性原则筛选用例。

图1是图书管理系统中涉及图书管理员角色的用例图,由图可知,涉及图书管理员的用例包括:用户管理、图书管理、借阅管理、借书证管理。其中图书管理和借阅管理是两个比较复杂的用例,图书管理包含图书编目管理和图书入库管理。借阅管理包括:借阅资格验证管理、借书管理、还书管理、续借管理等。

依据有用性原则筛选用例,所谓有用性原则就是选取的用例具有相对独立的逻辑功能,能满足某种通用的功能需求,或者能满足特定领域经常被用到的业务需求。对于一个遗留系统,并没有必要把所有的用例确定为提取构件的候选用例,一般只选择可复用性高,逻辑功能完善、逻辑关系比较独立的用例。

例如,针对图书馆管理系统,选取用户管理用例作为候选用例,提取通用的用户管理构件,该构件可在新系统开发中复用,实现用户的输入、删除、更新等功能。也可以考虑选取借阅管理用例作为候选用例提取领域构件,以后在领域内开发新的图书管理系统的时候复用。

(2)依据交互图,了解候选用例的处理流程,分析候选用例所涉及到的类,以及这些类之间的耦合关系。

借书管理的顺序图如图2所示,图2表示了借书管理中的业务处理流程,参照借书管理用例的顺序图并研究借阅管理的其它用例,可知借书管理所涉及的类有:“图书管理员”、“读者”、“书籍”、“图书信息”、“借阅记录”以及“图形界面控制类(GUI)”等。

依据交互图分析类之间的耦合关系,耦合关系是度量构件独立性的指标之一。类的耦合数越大,类越容易受其它类的影响,不利于复用。图2描述了这些类之间的方法调用过程,反应这些类之间的耦合关系。

(3)依据类图,确定那些类共同实现那个候选用例。将这些类提取出来,作为具有实现该用例功能的候选构件。

分析借书管理的类图(如图3所示),由于“图书管理员”、“读者”、“书籍”、“图书信息”、“借阅记录”类共同用来实现图书借阅用例。因此,将这些类抽象成图书借阅构件。

(4)依据构件质量度量模型,对所提取的候选构件质量进行度量,并根据需要对构件进行封装。

构件可复用性质量度量的模型有多种,本文选择三个主要的因素进行度量,即有用性、易用性、接口成熟性。有用性就是度量提取的构件能完成什么逻辑功能,易用性包括易理解、易修改,易修改就是針对新系统特殊的功能需求对构件能进行适应性修改。接口成熟性度量包括接口的正确性和接口的易理解性。接口的正确性判断是依据接口是否符合接口规格说明。接口的易理解性是指接口规格说明是否能被用户正确理解[5]。根据度量的结果确定需要提取的构件,最后对提取的构件进行封装,这里封装的含义有两方面,一是对提取的同一构件的类进行打包,如将java类打包成jar包的形式。二是给每一个构件添加必要的文档。

3 构件的管理

3.1 构件的分类描述

随着提取构件数量的增加,构件的分类描述越来越重要。构件复用者通过构件的描述信息,往往找到的是一个具有相似功能的构件集。如何找到合适的构件,主要取决于需要确定更合理的构件描述术语。

现有文献关于构件的分类描述主要应用刻面分类法,刻面分类法是由一组描述构件特征的刻面所组成,每个刻面从不同的角度對构件进行分类,每个刻面由一组基本的术语构成术语空间。

本文参照青鸟构件模型[6]、以及现有的一些文献[7][8]中提出的构件刻面分类方法,针对提取的构件,设计出了五个刻面:构件属性、构件形态、应用环境、构件功能、存储环境。具体描述信息见图4所示。

(1)构件属性:涉及构件描述的一些基本信息,术语包括构件名称、作者、版本、创建时间、入库时间、修改时间。

(2)构件形态:描述构件开发所用的语言、构件的模型以及构件的抽象层次。术语包括开发语言、类型、抽象层次。开发语言术语指定为枚举值:C#、C++、Java、JSP、ASP、PHP、其它。类型术语指定为枚举值:COM/DCOM、JavaBean/EJB、CORBA。抽象层次术语指定的枚举值:DLL、EXE、源码、其它。

(3)应用环境:指构件实现的目标及可能的应用领域。术语包括构件实现目标、应用领域、适用的操作系统。其中应用领域术语指定为枚举值:通用、信息管理、办公应用、Web应用、数据库相关、网络和通信、多媒体、文件处理、标记语言相关、用户界面、其它。操作系统术语指定为枚举值:Unix、Linux、Windows、Android。

(4)构件功能:主要指构件在原有或可能的软件系统中实现的逻辑功能,术语包括功能的分类、功能描述、接口描述。功能分类指定的枚举值:图形图像、网络通信、数值处理、数据库、用户界面、容器、字处理、文件操作、其他。功能描述是对构件所实现的功能用文字描述,帮助使用者理解构件。接口描述对构件的输入参数个数及类型、输出结果等进行描述。

(5)存储环境:构件实体采用文件系统存储,存储环境刻面描述包含构件存储有关的信息,术语包括文件名、文件属性、文件存储路径。

3.2 构件的存储

从遗留系统中提取的构件形式多样、规模大小不一,不适合使用关系数据库直接存储。因为关系数据库中的字段一般有类型、大小的限制,这与构件实体的特点不相符。

构件实体适合采用文件系统,以文件为单位存储。文件系统对所存储的文件大小没有限制,且可以存储多种不同形式的构件,这恰好符合构件的特点。但是文件系统不具有快速有效的检索途径,文件系统中存储的构件检索效率低,特别是当文件数量很多的时候,检索效率更低。因此,文件系统不能满足对构件高效检索的要求。

在实际应用中,构件的存储采用关系数据库与文件系统相结合的方法实现较合理,具体的存储结构见图5。图中的椭圆表示构件的刻面分类信息,包括构件基本属性、构件形态、构件功能、应用环境和存储环境,刻面分类信息是构件的附加信息,这些信息存储在关系数据库中。其中,构件的一个刻面对应一个构件表,一个术语对应一个字段(表设计见图4),六个表组成构件库。构件复用者利用构件库就可以高效检索构件,利用构件的存储环境信息就可知构件的文件名、文件存储路径。然后按照文件名和路径,从文件系统中找到并下载构件。

4 结语

本文参考了现有构件提取和管理的文献资料,研究了基于UML的构件提取方法,该方法是一种是通过分析用例图、交互图、类图,确定需要提取的候选构件,然后依据构件质量度量模型,对候选构件进行度量,最后确定并提取可复用价值较高的构件,并进行封装。这种手工提取方法,虽然不能实现自动化的构件提取,但是思路简单易于实现。

参考文献

[1]朱建江.基于软件构件的软件复用的研究[D].南京:南京航空航天大学,2001.

[2]罗景,张路,孙家.构件提取技术综述[J].计算机科学,2005,32(12):1-7.

[3]周欣,陈向葵,孙家,杨芙清.面向对象系统中基于度量的可复用构件获取机制[J].电子学报,2003,31(5):649-653.

[4]彭鑫,赵文耘.一种基于类间关系动态分析的领域框架和构件提取方法[J].小型微型计算机系统,2007,28(11):1928-1931.

[5]李晓丽,刘超,金茂忠,高仲仪.软件构件的可复用性质量度量[J].计算机应用研究,2007,24(6):280-283.

[6]潘颖,赵俊峰,谢冰.构件库技术的研究与发展[J].计算机科学,2003,30(5):90-94.

[7]梁洁辉.Web构件库管理系统的设计与实现[D].南京:南京理工大学,2004.

[8]杨森,曹宝香.基于J2EE和XML的构件库系统的设计[J].计算机技术与发展,2009,19(8):100-103.