17 research outputs found

    Why do commercial companies contribute to open source software?

    Get PDF
    This is the post-print version of the Article. The official published version can be accessed from the link belowMany researchers have pointed out that the opensource movement is an interesting phenomenon that is difficult to explain with conventional economic theories. However, while there is no shortage on research on individuals’ motivation for contributing to opensource, few have investigated the commercial companies’ motivations for doing the same. A case study was conducted at three different companies from the IT service industry, to investigate three possible drivers: sale of complimentary services, innovation and open sourcing (outsourcing). We offer three conclusions. First, we identified three main drivers for contributing to opensource, which are (a) selling complimentary services, (b) building greater innovative capability and (c) cost reduction through open sourcing to an external community. Second, while previous research has documented that the most important driver is selling complimentary services, we found that this picture is too simple. Our evidence points to a broader set of motivations, in the sense that all our cases exhibit combinations of the three drivers. Finally, our findings suggest that there might be a shift in how commercial companies view opensource software. The companies interviewed have all expressed a moral obligation to contribute to open source

    Propuesta de patrón de diseño de software orientado a prevenir la extracción automatizada de contenido web

    Get PDF
    Web scraping o extracción de datos Web es el proceso de recolección de información de uno o más sitios Web de manera automatizada, emulando la interacción entre un usuario y un servidor, dicho proceso se basa en el análisis de estructuras HTML y no requiere la autorización de los propietarios. El uso de estructuras repetitivas o plantillas, facilita el funcionamiento de un programa informático que extrae contenido Web, dicha intrusión genera un incremento considerable en el uso de recursos, considerando la permanente ejecución de instrucciones para obtener tanto contenido como sea posible. Con la finalidad de reducir la vulnerabilidad de los sitios Web frente a procesos de extracción de contenido masivo, en el presente trabajo se planteó un patrón de diseño de software tomando como referencia el patrón Template View de Martin Fowler, al cual se agregó una capa de aleatorización que permita generar estructuras HTML no predecibles. Mediante la aplicación de una herramienta de extracción de contenido a un sitio Web de prueba, cuya capa de presentación se desarrolló tomando en cuenta el patrón de diseño propuesto, se logró verificar una reducción considerable de la cantidad de datos extraídos.Tesi

    API Parameter Recommendation Based on Documentation Analysis

    Get PDF
    Application Programming Interfaces (APIs) are widely used in today's software development, as they provide a easy and safe way to build more powerful applications with less code. However, learning how to use an API function correctly can sometimes be difficult. Software developers may spend a lot of time to learn a new library before they can become productive. When an unfamiliar API is to be used, they usually have to chase down documentation and code samples to figure out how to use the API correctly. This thesis proposes a new approach based on documentation analysis, helping developers learn to use APIs by recommending likely parameter candidates. Our approach analyzes the documentation information, extracts possible candidates from code context, and gives them as parameter suggestions. To test the effectiveness of our approach, we process the documentation of 5 popular JavaScript libraries, and evaluate the approach on top 1,000 JavaScript projects from GitHub. We used 1,681 instances of API function calls for testing in total. On average, over 60% of the time the correct parameter is in the suggestion set generated by our approach

    Evaluating Library Configurations

    Get PDF
    A wide range of libraries are available for a developer to choose from when building a software system, but once the library is chosen, the developer must determine which version of the library to use. Is there some characteristic that can identify the correct version of a library to use? Even if a library compiles correctly, there could be a better version of that library that will provide superior performance. In particular, the developer would prefer to avoid poor con figurations: that is sets of libraries that perform poorly, or not at all. This paper describes a methodology by which the sub-performing version of a library can be identifi ed from the behavior observed from diff erent con figuration of libraries. These are measured by time, static and dynamic analysis of the results of executing the test suite in a project. During the course of these runs, different configurations of the libraries are substituted in and the results collected to be analyzed. The results of this analysis shows that there is no quick way to identify a sub performing library. However this library can be determined through concentrated eff orts to collect and analyze time-based data

    Mining the evolution of software component usage

    Get PDF
    The topic of this thesis is the analysis of the evolution of software components. In order to track the evolution of software components, one needs to collect the evolution information of each component. This information is stored in the version control system (VCS) of the project—the repository of the history of events happening throughout the project’s lifetime. By using software archive mining techniques one can extract and leverage this information. The main contribution of this thesis is the introduction of evolution usage trends and evolution change patterns. The raw information about the occurrences of each component is stored in the VCS of the project. By organizing it in evolution trends and patterns, we are able to draw conclusions and issue recommendations concerning each individual component and the project as a whole.Der Mittelpunkt dieser Arbeit ist die Analyse der Evolution von Software Komponenten. Um die Evolution von Software Komponenten verfolgen zu können, benötigt man Informationen über die Evolution jeder einzelnen Komponente. Diese Informationen sind gespeichert in Versionskontrollsystemen - den Speichern der kompletten Geschichte der Ereignisse, die sich in der Laufzeit eines Projektes zutragen. Der Hauptbeitrag dieser Arbeit ist die Einführung von evolutionären Nutzertrends und evolutionären Änderungsmustern. Die unverarbeiteten Informationen über die Verwendung jeder einzelnen Komponente ist in dem Versionskontrollsystem eines Projektes gespeichert, und durch die Organisierung in evolutionären Änderungsmustern und Trends können wir Schlüsse daraus ziehen und Empfehlungen aussprechen für jede einzelne Komponente und das Projekt als Ganzes
    corecore