Document Type



Available under a Creative Commons Attribution Non-Commercial Share Alike 4.0 International Licence


Computer Sciences

Publication Details

International Journal of Computer Science and Information Technology 1(1).


This article proposes a new paradigm for building an adaptive middleware that supports software systems with self-adaptability and dependability. In this article, we wish to explore how far we can support the engineering of self- adaptive applications using a generic and platform-independent middleware architecture provided by non-specialised programming languages such as Context-Oriented Programming (COP), and Aspect-Oriented Programming (AOP), and not limited to a specific platform or framework. This gives the software developers the flexibility to construct a self-adaptive application using a generic and reusable middleware components that employ popular design patterns, instead of forcing the software developers to use a specific programming language or framework to implement self- adaptive software in mobile computing environment, which are heterogeneous and resource-constrained.

Our middleware approach, Context-Oriented Software Middleware (COSM), supports context-dependent soft- ware with self-adaptability and dependability in a mobile computing environment. The COSM-middleware is a generic and platform-independent adaptation engine, which performs a runtime composition of the software’s context-dependent behaviours based on the execution contexts. Our middleware distinguishes between the context-dependent and context-independent functionality of software systems. This enables the COSM-middleware to adapt the application behaviour by composing a set of context-oriented components, that implement the context-dependent functionality of the software. Accordingly, the software dependability is achieved by considering the functionality of the COSM-middleware and the adaptation impact/costs. The COSM-middleware uses a dynamic policy-based engine to evaluate the adaptation outputs, and verify the fitness of the adaptation output with the application’s objectives, goals and the architecture quality attributes. These capabilities are demonstrated through an empirical evaluation of a case study implementation.