摘要

从包、类和方法3个粒度构建软件元素的网络模型。利用经典的网络表征学习方法Node2vec学习节点特征,并从网络距离、增长特性、更新率、模块度等方面对3个开源软件系统进行演化分析。试验结果表明:3种粒度下的演化特性不尽相同,包粒度下的演化更加稳定且高效;相比先前研究,本研究方法得到的软件演化特性与Lehman定律更契合;当软件系统迭代累计到最大阈值时其体系架构将重新部署,此时软件系统的鲁棒性最差且易产生峭壁。