Page 220 - 《软件学报》2026年第4期
P. 220
袁中锦 等: 融合中文需求文本语义特征的 UML 活动图自动生成方法 1661
3.1 实验数据
本文的实验数据主要来源于合作企业近期结项或正在进行的真实软件开发项目. 当前公开可使用的需求文本
数据集在规模上较为有限, 数据多样性不足, 无法全面支撑 UML 活动图自动生成任务的复杂需求, 难以训练出具
有良好泛化能力的语义多标签需求文本分类模型. 因此, 研究人员在获得合作企业授权后, 从 100 个实际软件开发
项目中收集了用中文撰写的自然语言需求文本, 其内容涵盖 20 余个不同的应用领域. 经过系统化整理, 所收集的
需求文本共包含 1 368 个业务活动实例, 平均每个实例包含 6 条需求描述语句. 一个业务活动实例可对应生成一
个 UML 活动图. 由于需求文本可能包含敏感信息和隐私数据, 受到版权法或合同条款的限制, 这些需求文本需经
过数据预处理才能够用于构建需求文本数据集. 具体的预处理规则及原因如下.
(1) 使用数据掩码和数据匿名化的方式对需求文本进行脱敏处理. 脱敏处理用于去除需求文本中的敏感信息,
保护企业隐私.
(2) 根据句号或换行符将所有需求文本划分为多个单句. 数据划分有助于后续对需求文本进行数据标注.
参照文献 [31,32], 我们从国内软件开发行业龙头企业邀请了 3 名软件工程师对需求文本进行人工标注. 这些
软件工程师深耕于需求调研与分析领域, 具备 5 年以上的实战经验, 均具有高级软件工程师资质. 针对相关性语义
标签, 标注者需要将每个与 UML 活动图相关的句子标注为 1, 将其他所有句子标注为 0. 针对时序性语义标签, 标
注者需要将属于逆序关系的句子标注为 0, 将属于顺序关系的句子标注为 1, 将属于同步关系的句子标注为 2. 考
虑到个别句子与 UML 活动图的相关性不明确, 标注者需要在相关性难以判定时将句子标注为相关句, 如此便可
以尽量避免遗漏相关句以保证活动图图元素的完整性与正确性. 研究引入弗莱斯卡帕 (Fleiss’ kappa) 系数 κ [33] 评
估 3 位标注者对相同需求文本句子进行标注时的一致性. 依据文献 [34] 所述方法, 计算得出的 κ 值为 0.89. 该结果
表明 3 位标注者的标注结果一致性较高, 据此可推断标注结果可靠性较强.
此外, 本文还采用 PROMISE 数据集 (https://github.com/opensciences/opensciences.github.io) 作为对比实验的
测试数据. 该数据集是一个广泛用于软件工程领域的公开数据集, 涵盖多种不同类型的开源软件项目 [35] . 其下的
requirement-other 子集包含少量可用于构建 UML 活动图的需求用例描述. 由于 PROMISE 数据集中的用例描述均
为英文, 而 AutoADGC 目前仅支持中文分析, 本文借助谷歌翻译工具将该数据集中的英文用例描述翻译成中文以
供使用. 采用谷歌翻译工具而非人工翻译旨在降低翻译过程的主观性, 并确保该过程易于复现.
3.2 评价指标及对比方法
在本文中, 参照文献 [10], 从完整性、正确性和冗余性这 3 个不同但互补的评价指标来评估自动生成活动图
的质量. 表 2 中的数据来源于自动生成的 UML 活动图和软件工程师创建的参考活动图.
表 2 用于推导 UML 活动图质量指标的变量
# 变量名称 变量释义 # 变量名称 变量释义
1 N ca 一个自动生成的活动图中正确的节点数量 5 N ta 一个自动生成的活动图中的全部节点数量
2 N ra 一个参考活动图的全部节点数量 6 N tr 一个自动生成的活动图中的全部边数量
3 N cr 一个自动生成的活动图中正确的边数量 7 N ia 一个自动生成的活动图中冗余的节点数量
4 N rr 一个参考活动图的全部边数量 8 N ir 一个自动生成的活动图中冗余的边数量
自动生成所得 UML 活动图的完整性是指图中正确图元素与参考活动图中全部图元素之比. 自动生成所得
UML 活动图的正确性是指图中正确图元素与图元素总数的比例. 自动生成所得 UML 活动图的冗余性是指图中
冗余图元素与图元素总数的比例. 表 3 详细描述了通过自动化手段生成的 UML 活动图在完整性、正确性和冗余
性指标上的具体计算方法.
由于目前所知的 UML 活动图自动生成方法均未提供开源代码, 且未能与这些方法的研究人员取得联系, 所以
[5]
本文主要与部分已公开应用实例和实现细节的方法进行比较. 具体而言, 本文将 AutoADGC 与 GKP4ACTIVITY 、
[9]
SBVR2ACTIVITY 、EADGD [13] 和 NLPHR [15] 方法进行比较. 这些方法都采用自然语言编写的软件需求文本作为
输入. 除与上述方法进行对比外, 本文还使用大模型 ChatGPT4 生成与中文需求文本对应的 PlantUML 脚本, 利用

