Searching, Selecting, and Synthesizing Source Code Components
نویسنده
چکیده
PAGE As programmers develop software, they instinctively sense that source code exists that could be reused if found – many programming tasks are common to many software projects across different domains. Oftentimes, a programmer will attempt to create new software from this existing source code, such as third-party libraries or code from online repositories. Unfortunately, several major challenges make it difficult to locate the relevant source code and to reuse it. First, there is a fundamental mismatch between the high-level intent reflected in the descriptions of source code, and the low-level implementation details. This mismatch is known as the concept assignment problem, and refers to the frequent case when the keywords from comments or identifiers in code do not match the features implemented in the code. Second, even if relevant source code is found, programmers must invest significant intellectual effort into understanding how to reuse the different functions, classes, or other components present in the source code. These components may be specific to a particular application, and difficult to reuse. One key source of information that programmers use to understand source code is the set of relationships among the source code components. These relationships are typically structural data, such as function calls or class instantiations. This structural data has been repeatedly suggested as an alternative to textual analysis for search and reuse, however as yet no comprehensive strategy exists for locating relevant and reusable source code. In my research program, I harness this structural data in a unified approach to creating and evolving software from existing components. For locating relevant source code, I present a search engine for finding applications based on the underlying Application Programming Interface (API) calls, and a technique for finding chains of relevant function invocations from repositories of millions of lines of code. Next, for reusing source code, I introduce a system to facilitate building software prototypes from existing packages, and an approach to detecting similar software applications.
منابع مشابه
Explanation of Entrepreneurship Curriculum Components in General Education( Synthesis Inquiry)
Entrepreneurship education (EE) is a fast growing field; despite of this, the content and teaching strategies are vague. This paper collected the studies on goals, content, teaching and evaluation approaches of EE, and by synthesizing them, provided an appropriate compound of them. The criteria for selecting the studies were examination one or more of mentioned components among 2000-2016. Findi...
متن کاملArchetypal Internet-Scale Source Code Searching
Programmers often search for Open Source code to use in their projects. To understand how and why programmers search for source code, we conducted a web-based survey and collected data from 69 respondents, including 58 specific examples of searches. Analyzing these anecdotes, we found that they could be categorized along two orthogonal dimensions: motivation (reuse vs. reference example) and si...
متن کاملAn Integrated Algorithm in Component Security Testing
Component testing provides easy identification of bugs, threats, defects, vulnerabilities etc. and if component testing is performed beforehand it will be a very big help. But since the component based system are made up of third party components and these third party components are the collection of the specifications or the black box components, therefore the source code is not visible to the...
متن کاملGeneration of Families of Similar Programs by Analogy
Code Generation is an increasing popular technique for implementing families of similar software products, where the code is automatically synthesized from abstract specifications written in Domain Specific Languages (DSLs) [2]. DSL compilers usually work as any general purpose language compiler: analyzing the source code and (a) synthesizing the final code from scratch or (b) transforming the ...
متن کاملMethodology of conceptual review in the health system
Background: Conceptual review is a creative research method for generating new knowledge in the context of a vague and complex concept that helps to explain and clarify the concept, its components and its relation to related concepts. This study aimed to explain the methodology of conceptual review in the health system. Methods: Articles related to the conceptual research method were searched ...
متن کامل