{"title":"A Two-Component Language for COP","authors":"P. Degano, G. Ferrari, Letterio Galletta","doi":"10.1145/2637066.2637072","DOIUrl":"https://doi.org/10.1145/2637066.2637072","url":null,"abstract":"Adaptive applications are designed and programmed to dynamically adjust their behaviour to respond to changes of their execution environment. This paper introduces MLCoDa, a new COP language, made of two components: a declarative one for the context and a functional constituent for computing. Here we concentrate on the rational behind the design of MLCoDa and on its dynamic semantics. We also sketch a verification mechanism based on static analysis to prevent wrong adaptations which could compromise the correct behaviour of applications.","PeriodicalId":434800,"journal":{"name":"Proceedings of 6th ACM International Workshop on Context-Oriented Programming","volume":"31 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130593469","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 Reflective Approach to Actor-Based Concurrent Context-Oriented Systems","authors":"Takuo Watanabe, Souhei Takeno","doi":"10.1145/2637066.2637069","DOIUrl":"https://doi.org/10.1145/2637066.2637069","url":null,"abstract":"To realize context-orientation in concurrent systems, especially in systems based on asynchronous communication, we must take special care to control synchronizations among context changes and other computations. In this paper, we present a method to construct a reflective architecture for a group of actors and describe the method to implement concurrent context-oriented systems. The key idea is to apply parallel composition to actors that constitute the meta-level of the group. This results in a uniform construction method for various types of meta-level actors. Using the method, we give a solution to a synchronization problem regarding cross-context messages.","PeriodicalId":434800,"journal":{"name":"Proceedings of 6th ACM International Workshop on Context-Oriented Programming","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"120972306","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}
Nicolás Cardozo, Laurent Christophe, Coen De Roover, W. Meuter
{"title":"Run-time Validation of Behavioral Adaptations","authors":"Nicolás Cardozo, Laurent Christophe, Coen De Roover, W. Meuter","doi":"10.1145/2637066.2637071","DOIUrl":"https://doi.org/10.1145/2637066.2637071","url":null,"abstract":"Context-oriented programming enables the composition of behavioral adaptations into a running software system. Behavioral adaptations provide the most appropriate behavior of a system when their contexts are activated or deactivated, according to the situations at hand in the system's execution environment. Behavioral adaptations can be defined by third-party vendors or even be acquired at run time. As the systems grows in complexity it becomes increasingly difficult to reason about every possible runtime adaptation. Therefore, behavioral adaptations that lead to erroneous states or compromise the system's security might be difficult to detect statically. To prevent such undesired behavioral adaptations from happening, we introduce a run-time correctness verification approach. Our approach uses a symbolic execution engine to reason about the reachable states of the system, whenever contexts are activated or deactivated. Context activation and deactivation requests are allowed depending on the presence of erroneous states within reachable states. Our approach is a step forward to ensure the run-time correctness of software systems that adapt their behavior dynamically.","PeriodicalId":434800,"journal":{"name":"Proceedings of 6th ACM International Workshop on Context-Oriented Programming","volume":"48 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131361613","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":"Applying Data-driven Tool Development to Context-oriented Languages","authors":"Marcel Taeumel, T. Felgentreff, R. Hirschfeld","doi":"10.1145/2637066.2637067","DOIUrl":"https://doi.org/10.1145/2637066.2637067","url":null,"abstract":"There are numerous implementations of context-oriented programming on host languages that come with graphical programming environments. However, comprehensive tool support is often missing because building and integrating graphical tools is still laborious; many programmers cannot afford to be both tool user and tool builder. We present a novel, data-driven approach on programming tools to alleviate this problem. We implemented a framework in Squeak/Smalltalk and show how programmers can use it to create and adapt integrated tools for ContextS2.","PeriodicalId":434800,"journal":{"name":"Proceedings of 6th ACM International Workshop on Context-Oriented Programming","volume":"31 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124997628","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}
Hiroaki Inoue, Atsushi Igarashi, M. Appeltauer, R. Hirschfeld
{"title":"Towards Type-Safe JCop: A type system for layer inheritance and first-class layers","authors":"Hiroaki Inoue, Atsushi Igarashi, M. Appeltauer, R. Hirschfeld","doi":"10.1145/2637066.2637073","DOIUrl":"https://doi.org/10.1145/2637066.2637073","url":null,"abstract":"This paper describes a type system for JCop, which is an extension of Java with language mechanisms for context-oriented programming. A simple type system as in Java, however, is not sufficient to prevent errors due to the absence of invoked methods because interfaces of objects can change at run time by dynamic layer composition, a characteristic feature of context-oriented programming. Igarashi, Hirschfeld, and Masuhara have studied a type system for dynamic layer composition, but their type system is not directly applicable to JCop due to JCop-specific features such as layer inheritance, first-class layers, and declarative layer composition. We discuss how their type system can be extended to these language features.","PeriodicalId":434800,"journal":{"name":"Proceedings of 6th ACM International Workshop on Context-Oriented Programming","volume":"515 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123078532","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":"On-Demand Layer Activation for Type-Safe Deactivation","authors":"T. Kamina, Tomoyuki Aotani, Atsushi Igarashi","doi":"10.1145/2637066.2637070","DOIUrl":"https://doi.org/10.1145/2637066.2637070","url":null,"abstract":"Dynamic layer deactivation in context-oriented programming (COP) allows a layer to be dynamically disabled in the running application in a disciplined way. Deactivating a layer may lead to an error if there is another layer which has been activated but depends on the deactivated layer in the sense that the latter calls a method that exists only in the former. A type system or static analysis might be able to check the absence of such depending layers at each deactivation point but it would not be very easy, especially in the open-world setting. We argue that the on-demand activation, which implicitly activates all layers on which currently activated layer depends, addresses this problem. In this mechanism, the precedent layer deactivation is canceled when the depending layer requires the implementation of the deactivated layer. This means that this mechanism can ensure that all method calls succeed without performing the checks of absent depending layers, which simplifies the type system. We formalize this idea as an extension of ContextFJ, a COP extension of Featherweight Java, and prove its type soundness.","PeriodicalId":434800,"journal":{"name":"Proceedings of 6th ACM International Workshop on Context-Oriented Programming","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134135914","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":"Unifying Multiple Layer Activation Mechanisms Using One Event Sequence","authors":"Tomoyuki Aotani, T. Kamina, H. Masuhara","doi":"10.1145/2637066.2637068","DOIUrl":"https://doi.org/10.1145/2637066.2637068","url":null,"abstract":"Different context-oriented programming languages try to capture contexts with respect to different things, including a computation, an object, and a device that executes a program, by providing different layer activation mechanisms. When we want to exploit all of those different kinds of contexts at the same time, it is not clear how the effects of those contexts should be combined. We develop LamFJ, a calculus for expressing various layer activation mechanisms. It replaces the with and without expressions in ContextFJ with four expressions that fire context change events, which models changes of each context. LamFJ is not only powerful enough to express multiple layer activation mechanisms but also clearly defines combined effects of those mechanisms. In addition to the supported layer activation mechanisms in the paper, namely imperative activation, per-object activation and dynamic scoping, we aim at supporting other mechanisms like reactive and structural activation with small extensions.","PeriodicalId":434800,"journal":{"name":"Proceedings of 6th ACM International Workshop on Context-Oriented Programming","volume":"84 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124839330","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":"Program Execution Environments as Contextual Values","authors":"Markus Raab, F. Puntigam","doi":"10.1145/2637066.2637074","DOIUrl":"https://doi.org/10.1145/2637066.2637074","url":null,"abstract":"Context-oriented programming (COP) provides a very intuitive way to handle run-time behavior varying in several dimensions. However, COP usually requires major language extensions and implies a considerable performance loss. To avoid language extensions we propose to specify program execution environments as contextual values in separate units. A tool translates such specifications into C++ classes usable in the rest of the program. Without the need of multiple dispatch, the performance can largely profit from simple caching. Furthermore, it is easy to support debugging and store contextual values in configuration files.","PeriodicalId":434800,"journal":{"name":"Proceedings of 6th ACM International Workshop on Context-Oriented Programming","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125755295","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}