Some “non-” or “extra-functional” features, such as reliability, security, and tracing, defy modularization mechanisms in programming languages. This makes such features hard to design, implement, and maintain. Implementing such features within a single platform, using a single language, is hard enough. With distributed, heterogeneous systems, these features induce complex implementations which crosscut different languages, OSs, and hardware platforms, while still needing to share data and events. Worse still, the precise requirements for such features are often locality-dependent and discovered late (
security policies). This paper describes an interface description language, Dado, to help program crosscutting features in CORBA based middleware software through an aspect-oriented programming. A Dado specification comprises pairs of
which are explicitly modeled in an extended version of CORBA IDL. Dado supports flexible and type-checked interactions (using generated stubs and skeletons) between adaptlets and between objects and adaptlets. Dado also supports co-ordinated, run-time binding of adaptlet-based features to applications in a distributed setting.