第3l卷第 3期
2011年 3月
计 算机应 用
Journal of Computer Applications
V01.31 No.3
M ar.2011
文章编号 :1001—9081(2011)03—0826—05 doi:10.3724/SP.J.1087.201 1.00826
软件 产 品族构 件 演 化 及 其 复 杂度 评 价
张元呜 ,肖 刚 ,徐恭旭 ,陆佳炜
(浙江工业大学 计算机科学与技术学 院,杭州 310023)
(zym@ zjut.edu.cn)
摘 要 :基于现有构件 以演化方式产生 出新 的构件 是提 高软件 复用水平 和满足用 户不断 变化 需求的关键技 术。
首先 ,给 出了一种基于多个代理的构件演化交互模 型,该模型 能够 以 自治方式 实现 演化 一致性数 据处理 ;其次 ,利用
方面织入机制将新 的功能代码准确织入现有构件 内部 ,降低 了构件不 同功能代码 的耦合 度 ;然后 ,对构件 演化 的复杂
度进行 了讨论 ,给出 了四项演化复杂度评 价指标和一 个复杂度计算模 型 ,以对构件 演化 成本进行 量化 估算 ;最后 ,以
数字化校 园中各 应 用 系统间数据 交换 构件 演化 为 例 ,证 明了方 法 的 可行性和有效性。
关键 词:软件产品族构件 ;构件 演化 ;代码 织入 ;演化复杂度
中图分类号 :TP311.52 文献标志码 :A
Evolution of software product fam ily component and its complexity evaluation
ZHANG Yuan—ruing,XIAO Gang,XU Gong—XU,LU Jia—wei
(College of Computer Science and Technology,Zhejiang University of Technology,Hangzhoa Zhejiang 310023,China)
Abstract:Evolving new software component based on previous software components is a key technique to improve
software reusability and satisfy users’various demands. In this paper, an interactive evolution model was proposed based on
multiple Agents, which could autonomously process consistent data. Then, the aspect weaving mechanism, which can
effectively reduce the coupling degree of different function areas,was introduced in evolution to insert new codes into the exact
places of target component.Furthermore,the evolution complexity was also discussed and several indicators and a model were
given to calculate evolution cost.Finally,a data exchange component used in digital campus system was given to illustrate the
effectiveness of above evolution methods.
Key words:software product family component;component evolution; code weaving;evolution complexity
0 引言
基于 构 件 的 软 件 开 发 方 法 (Component—Based Software
Development,CBSD)通过 软构 件 的组 装 开发 软件 系统 “。 ,
它能够实现构件的即插 即用 ,是 提高软件复 用水平 的有效 开
发方法。然而随着用户功 能需求 的变 化 ,构件功 能也必然 发
生变化 ,如何基于现有构件 以较 低的成本 和较短 的周期 产生
出能够满足用 户新功能需求 的构件足一个重 要课题 。
软件产品族构件是指解 决 同一 问题空 间的一族 功能 、代
码和接 口相似构件 的集合 ,可 为基于构件 的开发提供不 同
功能版本的构件。同时 ,软件产 品族构件也 为开发具有新 功
能的构件 提供 了可 复用 资源。构件 演化 是 指基 于现有 软
件产品族构件 以演化方式产生能够满足用户新功能需求的软
构件开发方法,其 可分为两个方面 :一是 由于系统体系结构 发
生变化 ,原有的构件被新 的构件所替换 ,从而导致构件之间连
接的变化 ,被称为构件 的外部演化 ;二是构件有了新的升级 版
本 ,从而导致构件实现的变 化,被称 为构件 的内部变化 。由于
构件一般由接口、功能和信息三部分组成 ,因此构件的演化类
型也分为接 口演化 、功能演化和信息演化三种类型 。
构件演化主要有三种方式 :继承方式 、包装器方式 和代理
方式。前两种演化方式 的实 现在一定程度 上是可行 的 ,但存
在着 问题 :继承演化方式需 要分析构 件的源代码 和详细 了解
构件 的接 口等信息 ,其应用 比较难 以掌握 ;包装器方式不能复
用 接 口代码 ,而且被包装 的构件是紧密耦合 的。
本文对软件产品族 构件演化交 互方式 、演化方法 及其演
化 复杂度进行了较为系统 的研究 。首先对构件的演 化交互过
程进行 了研究 ,给 出 了一 种于 多代理 (Agent)的演 化交 互模
型 ,该模型能够 以 自治方式实现演化一致性数据处理 ,协 同完
成构件演化过程 ;然后对构件的演 化机制进行 了研究 ,并利用
方 面织入机制将新的功能准确 织入现有 构件 内部 ,降低 了构
件不同功能代码 的耦 合度;此外,为量化估算构件演化 的成
本 ,还分析和讨论 了构件 演化复杂度评 价指标体 系并给 出了
一
个复杂度计算模 型。
1 软件产 品族构件演化交互模 型
一
般地 ,软件产品族构件演化 是基 于现有构件的演化 ,即
采用拷贝副本的方式 ,然后将 演化后 的构 件作为一个 新 的产
品族构件 。
构件在演化过程 中需 要处理大 量数据 ,主要包括演 化前
后 的一致性数据 以及 演化过 程 中的备份 数据 等 。本 文所
提 出的演化模型是一个基于代理 (Agent)的构件演化 方法 ,演
化过程数 据交 互 由 相应 的 Agent以 自治 方 式 进 行处 理 ,
收稿 日期 :2010—09—06;修 回日期 :2010一l1—03。 基金项 目:浙江省 自然科学基金资助项 目(Y106603)。
作者简介 :张元呜(1977一),男,河南濮 阳人,讲师,博士 ,主要研究方向:软件体系结构 、软构件 ; 削利(1965一),男 ,浙江上虞人,教授 ,主要研
究方向:软构件 、软件产品族方法 、智能信息系统; 徐恭旭(1984一),男,浙江乐清人,助教 ,硕士,主要研究方向:软构件; 陆佳炜(1981一),男 ,浙
江湖州人 ,助理研究员,硕士,主要研究方向:Web服务 、算法分析。