Time‐varying matrix inversion is an important field of matrix research,and lots of research achievements have been obtained.In the process of solving time‐varying matrix inversion,disturbances inevitably exist,thus,...Time‐varying matrix inversion is an important field of matrix research,and lots of research achievements have been obtained.In the process of solving time‐varying matrix inversion,disturbances inevitably exist,thus,a model that can suppress disturbance while solving the problem is required.In this paper,an advanced continuous‐time recurrent neural network(RNN)model based on a double integral RNN design formula is pro-posed for solving continuous time‐varying matrix inversion,which has incomparable disturbance‐suppression property.For digital hardware applications,the corresponding advanced discrete‐time RNN model is proposed based on the discretisation formulas.As a result of theoretical analysis,it is demonstrated that the advanced continuous‐time RNN model and the corresponding advanced discrete‐time RNN model have global and exponential convergence performance,and they are excellent for suppressing different disturbances.Finally,inspiring experiments,including two numerical experiments and a practical experiment,are presented to demonstrate the effectiveness and superiority of the advanced discrete‐time RNN model for solving discrete time‐varying matrix inversion with disturbance‐suppression.展开更多
Fault localization is an important and challeng- ing task during software testing. Among techniques studied in this field, program spectrum based fault localization is a promising approach. To perform spectrum based f...Fault localization is an important and challeng- ing task during software testing. Among techniques studied in this field, program spectrum based fault localization is a promising approach. To perform spectrum based fault local- ization, a set of test oracles should be provided, and the ef- fectiveness of fault localization depends highly on the quality of test oracles. Moreover, their effectiveness is usually af- fected when multiple simultaneous faults are present. Faced with multiple faults it is difficult for developers to determine when to stop the fault localization process. To address these issues, we propose an iterative fauk localization process, i.e., an iterative process of selecting test cases for effective fault localization (IPSETFUL), to identify as many faults as pos- sible in the program until the stopping criterion is satisfied. It is performed based on a concept lattice of program spec- trum (CLPS) proposed in our previous work. Based on the labeling approach of CLPS, program statements are catego- rized as dangerous statements, safe statements, and sensitive statements. To identify the faults, developers need to check the dangerous statements. Meantime, developers need to se- lect a set of test cases covering the dangerous or sensitive statements from the original test suite, and a new CLPS is generated for the next iteration. The same process is pro- ceeded in the same way. This iterative process ends until there are no failing tests in the test suite and all statements on the CLPS become safe statements. We conduct an empirical study on several subject programs, and the results show that IPSETFUL can help identify most of the faults in the program with the given test suite. Moreover, it can save much effort in inspecting unfaulty program statements compared with the existing spectrum based fault localization techniques and the relevant state of the art technique.展开更多
Developer recommendation is an essential task for resolving incoming issues in the evolution of software. Many developer recommendation techniques have been developed in the literature; among these studies, most techn...Developer recommendation is an essential task for resolving incoming issues in the evolution of software. Many developer recommendation techniques have been developed in the literature; among these studies, most techniques usually combined historical commits as supplementary information with bug repositories and/or source-code repositories to recommend developers. However, the question of whether the messages in historical commits are always useful has not yet been answered. This article aims at solving this problem by conducting an empirical study on four open-source projects. The results show that: (1) the number of meaningful words of the commit description has an impact on the quality of the commit, and a larger number of meaningful words in the description means that it can generally better reflect developers' expertise; (2) using commit description to recommend the relevant developers is better than that using relevant files that are recorded in historical commits; (3) developers tend to change the relevant files that they have changed many times before; (4) developers generally tend to change the files that they have changed recently.展开更多
Over the last few decades,software has been one of the primary drivers of economic growth in the world.Human life depends on reliable software;therefore,the software production process(i.e.,software design,development...Over the last few decades,software has been one of the primary drivers of economic growth in the world.Human life depends on reliable software;therefore,the software production process(i.e.,software design,development,testing,and maintenance)becomes one of the most important factors to ensure the quality of software.During the production process,large amounts of software data(e.g.,source code,bug reports,logs,and user reviews)are generated.展开更多
Machine learning(ML)techniques and algorithms have been successfully and widely used in various areas including software engineering tasks.Like other software projects,bugs are also common in ML projects and libraries...Machine learning(ML)techniques and algorithms have been successfully and widely used in various areas including software engineering tasks.Like other software projects,bugs are also common in ML projects and libraries.In order to more deeply understand the features related to bug fixing in ML projects,we conduct an empirical study with 939 bugs from five ML projects by manually examining the bug categories,fixing patterns,fixing scale,fixing duration,and types of maintenance.The results show that(1)there are commonly seven types of bugs in ML programs;(2)twelve fixing patterns are typically used to fix the bugs in ML programs;(3)68.80%of the patches belong to micro-scale-fix and small-scale-fix;(4)66.77%of the bugs in ML programs can be fixed within one month;(5)45.90%of the bug fixes belong to corrective activity from the perspective of software maintenance.Moreover,we perform a questionnaire survey and send them to developers or users of ML projects to validate the results in our empirical study.The results of our empirical study are basically consistent with the feedback from developers.The findings from the empirical study provide useful guidance and insights for developers and users to effectively detect and fix bugs in MLprojects.展开更多
1 Introduction Software evolves with the code change,including fixing the vulnerabilities,refactoring the software and adding new functions.Particularly,developers from open-source projects often look for the informat...1 Introduction Software evolves with the code change,including fixing the vulnerabilities,refactoring the software and adding new functions.Particularly,developers from open-source projects often look for the information of inducing commits when devising the fixing patches of a vulnerability[1].In the process of fixing the current vulnerabilities,it is inevitable to introduce new vulnerabilities.As is shown in Fig.1,after vulnerability1 occurs,developers committed the code changes to fix vulnerability1,but cause vulnerability2.In this paper,commits that introduce new vulnerabilities are called vulnerability-inducing commits,and commits that finally fix the vulnerability are known as vulnerability-fixing commits.In the following,they are abbreviated as vul-inducing commits and vul-fixing commits,respectively.展开更多
文摘Time‐varying matrix inversion is an important field of matrix research,and lots of research achievements have been obtained.In the process of solving time‐varying matrix inversion,disturbances inevitably exist,thus,a model that can suppress disturbance while solving the problem is required.In this paper,an advanced continuous‐time recurrent neural network(RNN)model based on a double integral RNN design formula is pro-posed for solving continuous time‐varying matrix inversion,which has incomparable disturbance‐suppression property.For digital hardware applications,the corresponding advanced discrete‐time RNN model is proposed based on the discretisation formulas.As a result of theoretical analysis,it is demonstrated that the advanced continuous‐time RNN model and the corresponding advanced discrete‐time RNN model have global and exponential convergence performance,and they are excellent for suppressing different disturbances.Finally,inspiring experiments,including two numerical experiments and a practical experiment,are presented to demonstrate the effectiveness and superiority of the advanced discrete‐time RNN model for solving discrete time‐varying matrix inversion with disturbance‐suppression.
文摘Fault localization is an important and challeng- ing task during software testing. Among techniques studied in this field, program spectrum based fault localization is a promising approach. To perform spectrum based fault local- ization, a set of test oracles should be provided, and the ef- fectiveness of fault localization depends highly on the quality of test oracles. Moreover, their effectiveness is usually af- fected when multiple simultaneous faults are present. Faced with multiple faults it is difficult for developers to determine when to stop the fault localization process. To address these issues, we propose an iterative fauk localization process, i.e., an iterative process of selecting test cases for effective fault localization (IPSETFUL), to identify as many faults as pos- sible in the program until the stopping criterion is satisfied. It is performed based on a concept lattice of program spec- trum (CLPS) proposed in our previous work. Based on the labeling approach of CLPS, program statements are catego- rized as dangerous statements, safe statements, and sensitive statements. To identify the faults, developers need to check the dangerous statements. Meantime, developers need to se- lect a set of test cases covering the dangerous or sensitive statements from the original test suite, and a new CLPS is generated for the next iteration. The same process is pro- ceeded in the same way. This iterative process ends until there are no failing tests in the test suite and all statements on the CLPS become safe statements. We conduct an empirical study on several subject programs, and the results show that IPSETFUL can help identify most of the faults in the program with the given test suite. Moreover, it can save much effort in inspecting unfaulty program statements compared with the existing spectrum based fault localization techniques and the relevant state of the art technique.
基金This work was partially supported by the National Natural Science Foundation of China (Grant Nos. 61402396, 61611540347, and 61472344), the Open Project Foundation of Information Technology Research Base of Civil Aviation Administration of China (CAAC-ITRB- 201704), the Open Funds of the State Key Laboratory for Novel Software Technology of Nanjing University (KFKT2016B21), the Jiangsu Qin Lan Project, the China Postdoctoral Science Foundation (2015M571489), and the Natural Science Foundation of Yangzhou City (YZ2017113). The authors would like to sincerely thank the anonymous reviewers who provided useful suggestions that helped to improve the article.
文摘Developer recommendation is an essential task for resolving incoming issues in the evolution of software. Many developer recommendation techniques have been developed in the literature; among these studies, most techniques usually combined historical commits as supplementary information with bug repositories and/or source-code repositories to recommend developers. However, the question of whether the messages in historical commits are always useful has not yet been answered. This article aims at solving this problem by conducting an empirical study on four open-source projects. The results show that: (1) the number of meaningful words of the commit description has an impact on the quality of the commit, and a larger number of meaningful words in the description means that it can generally better reflect developers' expertise; (2) using commit description to recommend the relevant developers is better than that using relevant files that are recorded in historical commits; (3) developers tend to change the relevant files that they have changed many times before; (4) developers generally tend to change the files that they have changed recently.
文摘Over the last few decades,software has been one of the primary drivers of economic growth in the world.Human life depends on reliable software;therefore,the software production process(i.e.,software design,development,testing,and maintenance)becomes one of the most important factors to ensure the quality of software.During the production process,large amounts of software data(e.g.,source code,bug reports,logs,and user reviews)are generated.
基金This work was supported partially by the National Natural Science Foundation of China(Grant Nos.61872312,61972335,61472344,61611540347,61402396 and 61662021)partially by the Open Funds of State Key Laboratory for Novel Software Technology of Nanjing University(KFKT2020B15 and KFKT2020B16)+3 种基金partially by the Jiangsu“333”Project,partially by the Six Talent Peaks Project in Jiangsu Province(RJFW-053)partially by the Natural Science Foundation of Jiangsu(BK20181353)partially by the Yangzhou city-Yangzhou University Science and Technology Cooperation Fund Project(YZU201803),by the CERNET Innovation Project(NGII20180607)partially by the Yangzhou University Top-level Talents Support Program(2019).
文摘Machine learning(ML)techniques and algorithms have been successfully and widely used in various areas including software engineering tasks.Like other software projects,bugs are also common in ML projects and libraries.In order to more deeply understand the features related to bug fixing in ML projects,we conduct an empirical study with 939 bugs from five ML projects by manually examining the bug categories,fixing patterns,fixing scale,fixing duration,and types of maintenance.The results show that(1)there are commonly seven types of bugs in ML programs;(2)twelve fixing patterns are typically used to fix the bugs in ML programs;(3)68.80%of the patches belong to micro-scale-fix and small-scale-fix;(4)66.77%of the bugs in ML programs can be fixed within one month;(5)45.90%of the bug fixes belong to corrective activity from the perspective of software maintenance.Moreover,we perform a questionnaire survey and send them to developers or users of ML projects to validate the results in our empirical study.The results of our empirical study are basically consistent with the feedback from developers.The findings from the empirical study provide useful guidance and insights for developers and users to effectively detect and fix bugs in MLprojects.
基金This work was supported by the National Natural Science Foundation of China(Grant Nos.61872312,61972335,and 62002309)the Natural Science Foundation of the Jiangsu Higher Education Institutions of China(20KJB520016)the Innovation(Science and Technology)Project of Scientific Research Base of Nanjing University of Aeronautics and Astronautics(NJ2020022).
文摘1 Introduction Software evolves with the code change,including fixing the vulnerabilities,refactoring the software and adding new functions.Particularly,developers from open-source projects often look for the information of inducing commits when devising the fixing patches of a vulnerability[1].In the process of fixing the current vulnerabilities,it is inevitable to introduce new vulnerabilities.As is shown in Fig.1,after vulnerability1 occurs,developers committed the code changes to fix vulnerability1,but cause vulnerability2.In this paper,commits that introduce new vulnerabilities are called vulnerability-inducing commits,and commits that finally fix the vulnerability are known as vulnerability-fixing commits.In the following,they are abbreviated as vul-inducing commits and vul-fixing commits,respectively.