自动检测GUI设计气味:Blob监听器的案例

Valéria Lelli, Arnaud Blouin, B. Baudry, F. Coulon, Olivier Beaudoux
{"title":"自动检测GUI设计气味:Blob监听器的案例","authors":"Valéria Lelli, Arnaud Blouin, B. Baudry, F. Coulon, Olivier Beaudoux","doi":"10.1145/2933242.2933260","DOIUrl":null,"url":null,"abstract":"Graphical User Interfaces (GUIs) intensively rely on event-driven programming: widgets send GUI events, which capture users' interactions, to dedicated objects called controllers. Controllers implement several GUI listeners that handle these events to produce GUI commands. In this work, we conducted an empirical study on 13 large Java Swing open-source software systems. We study to what extent the number of GUI commands that a GUI listener can produce has an impact on the change- and fault-proneness of the GUI listener code. We identify a new type of design smell, called Blob listener that characterizes GUI listeners that can produce more than two GUI commands. We show that 21% of the analyzed GUI controllers are Blob listeners. We propose a systematic static code analysis procedure that searches for Blob listener that we implement in InspectorGuidget. We conducted experiments on six software systems for which we manually identified 37 instances of Blob listener. InspectorGuidget successfully detected 36 Blob listeners out of 37. The results exhibit a precision of 97.37% and a recall of 97.59%. Finally, we propose coding practices to avoid the use of Blob listeners.","PeriodicalId":287624,"journal":{"name":"Proceedings of the 8th ACM SIGCHI Symposium on Engineering Interactive Computing Systems","volume":"23 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2016-06-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"11","resultStr":"{\"title\":\"Automatic detection of GUI design smells: the case of Blob listener\",\"authors\":\"Valéria Lelli, Arnaud Blouin, B. Baudry, F. Coulon, Olivier Beaudoux\",\"doi\":\"10.1145/2933242.2933260\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Graphical User Interfaces (GUIs) intensively rely on event-driven programming: widgets send GUI events, which capture users' interactions, to dedicated objects called controllers. Controllers implement several GUI listeners that handle these events to produce GUI commands. In this work, we conducted an empirical study on 13 large Java Swing open-source software systems. We study to what extent the number of GUI commands that a GUI listener can produce has an impact on the change- and fault-proneness of the GUI listener code. We identify a new type of design smell, called Blob listener that characterizes GUI listeners that can produce more than two GUI commands. We show that 21% of the analyzed GUI controllers are Blob listeners. We propose a systematic static code analysis procedure that searches for Blob listener that we implement in InspectorGuidget. We conducted experiments on six software systems for which we manually identified 37 instances of Blob listener. InspectorGuidget successfully detected 36 Blob listeners out of 37. The results exhibit a precision of 97.37% and a recall of 97.59%. Finally, we propose coding practices to avoid the use of Blob listeners.\",\"PeriodicalId\":287624,\"journal\":{\"name\":\"Proceedings of the 8th ACM SIGCHI Symposium on Engineering Interactive Computing Systems\",\"volume\":\"23 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2016-06-21\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"11\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings of the 8th ACM SIGCHI Symposium on Engineering Interactive Computing Systems\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/2933242.2933260\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 8th ACM SIGCHI Symposium on Engineering Interactive Computing Systems","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2933242.2933260","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 11

摘要

图形用户界面(GUI)高度依赖于事件驱动编程:小部件将捕获用户交互的GUI事件发送到称为控制器的专用对象。控制器实现几个GUI监听器来处理这些事件以生成GUI命令。在这项工作中,我们对13个大型Java Swing开源软件系统进行了实证研究。我们研究GUI侦听器可以生成的GUI命令的数量对GUI侦听器代码的变更和错误倾向的影响程度。我们确定了一种新的设计气味类型,称为Blob侦听器,它的特点是可以产生两个以上GUI命令的GUI侦听器。我们显示,所分析的GUI控制器中有21%是Blob侦听器。我们提出了一个系统的静态代码分析过程,用于搜索我们在inspectorguide中实现的Blob侦听器。我们在六个软件系统上进行了实验,我们手动识别了37个Blob侦听器实例。InspectorGuidget成功检测到37个Blob监听器中的36个。结果显示,准确率为97.37%,召回率为97.59%。最后,我们提出了避免使用Blob侦听器的编码实践。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
Automatic detection of GUI design smells: the case of Blob listener
Graphical User Interfaces (GUIs) intensively rely on event-driven programming: widgets send GUI events, which capture users' interactions, to dedicated objects called controllers. Controllers implement several GUI listeners that handle these events to produce GUI commands. In this work, we conducted an empirical study on 13 large Java Swing open-source software systems. We study to what extent the number of GUI commands that a GUI listener can produce has an impact on the change- and fault-proneness of the GUI listener code. We identify a new type of design smell, called Blob listener that characterizes GUI listeners that can produce more than two GUI commands. We show that 21% of the analyzed GUI controllers are Blob listeners. We propose a systematic static code analysis procedure that searches for Blob listener that we implement in InspectorGuidget. We conducted experiments on six software systems for which we manually identified 37 instances of Blob listener. InspectorGuidget successfully detected 36 Blob listeners out of 37. The results exhibit a precision of 97.37% and a recall of 97.59%. Finally, we propose coding practices to avoid the use of Blob listeners.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信