{"title":"Feature Visualiser: an Inspection Tool for Context-Oriented Programmers","authors":"Benoît Duhoux, K. Mens, Bruno Dumas","doi":"10.1145/3242921.3242924","DOIUrl":"https://doi.org/10.1145/3242921.3242924","url":null,"abstract":"As part of our ongoing research on context-oriented software technology, we propose a feature-oriented programming approach to context-oriented programming. Behavioural variations are implemented as fine-grained features that can be installed and activated dynamically, upon changing contexts. Given the highly dynamic nature of such a programming approach, and to cope with the complexity of many behavioural variations, that can depend on many varying contexts, developers could benefit from visual inspection tools to analyse what contexts and features are currently active, in which order they have been activated, and what code they adapt. We present a prototype of such a visualisation tool, and discuss potential improvements to that tool.","PeriodicalId":383557,"journal":{"name":"Proceedings of the 10th ACM International Workshop on Context-Oriented Programming: Advanced Modularity for Run-time Composition","volume":"20 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133662735","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"A Simple Context-Oriented Programming Extension to an FRP Language for Small-Scale Embedded Systems","authors":"Takuo Watanabe","doi":"10.1145/3242921.3242925","DOIUrl":"https://doi.org/10.1145/3242921.3242925","url":null,"abstract":"This paper presents the design of a simple context-oriented programming extension to Emfrp, a purely functional reactive programming language for resource-constrained embedded systems. The language provides declarative and straightforward ways to describe various reactive behaviors in embedded systems. However, because of the static nature of the language, Emfrp lacks suitable capabilities to modularize adaptive behaviors. The proposed extension introduces a simple layer mechanism with implicit layer activation. It also provides a feature to describe responses to events that correspond to the moments of layer activations and deactivations. The extension can improve the modularity of Emfrp programs by separating the descriptions of context-dependent behaviors, and hence eliminating various cross-cutting code fragments.","PeriodicalId":383557,"journal":{"name":"Proceedings of the 10th ACM International Workshop on Context-Oriented Programming: Advanced Modularity for Run-time Composition","volume":"112 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123594707","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"A Declarative Language for Context Activation","authors":"Nicolás Cardozo","doi":"10.1145/3242921.3242922","DOIUrl":"https://doi.org/10.1145/3242921.3242922","url":null,"abstract":"Context-oriented Programming proposes a language-level technique to enable dynamic adaptations by the activation of contextual situations sensed from the environment. Context activation triggers the dynamic composition of behavioral adaptations with the running system. Currently, there is a close relationship between contexts and the environment, narrowing the application of these techniques to systems that react to sensed data. This can also be a difficulty in systems requiring explicit activation from users by interacting with the user interface. Such systems require a uniform way to express the activation of different contexts based on a set of their defining properties, while minimizing the interaction with the user. We posit a declarative language, CQL, that unifies different mechanisms to activate contexts. CQL can be incorporated as a domain-specific language to any context-oriented language. We validated the appropriateness of the language in two directions. First, we use the expressiveness of the language to realize different mechanisms for context activation in a uniform model. All existing mechanism in the literature are effectively implemented for CQL. Second, we use CQL to automate the explicit activation of many contexts, as is the case of a context-driven multi-versioning application. Both validation cases use Context Traits as a representative Context-oriented Programming language for their implementation.","PeriodicalId":383557,"journal":{"name":"Proceedings of the 10th ACM International Workshop on Context-Oriented Programming: Advanced Modularity for Run-time Composition","volume":"647 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123343632","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Proceedings of the 10th ACM International Workshop on Context-Oriented Programming: Advanced Modularity for Run-time Composition","authors":"","doi":"10.1145/3242921","DOIUrl":"https://doi.org/10.1145/3242921","url":null,"abstract":"","PeriodicalId":383557,"journal":{"name":"Proceedings of the 10th ACM International Workshop on Context-Oriented Programming: Advanced Modularity for Run-time Composition","volume":"76 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129377299","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Activity Contexts: Improving Modularity in Blockchain-based Smart Contracts using Context-oriented Programming","authors":"Toni Mattis, R. Hirschfeld","doi":"10.1145/3242921.3242926","DOIUrl":"https://doi.org/10.1145/3242921.3242926","url":null,"abstract":"Smart contracts formalize and automate interactions among and between individuals and systems in an executable and decentralized way. They are analogous to objects in object-oriented programming, but their behavior and state is replicated across multiple participants in a network and messages sent to the \"object\" are relayed to all network participants, allowing everyone to keep its replica up-to-date. Originally introduced in the mid-1990s, their recent surge in popularity is linked to a rising interest in blockchain-backed, general-purpose smart contract platforms. Manging contract-specific state and behavior associated with the interacting parties and shared objects is a modularity challenge in smart contracts. Each contract has individual requirements for the (non-contract) objects it interacts with. We observed that smart contracts tend to manage object-specific state and behavior itself, often leading to a single monolithic mediator. We aim at improving encapsulation and separation of concerns by allowing programmers to modularly express instance-specific state and behavior within the scope of a so called Activity Context. Activity Contexts are an extension to objects that collect these modular adaptations and jointly overlay them over instances that participate in the activity modeled by the smart contract. We demonstrate the benefits of Activity Contexts by refactoring an exemplary smart contract and discuss their trade-offs compared to traditional object-oriented decomposition and their integration into an existing layer-based context-oriented ecosystem.","PeriodicalId":383557,"journal":{"name":"Proceedings of the 10th ACM International Workshop on Context-Oriented Programming: Advanced Modularity for Run-time Composition","volume":"50 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127518319","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
R. Hirschfeld, Tobias Dürschmid, Patrick Rein, Marcel Taeumel
{"title":"Cross-cutting Commentary: Narratives for Multi-party Mechanisms and Concerns","authors":"R. Hirschfeld, Tobias Dürschmid, Patrick Rein, Marcel Taeumel","doi":"10.1145/3242921.3242927","DOIUrl":"https://doi.org/10.1145/3242921.3242927","url":null,"abstract":"Cross-cutting concerns are an inherent property of the implementation of non-trivial software systems. Their study led to the development of advanced modularity constructs, usually supported by meta-level frameworks and programming language constructs, to improve comprehensibility. Because of their invasive nature, systems need to be refactored or rewritten to take advantage of these constructs. However, practical considerations such as organizational or economical constraints often do not allow for such reengineering efforts, leaving those systems without explicit representations of their cross-cutting concerns. We propose a lightweight, non-invasive approach to explicate and document cross-cutting, multi-party concerns called Cross-cutting Commentary, or Commentary for short. Our proposal is based on the observation that comments are co-located with the individual semantic units they are about and with that scattered and tangled in the absence of advanced modularity constructs for cross-cutting concerns and the assumption that well-crafted, informal explanations of system properties (their intents and the mechanisms they provide) improve comprehensibility. Commentaries are to help communicate narratives about system properties that involve multiple participants, both co-located in a single module or cross-cutting several of them, and allow for navigating to, from, and between them to explore the implementation artifacts involved. Commentary was inspired by layers introduced with Context-oriented Programming to associate and manage partial definitions of system elements. While layers contribute to system comprehension during development and software composition at run-time, Commentary focuses on narratives for system exploration. We present our first attempt to provide Commentaries in Squeak/Smalltalk. We explain implementation details and discuss several application scenarios considering the documentation of basic mechanisms of this programming and runtime environment.","PeriodicalId":383557,"journal":{"name":"Proceedings of the 10th ACM International Workshop on Context-Oriented Programming: Advanced Modularity for Run-time Composition","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133570510","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"A Context-Oriented Programming Approach to Dependency Hell","authors":"Yudai Tanabe, Tomoyuki Aotani, H. Masuhara","doi":"10.1145/3242921.3242923","DOIUrl":"https://doi.org/10.1145/3242921.3242923","url":null,"abstract":"Two or more incompatible versions of a library are sometimes needed in one software artifact, which is so-called dependency hell. One likely faces the problem if he or she uses two or more libraries that depend on the same library. In this paper, we propose versioned values to solve the problem. They allow us to have multiple versions of functions in a binary file. This gets rid of requiring two or more incompatible binaries. We develop a calculus λVL to discuss type safety in the case where definitions are available only in specific versions, which is a common and important nature of versioned programs.","PeriodicalId":383557,"journal":{"name":"Proceedings of the 10th ACM International Workshop on Context-Oriented Programming: Advanced Modularity for Run-time Composition","volume":"31 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-07-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126757031","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}