5 research outputs found

    Dynamics of Joining Social Networks

    Get PDF
    Online social networks constitute digital ecosystems. As social networks join with one another there is a need to study how the structure of joined network evolves over time. We have simulated the growth of joint networks that are formed by merger of network models using growth algorithms. We have proposed a new growth algorithm which allows us to emulate the internal evolution within the network while new nodes are added, which was missing in Barabasi's method of evolution. Though no method could completely emulate the growth of a real world social network, our proposed approach does not only include external or newly added actors but also actors that are preexistent in the network. We have seen from the degree distributions of the grown network that our new method of attachment has accentuated the scale free properties of the joined network. We also found limits to degree of highly connected nodes in accordance with Dunbar's number.Computer Science Departmen

    Searching, Selecting, and Synthesizing Source Code Components

    Get PDF
    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

    Exploring regularities in software with statistical models and their applications

    Get PDF
    Software systems are becoming popular. They are used with different platforms for different applications. Software systems are developed with support from programming languages, which help developers work conveniently. Programming languages can have different paradigms with different form, syntactic structures, keywords, and representation ways. In many cases, however, programming languages are similar in different important aspects: 1. They are used to support description of specific tasks, 2. Source codes are written in languages and includes a limit set of distinctive tokens, many tokens are repeated like keywords, function calls, and 3. They follow specific syntactic rules to make machine understanding. Those points also respect the similarity between programming language and natural language. Due to its critical role in many applications, natural language processing (NLP) has been studied much and given many promising results like automatic cross-language translation, speech-to-text, information searching, etc. It is interesting to observe if there are similar characteristics between natural language and programming language and whether techniques in NLP can be reused for programming language processing? Recent works in software engineering (SE) shows that their similarities between NLP and programming language processing and techniques in NLP can be reused for PLP. This dissertation introduces my works with contributions in study of characteristics of programming languages, the models which employed them and the main applications that show the usefulness of the proposed models. Study in both three aspects has drawn interests from software engineering community and received awards due to their innovation and applicability. \u27 I hope that this dissertation will bring a systematic view of how advantage techniques in natural language processing and machine learning can be re-used and give huge benefit for programming language processing, and how those techniques are adapted with characteristics of programming language and software systems

    The social network of Java classes

    No full text
    Several works in literature have analyzed the link structure of programs in relation with software engineering: it has been observed that the programming standards caused small-world networks to emerge among classes in object-oriented programming. The need for coherent design and the coding conventions introduce regular patterns in the link structure of code. In this work, we study the social network naturally emerging from unrelated software projects. We studied the links present among Java classes coming from different contexts. In this case, any observable patterns come from social behaviors, rather than software engineering practices. In our analysis, we could observe a regular social network, organized according to a power-law distribution that is typical, for instance, of links among Web pages. We give a positive value to class links, which we consider a sign of relevance and acceptance. Out of this, we propose a way of ranking classes, and we present our prototype search engine for Java classes. Copyright 2006 ACM
    corecore