112 research outputs found

    Panini: a concurrent programming model for solving pervasive and oblivious interference

    Get PDF
    Modular reasoning about concurrent programs is complicated by the possibility of interferences happening between any two instructions of a task (pervasive interference), and these interferences not giving out any information about the behaviors of potentially interfering concurrent tasks (oblivious interference). Reasoning about a concurrent program would be easier if a programmer modularly and statically (1) knows precisely the program points at which interferences may happen (sparse interference), and (2) has some insights into behaviors of potentially interfering tasks at these points (cognizant interference). In this work we present Panini, a core concurrent calculus which guarantees sparse interference, by controlling sharing among concurrent tasks, and cognizant interference, by controlling dynamic name bindings and accessibility of states of tasks. Panini promotes capsule-oriented programming whose concurrently running capsules own their states, communicate by asynchronous invocations of their procedures and dynamically transfer ownership. Panini limits sharing among two capsules to other capsules and futures, limits accessibility of a capsule states to only through its procedures and dispatches a procedure invocation on the static type of its receiver capsule. We formalize Panini, present its semantics and illustrate how its interference model, using behavioral contracts, enables Hoare-style modular reasoning about concurrent programs with interference

    Governance of Inter-Organizational Collaborations When Engaged in Open Innovation

    Get PDF
    L'ús del coneixement extern, a través de projectes oberts i de col·laboració amb els socis externs, permet a les empreses resoldre amb eficàcia i eficiència els seus problemes d'innovació, generant així un major acompliment de la innovació. No obstant, molts projectes d'innovació oberta i de col·laboració no han pogut completar els seus objectius, tal com s'havia planejat inicialment. Els acadèmics han tractat d'examinar aquest problema mitjançant l'estudi del mecanisme de govern del procés de col·laboració en les fases de formació i execució dels projectes. Si bé aquests estudis han aportat coneixements importants, encara es sap poc sobre la naturalesa de la dinàmica de col·laboració i els atributs dels projectes que afecten els mecanismes de govern. En resposta, aquesta tesi pretén establir una visió àmplia i clarificadora del govern de la innovació oberta i de col·laboració a través de l'abordatge de la següent pregunta general: com les empreses governen el procés de col·laboració amb socis externs per a augmentar la probabilitat que els seus projectes d'innovació oberta i de col·laboració es completin amb èxit? Tres preguntes específiques d'investigació es determinen per respondre a la pregunta general: 1) ¿com gestionen les empreses la dinàmica del procés de col·laboració amb fonts externes per completar amb èxit els seus projectes d'innovació oberta i de col·laboració? 2) ¿l'ús d'un procés formalitzat conjunt de tecnologia i desenvolupament ajuda a augmentar la probabilitat que un projecte d'innovació oberta amb fonts externes es completi amb èxit? 3) ¿quins modes d'innovació oberta trien els directius per a projectes que es caracteritzen per diferents nivells de complexitat i 'ocultació' del coneixement? Responem a aquestes preguntes combinant un anàlisi sistemàtic de casos creuats dels casos qualitatius de projectes oberts i de col·laboració i un estudi d'enquesta. Els resultats d'aquest estudi demostren que les empreses associades han de regular la tensió entre compartir i protegir el coneixement en els processos de col·laboració per a completar amb èxit projectes conjunts. D'altra banda, presento una forma alternativa de formalització en el procés de col·laboració, a més del control de la propietat intel·lectual (IP), per a regular la tensió entre compartir i protegir el coneixement. Finalment, els resultats indiquen que els atributs del projecte, específicament la complexitat i l'ocultació del coneixement necessari, afecten la selecció dels mecanismes de govern en projectes oberts i de col·laboració.El uso del conocimiento externo, a través de proyectos abiertos y de colaboración con los socios externos, permite a las empresas resolver con eficacia y eficiencia sus problemas de innovación, generando así un mayor desempeño de la innovación. Sin embargo, muchos proyectos de innovación abierta y de colaboración no han podido completar sus objetivos, tal y como se había planeado inicialmente. Los académicos han tratado de examinar este problema mediante el estudio del mecanismo de gobierno del proceso de colaboración en las fases de formación y ejecución de los proyectos. Si bien estos estudios han aportado conocimientos importantes, aún se sabe poco acerca de la naturaleza de la dinámica de colaboración y los atributos de los proyectos que afectan a los mecanismos de gobierno. En respuesta, esta tesis pretende establecer una visión amplia y clarificadora del gobierno de la innovación abierta y de colaboración a través del abordaje de la siguiente pregunta general: ¿cómo las empresas gobiernan el proceso de colaboración con socios externos para aumentar la probabilidad de que sus proyectos de innovación abierta y de colaboración se completen con éxito? Tres preguntas específicas de investigación se determinan para responder a la pregunta general: 1) ¿cómo gestionan las empresas la dinámica del proceso de colaboración con fuentes externas para completar con éxito sus proyectos de innovación abierta y de colaboración? 2) ¿el uso de un proceso formalizado conjunto de tecnología y desarrollo ayuda a aumentar la probabilidad de que un proyecto de innovación abierta con fuentes externas se complete con éxito? 3) ¿qué modos de innovación abierta escogen los directivos para proyectos que se caracterizan por diferentes niveles de complejidad y 'ocultamiento' del conocimiento? Respondemos a estas preguntas combinando un análisis sistemático de casos cruzados de los casos cualitativos de proyectos abiertos y de colaboración y un estudio de encuesta. Los resultados de este estudio demuestran que las empresas asociadas tienen que regular la tensión entre compartir y proteger el conocimiento en los procesos de colaboración para completar con éxito proyectos conjuntos. Por otra parte, presento una forma alternativa de formalización en el proceso de colaboración, además del control de la propiedad intelectual (IP), para regular la tensión entre compartir y proteger el conocimiento. Por último, los resultados indican que los atributos del proyecto, específicamente la complejidad y el ocultamiento del conocimiento necesario, afectan a la selección de los mecanismos de gobierno en proyectos abiertos y de colaboración.The use of external knowledge, through open and collaborative projects with external partners, enables firms to effectively and efficiently solve their innovation problems, thereby generating greater innovation performance. Yet many open and collaborative innovation projects have failed to complete their objectives as initially planned. Scholars have tried to examine this problem by studying the governance mechanism of collaboration process in both formation and execution phases of projects. While these studies have provided important insights, still little is understood about the nature of collaboration dynamics and the attributes of projects affecting governance mechanisms. In response, this dissertation seeks to establish a comprehensive and clarifying view of open and collaborative innovation governance through addressing the following overall question: How do firms govern the collaboration process with external partners to increase the likelihood that their open and collaborative innovation projects are successfully completed? Three specific research questions are framed to answer the overall question: 1) How do firms manage the dynamics of collaboration process with external sources to successfully complete their open and collaborative innovation projects? 2) Does the use of a formalized joint technology-development process help to increase the likelihood that an open innovation project with external sources is successfully completed? 3) Which open innovation modes do managers choose for projects characterized by different levels of complexity and ‘hiddenness’ of knowledge? We approach these questions with combining a cross-case systematic analysis of qualitative cases on open and collaborative projects and a survey study. The results of this study demonstrate that partnering firms need to regulate the knowledge sharing-protecting tension in collaboration processes to successfully complete joint projects. Moreover, I introduce an alternative form of formalization into the collaboration process, in addition to formal intellectual property (IP) control, to regulate the knowledge sharing-protecting tension. Finally, the results indicate that project attributes, specifically complexity and hiddenness of required knowledge, affects the selection of governance mechanisms in open and collaborative projects

    A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree of Interest

    Full text link
    Logging is a significant programming practice. Due to the highly transactional nature of modern software applications, massive amount of logs are generated every day, which may overwhelm developers. Logging information overload can be dangerous to software applications. Using log levels, developers can print the useful information while hiding the verbose logs during software runtime. As software evolves, the log levels of logging statements associated with the surrounding software feature implementation may also need to be altered. Maintaining log levels necessitates a significant amount of manual effort. In this paper, we demonstrate an automated approach that can rejuvenate feature log levels by matching the interest level of developers in the surrounding features. The approach is implemented as an open-source Eclipse plugin, using two external plug-ins (JGit and Mylyn). It was tested on 18 open-source Java projects consisting of ~3 million lines of code and ~4K log statements. Our tool successfully analyzes 99.22% of logging statements, increases log level distributions by ~20%, and increases the focus of logs in bug fix contexts ~83% of the time. For further details, interested readers can watch our demonstration video (https://www.youtube.com/watch?v=qIULoAXoDv4).Comment: 4 pages, ICSE '22 (tool demo track

    Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams

    Full text link
    Streaming APIs are becoming more pervasive in mainstream Object-Oriented programming languages and platforms. For example, the Stream API introduced in Java 8 allows for functional-like, MapReduce-style operations in processing both finite, e.g., collections, and infinite data structures. However, using this API efficiently involves subtle considerations such as determining when it is best for stream operations to run in parallel, when running operations in parallel can be less efficient, and when it is safe to run in parallel due to possible lambda expression side-effects. Also, streams may not run all operations in parallel depending on particular collectors used in reductions. In this paper, we present an automated refactoring approach that assists developers in writing efficient stream code in a semantics-preserving fashion. The approach, based on a novel data ordering and typestate analysis, consists of preconditions and transformations for automatically determining when it is safe and possibly advantageous to convert sequential streams to parallel, unorder or de-parallelize already parallel streams, and optimize streams involving complex reductions. The approach was implemented as a plug-in to the popular Eclipse IDE, uses the WALA and SAFE analysis frameworks, and was evaluated on 11 Java projects consisting of ∼642K lines of code. We found that 57 of 157 candidate streams (36.31%) were refactorable, and an average speedup of 3.49 on performance tests was observed. The results indicate that the approach is useful in optimizing stream code to their full potential

    Poster: Towards safe refactoring for intelligent parallelization of Java 8 streams

    Full text link
    The Java 8 Stream API sets forth a promising new programming model that incorporates functional-like, MapReduce-style features into a mainstream programming language. However, using streams correctly and efficiently may involve subtle considerations. In this poster, we present our ongoing work and preliminary results towards an automated refactoring approach that assists developers in writing optimal stream code. The approach, based on ordering and typestate analysis, determines when it is safe and advantageous to convert streams to parallel and optimize a parallel streams

    Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams

    Full text link
    Streaming APIs are becoming more pervasive in mainstream Object-Oriented programming languages and platforms. For example, the Stream API introduced in Java 8 allows for functional-like, MapReduce-style operations in processing both finite, e.g., collections, and infinite data structures. However, using this API efficiently involves subtle considerations such as determining when it is best for stream operations to run in parallel, when running operations in parallel can be less efficient, and when it is safe to run in parallel due to possible lambda expression side-effects. ics-preserving fashion. The approach, based on a novel data ordering and typestate analysis, consists of preconditions and transformations for automatically determining when it is safe and possibly advantageous to convert sequential streams to parallel and unorder or de-parallelize already parallel streams. The approach was implemented as a plug-in to the popular Eclipse IDE, uses the WALA and SAFE analysis frameworks, and was evaluated on 18 Java projects consisting of ∼1.65M lines of code. We found that 116 of 419 candidate streams (27.68%) were refactorable, and an average speedup of 3.49 on performance tests was observed. The results indicate that the approach is useful in optimizing stream code to their full potential
    corecore