ASE 2020
Mon 21 - Fri 25 September 2020 Melbourne, Australia
Wed 23 Sep 2020 17:50 - 18:10 at Koala - Empirical Software Engineering (1) Chair(s): Jinqiu Yang

Dependencies among software entities are the basis for many software analytic research and architecture analysis tools. Dynamically typed languages, such as Python, JavaScript and Ruby, tolerate the lack of explicit type references, making certain syntactic dependencies indiscernible in source code. We call these \emph{possible dependencies}, in contrast with the \emph{explicit dependencies} that are directly referenced in source code. Type inference techniques have been widely studied and applied, but existing architecture analytic research and tools have not taken possible dependencies into consideration. The fundamental question is, \emph{to what extent will these missing possible dependencies impact the architecture analysis?} To answer this question, we conducted an empirical study with 105 Python projects, using type inference techniques to manifest possible dependencies. Our study revealed that the architectural impact of possible dependencies is substantial—higher than that of explicit dependencies: (1) file-level possible dependencies account for at least 27.93% of all file-level dependencies, and create different dependency structures than that of explicit dependencies only, with an average difference of 30.71%; (2) adding possible dependencies significantly improves the precision (0.52%$\sim$14.18%), recall(31.73%$\sim$39.12%), and F1 scores (22.13%$\sim$32.09%) of capturing co-change relations; (3) on average, a file involved in possible dependencies influences 28% more files and 42% more dependencies within architectural sub-spaces than a file involved in just explicit dependencies; % Accordingly, possible dependencies dramatically change the file and dependency sets within 23.11% and 26.39% of architectural sub-spaces respectively; (4) on average, a file involved in possible dependencies consumes 32% more maintenance effort. Consequently, maintainability scores reported by existing tools make a system written in these dynamic languages appear to be better modularized than it actually is. This evidence strongly suggests that possible dependencies have a more significant impact than explicit dependencies on architecture quality, that architecture analysis and tools should assess and even emphasize the architectural impact of possible dependencies due to dynamic typing. %Our findings benefit architecture analysis and coding practice for software developed by dynamic languages like Python.

#### Wed 23 Sep Times are displayed in time zone: (UTC) Coordinated Universal Time change

 17:10 - 18:10: Empirical Software Engineering (1) at Koala Chair(s): Jinqiu YangConcordia University, Montreal, Canada 17:10 - 17:30Talk Code to Comment "Translation": Data, Metrics, Baselining & EvaluationResearch PapersDavid GrosUniversity of California, Davis, Hariharan SezhiyanUniversity of California, Davis, Prem DevanbuUniversity of California, Zhou YuUniversity of California, Davis 17:30 - 17:50Talk Reproducing Performance Bug Reports in Server Applications: The Researchers' ExperiencesJournal-first PapersXue HanUniversity of Kentucky, Daniel CarrollUniversity of Kentucky, Tingting YuUniversity of Kentucky Link to publication DOI 17:50 - 18:10Talk Exploring the Architectural Impact of Possible Dependencies in Python softwareResearch PapersWuxia JinXi'an Jiaotong University, Yuanfang Cai Drexel University, Rick KazmanUniversity of Hawai‘i at Mānoa, Gang ZhangEmergent Design Inc, Qinghua ZhengXi'an Jiaotong University, Ting LiuXi'an Jiaotong University