6 research outputs found
A Context-Oriented Extension of F#
Context-Oriented programming languages provide us with primitive constructs
to adapt program behaviour depending on the evolution of their operational
environment, namely the context. In previous work we proposed ML_CoDa, a
context-oriented language with two-components: a declarative constituent for
programming the context and a functional one for computing. This paper
describes the implementation of ML_CoDa as an extension of F#.Comment: In Proceedings FOCLASA 2015, arXiv:1512.0694
A Type System for First-Class Layers with Inheritance, Subtyping, and Swapping
Context-Oriented Programming (COP) is a programming paradigm to encourage
modularization of context-dependent software. Key features of COP are
layers---modules to describe context-dependent behavioral variations of a
software system---and their dynamic activation, which can modify the behavior
of multiple objects that have already been instantiated. Typechecking programs
written in a COP language is difficult because the activation of a layer can
even change objects' interfaces. Inoue et al. have informally discussed how to
make JCop, an extension of Java for COP by Appeltauer et al., type-safe.
In this article, we formalize a small COP language called ContextFJ
with its operational semantics and type system and show its type soundness. The
language models main features of the type-safe version of JCop, including
dynamically activated first-class layers, inheritance of layer definitions,
layer subtyping, and layer swapping
Context-aware security: Linguistic mechanisms and static analysis
Adaptive systems improve their efficiency by modifying their behaviour to respond to changes in their operational
environment. Also, security must adapt to these changes and policy enforcement becomes dependent on the dynamic contexts.
We study these issues within MLCoDa, (the core of) an adaptive declarative language proposed recently. A main characteristic
of MLCoDa is to have two components: a logical one for handling the context and a functional one for computing. We extend
this language with security policies that are expressed in logical terms. They are of two different kinds: context and application
policies. The first, unknown a priori to an application, protect the context from unwanted changes. The others protect the
applications from malicious actions of the context, can be nested and can be activated and deactivated according to their scope.
An execution step can only occur if all the policies in force hold, under the control of an execution monitor. Beneficial to this is
a type and effect system, which safely approximates the behaviour of an application, and a further static analysis, based on the
computed effect. The last analysis can only be carried on at load time, when the execution context is known, and it enables us to
efficiently enforce the security policies on the code execution, by instrumenting applications. The monitor is thus implemented
within MLCoDa, and it is only activated on those policies that may be infringed, and switched off otherwise