电子学报 ›› 2021, Vol. 49 ›› Issue (9): 1799-1808.DOI: 10.12263/DZXB.20190396
王森1, 王煜2, 宁德军2
收稿日期:
2019-04-15
修回日期:
2020-12-31
出版日期:
2021-09-25
作者简介:
基金资助:
WANG Sen1, WANG Yu2, NING De-jun2
Received:
2019-04-15
Revised:
2020-12-31
Online:
2021-09-25
Published:
2021-09-25
Supported by:
摘要:
随着工业物联网和人工智能技术的迅猛发展,各种复杂软件系统(Complex Software System, CSS)日趋盛行,成为最重要的软件系统开发范式之一,其固有的成长性构造和适应性演化性质要求CSS必须能够实时感知和诊断自身的健康状态,确保其适应性演化过程中的质量. 本文采用特征工程和存储库数据挖掘技术,对影响开源CSS健康状态的特征进行分析,建立了一个数据驱动的实时、客观地反映开源CSS健康状态的自感知模型,并进一步借鉴质量控制图的思想,定义了能够辅助开源CSS故障诊断的自诊断模型. 最后,通过对比实验,证明了本文提出的模型因为全面综合了软件开发过程的绝大多数特征,能够更加全面和有效地评价软件的健康状态.
中图分类号:
王森, 王煜, 宁德军. 复杂软件系统健康状态智能感知与诊断模型[J]. 电子学报, 2021, 49(9): 1799-1808.
WANG Sen, WANG Yu, NING De-jun. Intelligent Perception and Diagnosis Model for Health Status of Complex Software System[J]. Acta Electronica Sinica, 2021, 49(9): 1799-1808.
编号 | 属性名称 | 属性说明 | 编号 | 属性名称 | 属性说明 |
---|---|---|---|---|---|
1 | stars | 星数 | 16 | code_change_speed | 代码变更速度 |
2 | subscribers | 关注度,对应Watch | 17 | defect_num | 缺陷数 |
3 | forks | 复制数,代表贡献者本地复制代码总数 | 18 | defect_close_num | 缺陷关闭数 |
4 | issue_comment_num | 问题评论数 | 19 | open_pull | 开放合并请求数 |
5 | issue_detail_num | 问题数 | 20 | open_issues | 开放问题数 |
6 | close_issues | 问题关闭数 | 21 | acommit | 第1活跃用户的提交数 |
7 | pull_num | 合并请求数 | 22 | bcommit | 第2活跃用户的提交数 |
8 | pull_comment_num | 合并请求评论数 | 23 | ccommit | 第3活跃用户的提交数 |
9 | close_pull | 合并请求关闭数 | 24 | dcommit | 第4活跃用户的提交数 |
10 | pull_merge_num | 合并数 | 25 | ecommit | 第5活跃用户的提交数 |
11 | mainbranch_commits | 主分支代码提交数 | 26 | fcommit | 第6活跃用户的提交数 |
12 | active_num | 活跃的贡献者数 | 27 | gcommit | 第7活跃用户的提交数 |
13 | contributors | 贡献者人数 | 28 | hcommit | 第8活跃用户的提交数 |
14 | codesize | 代码行数 | 29 | icommit | 第 9活跃用户的提交数 |
15 | codesize_per | 人均代码行 | 30 | jcommit | 第10活跃用户的提交数 |
表1 特征选择结果特征集汇总列表
编号 | 属性名称 | 属性说明 | 编号 | 属性名称 | 属性说明 |
---|---|---|---|---|---|
1 | stars | 星数 | 16 | code_change_speed | 代码变更速度 |
2 | subscribers | 关注度,对应Watch | 17 | defect_num | 缺陷数 |
3 | forks | 复制数,代表贡献者本地复制代码总数 | 18 | defect_close_num | 缺陷关闭数 |
4 | issue_comment_num | 问题评论数 | 19 | open_pull | 开放合并请求数 |
5 | issue_detail_num | 问题数 | 20 | open_issues | 开放问题数 |
6 | close_issues | 问题关闭数 | 21 | acommit | 第1活跃用户的提交数 |
7 | pull_num | 合并请求数 | 22 | bcommit | 第2活跃用户的提交数 |
8 | pull_comment_num | 合并请求评论数 | 23 | ccommit | 第3活跃用户的提交数 |
9 | close_pull | 合并请求关闭数 | 24 | dcommit | 第4活跃用户的提交数 |
10 | pull_merge_num | 合并数 | 25 | ecommit | 第5活跃用户的提交数 |
11 | mainbranch_commits | 主分支代码提交数 | 26 | fcommit | 第6活跃用户的提交数 |
12 | active_num | 活跃的贡献者数 | 27 | gcommit | 第7活跃用户的提交数 |
13 | contributors | 贡献者人数 | 28 | hcommit | 第8活跃用户的提交数 |
14 | codesize | 代码行数 | 29 | icommit | 第 9活跃用户的提交数 |
15 | codesize_per | 人均代码行 | 30 | jcommit | 第10活跃用户的提交数 |
主要维度 | 一级标签(7个) | 二级标签 (15个) | 特征指标 | 特征说明 |
---|---|---|---|---|
社区视角 | Community_Vitality(社区活跃度) | 流行度 | stars | 星数 |
关注度 | subscribers | 关注度,对应Watch | ||
开发者活跃度 | forks | 复制数 | ||
issue_comment_num | 问题评论数 | |||
过程视角 | Issue_Vitality(问题解决活跃度) | issue_comment_num_per | 人均问题评论数 | |
close_issues_per | 人均问题关闭数 | |||
Pull_Request_Vitality(合并请求活跃度) | pull_comment_num_per | 人均合并请求评论数 | ||
close_pull_per | 人均合并请求关闭数 | |||
pull_request_speed | 团队合并请求速度 | |||
人均合并请求速度 | pull_request_speed_per | 人均合并请求速度 | ||
merge_speed | 团队合并速度 | |||
人均合并速度 | merge_speed_per | 人均合并速度 | ||
团队视角 | Team_Heartbeat(团队心跳) | 外部发布心跳 | release_speed | 外部发布心跳 |
内部心跳 | tag_speed | 内部心跳 | ||
Contributor_Vitality(贡献者活跃度) | active_num | 活跃的贡献者数 | ||
bcommit | 第2个活跃用户的代码提交数 | |||
mainbranch_commits | 主分支代码提交数 | |||
close_pull | 合并请求关闭数 | |||
变更规模 | close_issues | 问题关闭数 | ||
pull_comment_num | 合并请求评论数 | |||
commit_speed | 上一年平均代码提交速度 | |||
Team_Coding_Efficiency(团队编码效率) | codesize_per | 人均代码行 | ||
mainbranch_commits_per | 人均主分支提交数 | |||
代码变更速度 | code_change_speed | 代码变更速度 | ||
每缺陷代码行 | rate_defect | 千行误码率(倒数) | ||
团队规模 | contributors | 贡献者人数 | ||
软件视角 | Software_Quality(软件质量) | 缺陷关闭速度 | defect_closing_speed | 缺陷关闭速度 |
缺陷关闭率 | defect_closing_rate | 缺陷关闭率 | ||
代码规模 | codesize | 代码行数 | ||
编程语言 | langcount | 编程语言数量 | ||
mlangsize | 主语言代码量 | |||
mlangper | 主语言百分比 | |||
slangsize | 第二语言代码量 | |||
slangper | 第二语言百分比 | |||
tlangsize | 第三语言代码量 | |||
tlangper | 第三语言百分比 |
表2 开源软件项目健康状况自感知模型
主要维度 | 一级标签(7个) | 二级标签 (15个) | 特征指标 | 特征说明 |
---|---|---|---|---|
社区视角 | Community_Vitality(社区活跃度) | 流行度 | stars | 星数 |
关注度 | subscribers | 关注度,对应Watch | ||
开发者活跃度 | forks | 复制数 | ||
issue_comment_num | 问题评论数 | |||
过程视角 | Issue_Vitality(问题解决活跃度) | issue_comment_num_per | 人均问题评论数 | |
close_issues_per | 人均问题关闭数 | |||
Pull_Request_Vitality(合并请求活跃度) | pull_comment_num_per | 人均合并请求评论数 | ||
close_pull_per | 人均合并请求关闭数 | |||
pull_request_speed | 团队合并请求速度 | |||
人均合并请求速度 | pull_request_speed_per | 人均合并请求速度 | ||
merge_speed | 团队合并速度 | |||
人均合并速度 | merge_speed_per | 人均合并速度 | ||
团队视角 | Team_Heartbeat(团队心跳) | 外部发布心跳 | release_speed | 外部发布心跳 |
内部心跳 | tag_speed | 内部心跳 | ||
Contributor_Vitality(贡献者活跃度) | active_num | 活跃的贡献者数 | ||
bcommit | 第2个活跃用户的代码提交数 | |||
mainbranch_commits | 主分支代码提交数 | |||
close_pull | 合并请求关闭数 | |||
变更规模 | close_issues | 问题关闭数 | ||
pull_comment_num | 合并请求评论数 | |||
commit_speed | 上一年平均代码提交速度 | |||
Team_Coding_Efficiency(团队编码效率) | codesize_per | 人均代码行 | ||
mainbranch_commits_per | 人均主分支提交数 | |||
代码变更速度 | code_change_speed | 代码变更速度 | ||
每缺陷代码行 | rate_defect | 千行误码率(倒数) | ||
团队规模 | contributors | 贡献者人数 | ||
软件视角 | Software_Quality(软件质量) | 缺陷关闭速度 | defect_closing_speed | 缺陷关闭速度 |
缺陷关闭率 | defect_closing_rate | 缺陷关闭率 | ||
代码规模 | codesize | 代码行数 | ||
编程语言 | langcount | 编程语言数量 | ||
mlangsize | 主语言代码量 | |||
mlangper | 主语言百分比 | |||
slangsize | 第二语言代码量 | |||
slangper | 第二语言百分比 | |||
tlangsize | 第三语言代码量 | |||
tlangper | 第三语言百分比 |
主要维度 | 一级标签/分类标签 | 感知结果 |
---|---|---|
社区视角 | 社区活跃度 | 高 |
过程视角 | 问题解决活跃度 | 中 |
合并请求活跃度 | 中 | |
团队视角 | 团队心跳 | 低 |
贡献者活跃度 | 中 | |
团队编码效率 | 高 | |
团队规模 | 中 | |
软件视角 | 软件质量 | 中 |
代码规模 | 高 | |
编程语言 | 多语言型 |
表3 JeeSite项目自感知结果
主要维度 | 一级标签/分类标签 | 感知结果 |
---|---|---|
社区视角 | 社区活跃度 | 高 |
过程视角 | 问题解决活跃度 | 中 |
合并请求活跃度 | 中 | |
团队视角 | 团队心跳 | 低 |
贡献者活跃度 | 中 | |
团队编码效率 | 高 | |
团队规模 | 中 | |
软件视角 | 软件质量 | 中 |
代码规模 | 高 | |
编程语言 | 多语言型 |
属性 | 属性值 | 状态 | 问题线 | 预警线 | 健康线 |
---|---|---|---|---|---|
外部发布心跳 | 0.028 | 故障 | 0.083 | 0.141 | 0.4 |
内部心跳 | 0.111 | 故障 | 0.288 | 0.255 | 0.985 |
表4 JeeSite项目的团队心跳详细结果
属性 | 属性值 | 状态 | 问题线 | 预警线 | 健康线 |
---|---|---|---|---|---|
外部发布心跳 | 0.028 | 故障 | 0.083 | 0.141 | 0.4 |
内部心跳 | 0.111 | 故障 | 0.288 | 0.255 | 0.985 |
开源项目 | 社区活跃度 | 合并请求 活跃度 | 问题解决 活跃度 | 软件 质量 | 贡献者 活跃度 | 团队编码 效率 | 团队心跳 | HSPI |
---|---|---|---|---|---|---|---|---|
jquery | 5 | 2.743 | 2.993 | 3.134 | 4.706 | 1.868 | 4.006 | 3.417 |
redis | 5 | 2.621 | 3.296 | 3.17 | 4.703 | 2.490 | 4.163 | 3.473 |
select2 | 5 | 2.357 | 3.268 | 1.823 | 4.018 | 0.229 | 2.731 | 2.718 |
druid | 5 | 3.34 | 3.245 | 3.191 | 4.178 | 3.361 | 3.12 | 3.410 |
jquery⁃validation | 4.695 | 2.073 | 2.989 | 2.886 | 3.307 | 1.437 | 2.076 | 2.520 |
表5 JeeSite成员软件健康状态感知结果
开源项目 | 社区活跃度 | 合并请求 活跃度 | 问题解决 活跃度 | 软件 质量 | 贡献者 活跃度 | 团队编码 效率 | 团队心跳 | HSPI |
---|---|---|---|---|---|---|---|---|
jquery | 5 | 2.743 | 2.993 | 3.134 | 4.706 | 1.868 | 4.006 | 3.417 |
redis | 5 | 2.621 | 3.296 | 3.17 | 4.703 | 2.490 | 4.163 | 3.473 |
select2 | 5 | 2.357 | 3.268 | 1.823 | 4.018 | 0.229 | 2.731 | 2.718 |
druid | 5 | 3.34 | 3.245 | 3.191 | 4.178 | 3.361 | 3.12 | 3.410 |
jquery⁃validation | 4.695 | 2.073 | 2.989 | 2.886 | 3.307 | 1.437 | 2.076 | 2.520 |
1 | 王怀民,吴文峻,毛新军,等.复杂软件系统的成长性构造与适应性演化[J].中国科学:信息科学, 2014, 44(6):743 - 761. |
WangH M, WuW J, MaoX J, et al. Growth structure and adaptive evolution of complex software systems [J]. Chinese Science: Information Science, 2014, 44 (6): 743 - 761. (in Chinese) | |
2 | 中国信息物理系统发展论坛. 信息物理系统白皮书. [DB/OL]. http://www.cesi.cn/201703/2251.html, 2018‑03‑01. |
3 | 阿里研究院."互联网+"——中国经济新引擎[DB/OL]. http://www.aliresearch.com/blog/article/detail/id/20324.html, 2017⁃03⁃24. |
4 | LemosR D, GieseH, MüllerH A, et al. Software engineering for self‑adaptive systems: a second research roadmap[A]. Software Engineering for Self‑Adaptive Systems II[C]. Berlin Heidelberg: Springer, 2013. 1 - 32. |
5 | RalphP. Toward methodological guidelines for process theories and taxonomies in software engineering[J]. IEEE Transactions on Software Engineering, 2019,45(7): 712 - 735. |
6 | ShevtsovS, BerekmeriM, WeynsD, et al. Control-theoretical software adaptation: a systematic literature review[J]. IEEE Transactions on Software Engineering, 2018, 44(8):784 - 810. |
7 | CorporationIBM. An Architectural Blueprint for Autonomic Computing. [EB/OL] , 2017⁃06⁃24. |
8 | DobsonS, DenazisS G, AntonioFernández, et al. A survey of autonomic communications [J]. ACM Transactions on Autonomous and Adaptive Systems, 2006, 1(2):223 - 259. |
9 | GraziotinD, LenbergP, FeldtR, et al. Psychometrics in Behavioral Software Engineering: a Methodological Introduction with Guidelines[EB/OL]. , 2020⁃10⁃19 |
10 | CrowstonK, HowisonJ, AnnabiH. Information systems success in free and open source software development: theory and measures[J]. Software Process Improvement & Practice, 2010, 11(2):123 - 148. |
11 | MarganD, ČandrlićS. The success of open source software: A review[A].2015 38th International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO) [C]. Piscataway, NJ: IEEE, 2015. 1463 - 1468. |
12 | RajaU, TretterM J. Defining and evaluating a measure of open source project survivability[J]. IEEE Transactions on Software Engineering, 2012, 38(1):163 - 174. |
13 | BorgesH, Tulio ValenteM. What's in a GitHub star? understanding repository starring practices in a social coding platform[J]. Journal of Systems and Software, 2018, 146:112 - 129. |
14 | JacquesV. Introduction of Pygithub[DB/OL]. http://pygithub.readthedocs.io/en/latest/introduction.html, 2017⁃06⁃09. |
15 | HuY, WangS S, RenY Z, et al. User influence analysis for Github developer social networks[J]. Expert Systems with Applications, 2018, 108:108 - 118. |
16 | BorgesH, HoraA, ValenteM T. Understanding the factors that impact the popularity of GitHub repositories[A]. 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME) [C]. Raleigh, NC, USA: IEEE, 2016. 334 - 344. |
17 | 张得光,李兵,何鹏,等. 基于软件生态系统的开源社区特性研究[J]. 计算机工程, 2015, 41(11):106 - 113. |
ZhangD G, LiB, HeP, et al. Characteristic study of open source community based on software ecosystem [J]. Computer Engineering, 2015, 41 (11): 106 - 113. (in Chinese) | |
18 | 宁德军, 叶培根, 刘琴,等. 基于存储库数据挖掘的开源软件成功度量方法[J]. 电子学报, 2018, 46(012):2930 - 2935. |
NingD J, YeP G, LiuQ, et al. Open source software success measurement method based on mining software repository [J]. Acta Electronica Sinica, 2018, 46 (12): 2930 - 2935. (in Chinese) | |
19 | WassermanA I, GuoX, McmillianB, et al. OSSpal: finding and evaluating open source software [A]. IFIP International Conference on Open Source Systems [C]. Buenos Aires, Argentina: Springer, Cham, 2017. 193 - 203. |
20 | GhapanchiA H. Investigating the interrelationships among success measures of open source software projects[J]. Journal of Organizational Computing and Electronic Commerce, 2015, 25(1):28 - 46. |
[1] | 张颖辉, 张艳梅, 张志成, 姜淑娟, 丁艳茹, 袁冠. 基于深度强化学习的类集成测试序列生成方法[J]. 电子学报, 2023, (): 1-12. |
[2] | 龚雪鸾, 陈艳姣, 王涛, 曹雨欣. SeqGANPass:使用序列生成式对抗网络进行口令猜测[J]. 电子学报, 2023, (): 1-6. |
[3] | 张帅, 高旻, 文俊浩, 熊庆宇, 唐旭. 基于自监督学习的去流行度偏差推荐方法[J]. 电子学报, 2022, 50(10): 2361-2371. |
[4] | 李雪莹, 王田路, 梁鹏, 王翀. 基于系统模型的用户评论中非功能需求的自动分类[J]. 电子学报, 2022, 50(9): 2079-2089. |
[5] | 王飞扬, 冀鹏欣, 孙笠, 危倩, 李根, 张忠宝. 一种基于深度学习的动态社交网络用户对齐方法[J]. 电子学报, 2022, 50(8): 1925-1936. |
[6] | 李辉, 张建朋, 陈福才. 基于流式分析的大规模网络重叠社区发现算法[J]. 电子学报, 2022, 50(8): 1951-1958. |
[7] | 钱忠胜, 宋佳, 俞情媛, 成轶伟, 孙志旺. 利用函数影响力的相似程序间测试用例重用与生成[J]. 电子学报, 2022, 50(7): 1696-1707. |
[8] | 曹阳, 高旻, 余俊良, 范琪琳, 荣文戈, 文俊浩. 基于双图混合随机游走的社会化推荐模型[J]. 电子学报, 2022, (): 1-11. |
[9] | 王飞扬, 冀鹏欣, 孙笠, 危倩, 李根, 张忠宝. 一种基于深度学习的动态社交网络用户对齐方法[J]. 电子学报, 0, (): 1-12. |
[10] | 刘杰, 游品鸿, 田明, 刘金凤. 基于局部投影的视差图像拼接平滑优化[J]. 电子学报, 2022, 50(6): 1451-1456. |
[11] | 李志博, 李清宝, 兰明敬, 孙剑帆. 基于镜像选择序优化的MART算法[J]. 电子学报, 2022, 50(2): 314-325. |
[12] | 张文芳, 孙海锋, 张晏端, 唐荣骏, 王小敏, 马征, 李暄, 黄路非. 基于树形结构构造的联盟链主从多链共识算法[J]. 电子学报, 2022, 50(2): 257-266. |
[13] | 范书平, 万里, 姚念民, 张岩, 马宝英. 基于关键用例获取的测试用例排序方法[J]. 电子学报, 2022, 50(1): 149-156. |
[14] | 柳菁, 李琪. DisHAP:基于层次亲和聚类的分布式大图划分算法[J]. 电子学报, 2021, 49(10): 2002-2011. |
[15] | 史先进, 曹爽, 张重生, 陶月锋, 吕灵灵, 沈夏炯. 基于锚点的字符级甲骨图像自动标注算法研究[J]. 电子学报, 2021, 49(10): 2020-2031. |
阅读次数 | ||||||
全文 |
|
|||||
摘要 |
|
|||||