Font Size: a A A

A Study On The Impact Of Python Dynamic Features On Software Maintenance

Posted on:2017-05-05Degree:MasterType:Thesis
Country:ChinaCandidate:B B WangFull Text:PDF
GTID:2308330485961770Subject:Computer Science and Technology
Abstract/Summary:PDF Full Text Request
The dynamic features of programming languages are useful constructs that bring developers the convenience and flexibility. Not only dynamic languages, but also some object-oriented languages bring the features in with the development of the language, such as Reflection feature in Java. The use of dynamic features allows developers to dynamically change the program at runtime, for instance by adding or altering methods and objects, so as to improve the efficiency of development and testing. However, they are also perceived to lead to difficulties in software maintenance. Figuring out whether the use of dynamic features affects maintenance is significant for both researchers and practitioners, yet little work has been done to investigate it, let alone the case of Python.In this paper, we conduct an empirical study to explore whether modules using dynamic features are more change-prone (fault-prone), whether modules using more dynamic features are more change-prone (fault-prone), and especially, whether particular categories of dynamic features are significantly more correlated to change-proneness (fault-proneness) than others. To this end, we statically analyze historical data from 4 to 7 years of the development of seven open source systems. We employ Fisher Exact test, Mann-Whitney hypothetical test methods, along with logistic regression model to solve the six research questions. The results show that:(1) modules with dynamic features are more change-prone; (2) modules with a higher number of dynamic features are more change-prone; (3) specific kinds of dynamic features are prove to be significantly more correlated to change-proneness in some projects; (4) the former three results are also applicable to the relation between the use of dynamic features and module fault-proneness. Besides, we use statistical method to analyze the use of dynamic features in the changed code snippets of 99 open source projects, and analyze the use of 4 most commonly used dynamic features in the changed code snippets by manually reviewing 600 commits in 4 projects. By the manual code review, we summarize several usage scenario of dynamic features in the changed code snippets and inspect two assumptions by Python experts concerning the side effect of dynamic features misuse.In summary, this innovative work can give some inspirations and references to researchers who are always focusing their eyes on how and why to use dynamic features. And basing on the experimental results, we suggest developers, especially the novices, be prudent to use dynamic features, because they are more likely to be the subject of the maintenance effort; we suggest maintainers to be wary of modules with dynamic features to enhance efficiency.
Keywords/Search Tags:Python dynamic features, change-proneness, fault-proneness, software maintenance, manually code review, empirical software engineering
PDF Full Text Request
Related items