Monday, May 11, 2009

A survey of Adaptive Middleware

  • Middleware is connectivity software that encapsulates a set of services residing above the network operating system layer

Taxonomy of Middleware (Emmerich)
  • Transactional
  • Message-oriented
  • Object-oriented
  • Procedural

Types of Object-oriented programming models
  1. CORBA
  2. RMI
  3. DCOM

Supporting paradigms for adaptation include:
  • Computational Reflection:
  • Component-based design
  • Aspect oriented programming
  • Software design patterns
Computation Reflection:
  • the ability of a program to reason about and alter its own behavior
- Reflective Systems (Base-level objects): functinal aspects of the syste
- Self representation (meta-level objects): implementation aspects of the system
- MOP (meta object protocol): an interface to inspect and modify the base level objects

*Behavioral reflection in middleware: modify the behavior of a program by generating code at the self representation level and injecting it to the base level

Component-based design:

components are self-contained
large scal reuse of components for COTS
late composition and late binding are supported

Examples: DCOM, EJB, Corba Component Model (CCM)

Aspect Oriented Programming

* intervened cross-cutting concerns in complex programs
* disentangling the cross cutting concerns leads to simpler software development, maintenance, and evolution

Software Design Patterns
The goal of software design patterns is to create a common vocabulary for communicating insight and experience about recurring problems and their known refined solutions

4.Taxonomy of Adaptive Middleware

1. Schmidt's classification:
  • host infra-structure: higher level API than the OS, NP, generic services
  • distributioin: RMI, solves heterogenity of NPs and OSs
  • common services: common functionalities such as fault tolerance, security, load balancing, event propagaion, logging, persistence, ...
  • domain services: specific class of distributed applications
  • application
2. Adaptation type
  • Customizable -> static compile time
  • Configurable -> static, before starting the system
  • Tunable-> dynamic, before using the system. The middleware core remains intact
  • Mutable-> dynamic during run-time
3. Application Domain
  • QoS
  • Dependable
  • Embedded
QoS-oriented middleware is classified to the following categories:
  • Real-time middleware
  • Stream-oriented middleware
  • Reflection-oriented middleware
  • Aspect-oriented middleware
Reflection
  • Structural: ability of a system to inspect and modify its internal architecture (architecture and interface)
  • Behavioral: ability of a system to inspect and modify its computation(interception and resources)
Existing Aproaches and middleware system

Ace
  • Layer: Host-infrastructure
  • Pattern: Service configurator pattern
  • Type: repeatedly tunnable middleware
ACE ORB (TAO)
  • Pattern: Strategy Design Pattern
  • Type: configurable middleware - repeatedly tunnable middleware
  • Layer: distribution
Component-Integrated ACE ORB (CIAO)
  • Pattern: component based design
  • Layer: distribution
  • Type: configurable middleware
DynamicTAO
  • Pattern: Service configurator
  • Type: repeatedly tunnable middleware
OpenORB
  • component based design
Squirrel
  • Layer: distribution
  • Type: Tunnable and Mutable - (not repeatedly tunnable tho! tunning happens just once)
MetaSockets
  • Type: repeatedly tunnable middleware
  • Layer: Host infra-structure layer
OpenCorba
  • Type: repeatedly tunnable middleware
  • Layer: Distribution
FlexiNet
  • both fine-grained (per interface) and coarse grained adaptation

No comments: