Abstract
The World Wide Web has become an increasingly import business area for
the software industry. When developing modern web applications established
companies compete with young start-ups about the user’s attention. Short
development cycles and the ability to quickly implement new features have
become prerequisites to success. More complex requirements enforce the need
for better application models, in order to implement simple and concise software
systems.
Mastering cross-cutting concerns forms the basis to build maintainable
applications. In modern web applications these concerns are often features
which depend on the current context of the user. Output might differ when
the site is accessed with a mobile device or certain features are only available
in special payment plans. Therefore the activation of these should be coupled
to the request context.
Context-oriented programming (COP) techniques explicitly address these
needs. In COP context-dependent features are grouped inside of layers extending
the regular object-oriented model. At runtime it is possible to dynamically
activate layers in a dynamic extent such that context-dependent
behavior is isolated in that part of the system. Therefore it is not only possible
to group otherwise scattered definitions of a cross-cutting concern, but
to avoid the repetitive analysis of the current context by centralizing layer
activation.
ContextR implements a COP library in Ruby. ContextWiki is using COP
and ContextR to implement a collaboration wiki matching many criteria of
modern web applications. During the design of ContextWiki core concerns
located in the basic object-oriented application model were separated from
context-dependent features implemented in layers extending the basic model.
In that way it was possible to preserve a simple and concise software system.
ContextWiki and ContextR successfully integrate context-dependent
behavior into an object-oriented model.
Users
Please
log in to take part in the discussion (add own reviews or comments).