Page 100 - 《软件学报》2021年第5期
P. 100
1324 Journal of Software 软件学报 Vol.32, No.5, May 2021
feature space,简称 MFS),多源特征空间包含了软件的设计元素(如实体、功能、执行行为)以及设计元素之间的
二元关系.多源特性主要体现在:MFS 模型从软件系统的代码、文本、接口信息、修订历史、运行轨迹等多源
数据中抽取出多样化的设计元素和二元关系.多源特征空间 MFS 表示为
MFS=〈D,DSM,σ:(D,D)→DSM〉 (1)
其中,D 表示设计元素的集合,D=E∪G∪T.E 表示软件的实体元素的集合,实体元素包括方法/操作(opr)、类
(class)、接口(inf)、文件(file),即 E=ClassSet∪OperationSet∪FileSet∪InterfaceSet,且 OperationSet={opr},ClassSet=
{class},InterfaceSet={inf},FileSet={file};G 表示该软件所提供的功能集合,G={g};T 表示该软件的执行行为集合,
T={t}且 t=〈(opr 1 ,opr 2 ),(opr 3 ,opr 4 ),…,(opr m−1 ,opr m )〉,(opr i ,opr j )表示方法间的调用行为.
使用设计结构矩阵(design structure matrix,简称 DSM)表示设计元素之间的二元关系 [16] .DSM 以邻接矩阵
的结构存储二元关系,矩阵中行和列分别对应一组设计元素,(i,j)单元格的值表示 i 行对应的设计元素与 j 列对
应的设计元素之间的某种二元关系值.
映射函数σ计算每对设计元素的二元关系值,据此构建出相应的 DSM,第 1.2 节将详细介绍.
1.2 映射函数以及DSM生成
本节将介绍不同的二元关系映射函数σ及其相应的 DSM,具体包括 DSM s 、DSM c 、DSM e 、DSM m 、DSM d 、
DSM b 以及 DSM p .
(1) DSM s (structure DSM)
生成 DSM s 的二元关系映射函数为σ structure (class i ,class j ),该映射函数计算 class i 和 class j 在源代码中的结构
依赖.通过分析源代码的抽象语法树来抽取类之间的继承、接口实现、调用、参数类型引用、返回值类型引用
等结构依赖 [10] .如果从 class i 到 class j 存在上述任一种结构依赖,则 DSM 单元格(i,j)的值为 1;否则,值为空.
(2) DSM c (concept DSM)
生成 DSM c 的二元关系映射函数为σ concept (class i ,class j ),该映射函数计算 class i 和 class j 在语义上的相似度.
如果构成这两个类的文本标识符的功能逻辑词汇的交集不为空,则表示这两个类之间存在语义相似 [8,17] ,在
DSM 中单元格(i,j)的值为 1;否则,值为空.
(3) DSM e (evolution DSM)
生成 DSM e 的二元映射函数为σ evolution (file i ,file j ),该映射函数计算 file i 和 file j 在代码演化过程中的共同修改
程度.参考 Mo 等人提出的方法 [18] ,可将软件修订历史中 file i 和 file j 一起被修改的提交(commit)数可作为 DSM
单元格(i,j)的值.
(4) DSM m (message DSM)
生成 DSM m 的二元映射函数为σ message (opr i ,opr j ),该映射函数计算 opr i 和 opr j 在消息粒度的相似度.参考
Mancoridis 等人的工作 [19] ,消息粒度的相似度是 opr i 和 opr j 的输入消息(即参数)之间相似性和输出消息(即返回
值)之间相似性的均值,计算公式如下:
1 ⎛ | ret ∩ ret | | par ∩ par | ⎞
σ (opr ,opr = ) i j + ⎜ i j ⎟ (2)
message i j 2 | ret ∪ ⎜ ⎝ i ret j | | par ∪ i par j ⎠ | ⎟
其中,ret i 和 par i 分别是 opr i 的返回值集合和输入参数集合.
(5) DSM d (domain DSM)
生成 DSM d 的二元映射函数为σ domain (opr i ,opr j ),该映射函数计算 opr i 和 opr j 在领域粒度的相似度.参考
Mancoridis 等人的工作 [19] ,领域粒度的相似度等于 opr i 和 opr j 的方法签名之间的相似性,计算公式如下:
| f (opr ∩ f (opr ) |
)
)
σ (opr ,opr = term i term j (3)
domain i j | f (opr ∪ f (opr ) |
)
term i term j
其中,f term (opr i )表示操作 opr i 的签名(method signature)所包含的领域词汇的集合.
(6) DSM b (behavior DSM)