1 5/30/98LCR ‘98 BBN Technologies QoS Aspect Languages and their Runtime Integration Joseph P. Loyall, David E. Bakken, Richard E. Schantz, John A. Zinky,

Slides:



Advertisements
Similar presentations
COM vs. CORBA.
Advertisements

1 12/16/98DARPA Intrusion Detection PI Meeting BBN Technologies Toolkit for Creating Adaptable Distributed Applications Joe Loyall
Common Object Request Broker Architecture (CORBA) By: Sunil Gopinath David Watkins.
 Introduction Originally developed by Open Software Foundation (OSF), which is now called The Open Group ( Provides a set of tools and.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
Distributed components
1 12/10/03CCM Workshop QoS Engineering and Qoskets George Heineman Praveen Sharma Joe Loyall Richard Schantz BBN Technologies Distributed Systems Department.
CORBA Case Study By Jeffrey Oliver March March 17, 2003CORBA Case Study by J. T. Oliver2 History The CORBA (Common Object Request Broker Architecture)
1 Quality Objects: Advanced Middleware for Wide Area Distributed Applications Rick Schantz Quality Objects: Advanced Middleware for Large Scale Wide Area.
Introduction to Remote Method Invocation (RMI)
1 8/99 IMIC Workshop 6/22/2015 New Network ServicesJohn Zinky BBN Technologies The Need for A Network Resource Status Service IMIC Workshop 1999 Boston.
1 5/4/99ISORC ‘99 BBN Technologies An Object-level Gateway Supporting Integrated Property Quality of Service Rick Schantz John Zinky, David Karr, Dave.
Chapter 9: Moving to Design
1 FM Overview of Adaptation. 2 FM RAPIDware: Component-Based Design of Adaptive and Dependable Middleware Project Investigators: Philip McKinley, Kurt.
Introduction to Aspect- Oriented Programming CS 3360 Gregor Kiczales, et. al. Getting started with AspectJ, CACM, 44(10):59-65, October Fall 2012.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
1 4/20/98ISORC ‘98 BBN Technologies Specifying and Measuring Quality of Service in Distributed Object Systems Joseph P. Loyall, Richard E. Schantz, John.
1 05/01/02ISORC 2002 BBN Technologies Joe Loyall Rick Schantz, Michael Atighetchi, Partha Pal Packaging Quality of Service Control Behaviors for Reuse.
Understanding the CORBA Model. What is CORBA?  The Common Object Request Broker Architecture (CORBA) allows distributed applications to interoperate.
Secure Systems Research Group - FAU Aspects and mobile applications Sergio Soares Paulo Borba, “PaDA: A Pattern for Distribution Aspects” In Second Latin.
BBN Technologies Craig Rodrigues Gary Duzan QoS Enabled Middleware: Adding QoS Management Capabilities to the CORBA Component Model Real-time CCM Meeting.
COM vs. CORBA Computer Science at Azusa Pacific University September 19, 2015 Azusa Pacific University, Azusa, CA 91702, Tel: (800) Department.
Pattern Oriented Software Architecture for Networked Objects Based on the book By Douglas Schmidt Michael Stal Hans Roehnert Frank Buschmann.
MILCOM 2001 October page 1 Defense Enabling Using Advanced Middleware: An Example Franklin Webber, Partha Pal, Richard Schantz, Michael Atighetchi,
1 06/00 Questions 10/6/2015 QoS in DOS ECOOP 2000John Zinky BBN Technologies ECOOP 2000 Workshop on Quality of Service in Distributed Object Systems
Cli/Serv.: rmiCORBA/131 Client/Server Distributed Systems v Objectives –introduce rmi and CORBA , Semester 1, RMI and CORBA.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
1 10/20/01DOA Application of the QuO Quality-of-Service Framework to a Distributed Video Application Distributed.
WDMS 2002 June page 1 Middleware Policies for Intrusion Tolerance QuO Franklin Webber, Partha Pal, Chris Jones, Michael Atighetchi, and Paul Rubel.
Composing Adaptive Software Authors Philip K. McKinley, Seyed Masoud Sadjadi, Eric P. Kasten, Betty H.C. Cheng Presented by Ana Rodriguez June 21, 2006.
BBN Technologies a part of page 118 January 2001 Applications that Participate in their Own Defense (APOD) BBN Technologies FTN PI Meeting January.
1 APOD 10/19/2015 DOCSEC 2002Christopher Jones Defense Enabling Using QuO: Experience in Building Survivable CORBA Applications Chris Jones Partha Pal,
1 06/ /21/2015 ECOOP 2000 Workshop QoS in DOSJohn Zinky BBN Technologies Quality Objects (QuO) Middleware Framework ECOOP 2000 Workshop QoS in DOS.
Advanced Computer Networks Topic 2: Characterization of Distributed Systems.
Spring/2002 Distributed Software Engineering C:\unocourses\4350\slides\DefiningThreads 1 RMI.
Abhishek Bachchan Vishal Patangia
1 10/23/98Lunchtime Meeting BBN Technologies Toolkit for Creating Adaptable Distributed Applications Joe Loyall, Rick Schantz, Rodrigo Vanegas, James Megquier,
1 Applying Adaptive Middleware, Modeling, and Real-Time CORBA Capabilities to Ensure End-to- End QoS Capabilities of Video Streams BBN Technologies Cambridge,
SCALABLE EVOLUTION OF HIGHLY AVAILABLE SYSTEMS BY ABHISHEK ASOKAN 8/6/2004.
RMI remote method invocation. Traditional network programming The client program sends data to the server in some intermediary format and the server has.
RMI Remote Method Invocation Distributed Object-based System and RPC Together 2-Jun-16.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Introduction to Spring Remoting Simplifying.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
Aspect-Oriented Programming w/AspectJ™ Cristina Lopes, Gregor Kiczales Xerox PARC © Copyright 1998, Xerox Corporation. All Rights Reserved.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Update on CORBA Support for Babel RMI Nanbor Wang and Roopa Pundaleeka Tech-X Corporation Boulder, CO Funded by DOE OASCR SBIR.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 BBN Technologies Quality Objects (QuO): Adaptive Management and Control Middleware for End-to-End QoS Craig Rodrigues, Joseph P. Loyall, Richard E. Schantz.
1 010/02 Aspect-Oriented Interceptors Pattern 1/4/2016 ACP4IS 2003John Zinky BBN Technologies Aspect-Oriented Interceptors Pattern Dynamic Cross-Cutting.
GYTE - Bilgisayar Mühendisliği Bölümü Bilgisayar Mühendisliği Bölümü GYTE - Bilgisayar Mühendisliği Bölümü AN ARCHITECTURE FOR NEXT GENERATION MIDDLEWARE.
25 April Unified Cryptologic Architecture: A Framework for a Service Based Architecture Unified Cryptologic Architecture: A Framework for a Service.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
G.v. Bochmann, revised Jan Comm Systems Arch 1 Different system architectures Object-oriented architecture (only objects, no particular structure)
GRID ANATOMY Advanced Computing Concepts – Dr. Emmanuel Pilli.
Introduction to Aspect- Oriented Programming CS 3360 Gregor Kiczales, et. al. Getting started with AspectJ, CACM, 44(10):59-65, October Spring 2012.
Copyright 1997, 1998 Xerox Corporation - Dijkstra, A discipline of programming, 1976 last chapter, In retrospect “To my taste the main characteristic of.
Basic Characteristics of Object-Oriented Systems
Distributed Web Systems Distributed Objects and Remote Method Invocation Lecturer Department University.
Joe Loyall, Rick Schantz, Gary Duzan
Middleware Policies for Intrusion Tolerance
#01 Client/Server Computing
Lecture 21: Crosscutting Aspect-Oriented Programming
Inventory of Distributed Computing Concepts
Chapter 6 – Architectural Design
Chapter 5 Architectural Design.
Java Remote Method Invocation
#01 Client/Server Computing
Presentation transcript:

1 5/30/98LCR ‘98 BBN Technologies QoS Aspect Languages and their Runtime Integration Joseph P. Loyall, David E. Bakken, Richard E. Schantz, John A. Zinky, David A. Karr, and Rodrigo Vanegas BBN Technologies/GTE Internetworking Cambridge, Massachusetts, USA Fourth Workshop on Languages, Compilers, and Run-time Systems for Scalable Computers (LCR98) May 28-30, 1998 Carnegie Mellon University, Pittsburgh, Pennsylvania, USA

2 5/30/98LCR ‘98 BBN Technologies Many distributed systems have critical QoS requirements, e.g., real-time performance, fault tolerance, or dependability

3 5/30/98LCR ‘98 BBN Technologies Distributed object middleware has emerged to solve heterogeneity and distribution problems Middleware makes programming distributed applications easier Standard programming interfaces hide platform and system dependencies Standard protocols, e.g., message formats, allow applications on different systems to interoperate Middleware provides higher level, application oriented programming building blocks Host 2 Impl Host 1 Impl Applications Host 2 Simulation Distributed Object Middleware Impl IDL Collaborative Planning IDL Hosts/Systems Workflow

4 5/30/98LCR ‘98 BBN Technologies Wide-area distributed applications are (still) hard to build and maintain Current object-oriented middleware is not sufficiently transparent with respect to real-time, fault tolerance, and other non-functional issues, and does not sufficiently accommodate adaptive behavior WANs are unpredictable, dynamic environments Configuration for application changes over time Performance and system properties are buried under IDL’s functional interface, so one can’t easily help application adapt to changing environment reuse code for a new environment Programmers end up programming around the middleware to achieve real-time performance, predictability, security, etc. Host1 Client1 Host2 Client2 Host4 Client3 Object Resource Constrained Wide Area Network LAN Host3 Client4

5 5/30/98LCR ‘98 BBN Technologies Distributed object middleware with QoS extensions is a powerful abstraction layer on which to build applications Ethernet TCP/IP QoS ATM RSVP Multicast Collaborative Planning WorkFlow Simulation Applications for geographically dispersed, heterogeneous environments Distributed objects are the first abstraction layer that unifies CPU, storage, and communications This interface needs to be hidden from applications It is too complicated It is changing too quickly CORBA + QuO

6 5/30/98LCR ‘98 BBN Technologies System condition objects monitor QoS in the system system condition objects recognize changes in the system and notify the contracts that observe them QuO contracts notify client programs, users, managers, and other system condition objects through transition behavior System Condition Objects QuO applications specify, control, monitor, and adapt to QoS in the system Application Alternate Implementations Contract (operating regions) Servers Network ORB Replication Mgr Resource Reservation Manager IDS Specification of operating regions, alternate implementations, and adaptation strategies using QuO’s QDL Multiple layers of adaptation managers and mechanisms can adapt to changes in the system QuO contracts provide another layer of adaptation Client and user can also adapt Mechanisms and managers control QoS in the system a layer below QuO that provides ORB-level services, such as managed communi- cation, replication, or security contracts and delegates interface to these services through system condition objects

7 5/30/98LCR ‘98 BBN Technologies The QuO designer provides contracts, system condition objects, and delegates in the application Contracts summarize the possible states of QoS in the system and behavior to trigger when QoS changes –Regions can be nested, representing different epochs at which QoS information becomes available, e.g., negotiated regions represent the levels of service a client expects to receive and a server expects to provide, while reality regions represent observed levels of service –Regions are defined by predicates over system condition objects –Transitions specify behavior to trigger when the active regions change System condition objects are used to measure and control QoS –Provide interfaces to system resources, client and object expectations, mechanisms, managers, and specialized ORB functions –Changes in system condition objects observed by contracts can cause region transitions –Methods on system condition objects can be used to access QoS controls provided by resources, mechanisms, managers, and ORBs Delegates provide local state for remote objects –Upon method call/return, delegate can check the current contract state and choose behavior based upon the current state of QoS –For example, delegate can choose between alternate methods, alternate remote object bindings, perform local processing of data, or simply pass the method call or return through

8 5/30/98LCR ‘98 BBN Technologies QuO adds QoS control and measurement into the DOC remote method call ClientNetworkServer Application Developer Qosketeer Mechanism Developer Logical Method Call Client Delegate ORB Proxy Specialized ORB Contract SysCond Object Delegate ORB Proxy Specialized ORB Contract Network Mechanism/Property Manager SysCond

9 5/30/98LCR ‘98 BBN Technologies Major components of the QuO framework Quality Description Languages (QDL) –Analogous to CORBA’s Interface Description Language (IDL) –Support the specification of QoS contracts delegates and their adaptive behaviors connection, creation, and initialization of QuO application components –QuO includes code generators that parse QDL descriptions and generates Java and C++ code for contracts, delegates, creation, and initialization QuO Runtime Kernel –Contract evaluator –Factory object which instantiates contract and system condition objects System Condition Objects –Implemented as CORBA objects –We have a growing library of system condition objects for reuse

10 5/30/98LCR ‘98 BBN Technologies Overview of the QuO architecture System Conditions QuO Runtime System (Java) Application (C++ or Java) Functional Delegate (C++ or Java) premethod postmethod set client expectation ORB set object expectation system event Contract

11 5/30/98LCR ‘98 BBN Technologies Client Client Code Reference Delegate Proxy Connect Callback Factory QuO Kernel Syscond ORB Contract Network ControlManager QuO Kernel Contract SC ORB Proxy Object 1) Client calls delegate 2) Delegate evaluates contract 3) Measurement system conditions are signaled 4) Contract snapshots value of system conditions 5) Contract is re-evaluated 6) Region transitions trigger callbacks 7) Current region is returned 8) If QoS is acceptable, delegate passes the call to the remote object 9) Remote object returns value 10) Contract is re-evaluated... 11) Return value given to client Del. 9 Client calls delegate, which triggers contract evaluation and chooses behavior based upon current regions

12 5/30/98LCR ‘98 BBN Technologies Overview of Aspect-Oriented Programming A program is decomposed functionally into modules, objects, procedures, etc. as usual Aspects are programmed separately in special purpose languages –Aspects cross-cut the functional components –Traditionally are programmed by inserting code in many modules, throughout the system, resulting in a tangled mess of code –Examples of aspects are synchronization, instrumentation, data structure, QoS Code generators weave aspects into the functional modules

13 5/30/98LCR ‘98 BBN Technologies AOP enables separation of concerns class Book { private BookID id; private PostScript ps; private UserID borrower; public Book(String t, String a, String i, PostScript p) { id = new BookID(t,a,i); ps = p; } public UserID get_borrower() {return borrower;} public void set_borrower(UserID u) {borrower = u;} public PostScript get_ps() { return ps; } public BookID get_bid() { return id; } } class BookID { private String title; private String author; private String isbn; public BookID(String t, String a, String i) { title = t; author = a; isbn = i; } public String get_title() {return title;} } class User { private UserID id; Library theLibrary; Printer thePrinter; public User(String n) { id = new UserID(n); } public boolean getBook (String title) { BookID aBook=null; try{ aBook = theLibrary.getBook(id, title); } catch (RemoteException e) {} try { thePrinter.print(id, aBook); } catch (RemoteException e) {} return true; } public UserID get_uid() { return id; } } class UserID { private String name; public UserID(String n) { name = n; } public String get_name() { return name; } } interface LibraryInterface extends Remote { public BookID getBook(UserID u, String title) throws RemoteException; public PostScript getBookPS(BookID bid) throws RemoteException; } class Library extends UnicastRemoteObject implements LibraryInterface { Hashtable books; Library() throws RemoteException { books = new Hashtable(100); } public BookID getBook(UserID u, String title) throws RemoteException { System.out.println("REQUEST TO GET BOOK " + title); if(books.containsKey(title)) { Book b = (Book)books.get(title); System.out.println("getBook: Found it:" + b); if (b != null) { if (b.get_borrower() == null) b.set_borrower(u); return b.get_bid(); } return null; } public PostScript getBookPS(BookID bid) throws RemoteException { if (books.containsKey(bid.get_title())) { Book b = (Book)books.get(bid.get_title()); if (b != null) return b.get_ps(); } return null; } interface PrinterInterface extends Remote { public boolean print (UserID u, BookID b) throws RemoteException; } public class Printer extends UnicastRemoteObject implements PrinterInterface { private Vector jobs = new Vector(10, 10); private Library theLibrary; public Printer() throws RemoteException{} public boolean print (UserID u, BookID b) throws RemoteException{ PostScript ps=null; try{ ps = theLibrary.getBookPS(b); } catch (RemoteException e) {} Job newJob = new Job (ps, u); return queue(newJob); } boolean queue(Job j) { //... return true; } “weaver” public class PrinterImpl { String status = “Idle” Vector jobs; public PrinterImpl() {} pubilc get_status() { return status } public add_job(int j) { jobs.add(j); } class Library { Hashtable books; Library(){ books = new Hashtable(100); } public Book getBook(User u, String title) { System.out.println("REQUEST TO GET BOOK " + title); if(books.containsKey(title)) { Book b = (Book)books.get(title); System.out.println("getBook: Found it:" + b); if (b != null) { if (b.get_borrower() == null) b.set_borrower(u); return b; } return null; } class User { private String name; Library theLibrary; Printer the; Printer public User(String n) { name = n; } public boolean getBook (String title) { Book aBook = theLibrary.getBook(this, title); thePrinter.print(this,aBook); return true; } class Book { private String title; private String author; private String isbn; private PostScript ps; private User borrower; public Book(String t, String a, String i, PostScript p) { title = t; author = a; isbn = i; ps = p; } public User get_borrower() {return borrower;} public void set_borrower(User u) {borrower = u;} public PostScript get_ps() { return ps; } } portal Printer { void print(Book book) { book: Book: {direct pages;} } portal Library { Book find (String title){ return: Book: {copy title, author, isbn;} } 4 classes 2 aspects class Book { private BookID id; private PostScript ps; private UserID borrower; public Book(String t, String a, String i, PostScript p) { id = new BookID(t,a,i); ps = p; } public UserID get_borrower() {return borrower;} public void set_borrower(UserID u) {borrower = u;} public PostScript get_ps() { return ps; } public BookID get_bid() { return id; } } class BookID { private String title; private String author; private String isbn; public BookID(String t, String a, String i) { title = t; author = a; isbn = i; } public String get_title() {return title;} } class User { private UserID id; Library theLibrary; Printer thePrinter; public User(String n) { id = new UserID(n); } public boolean getBook (String title) { BookID aBook=null; try{ aBook = theLibrary.getBook(id, title); } catch (RemoteException e) {} try { thePrinter.print(id, aBook); } catch (RemoteException e) {} return true; } public UserID get_uid() { return id; } } class UserID { private String name; public UserID(String n) { name = n; } public String get_name() { return name; } } interface LibraryInterface extends Remote { public BookID getBook(UserID u, String title) throws RemoteException; public PostScript getBookPS(BookID bid) throws RemoteException; } class Library extends UnicastRemoteObject implements LibraryInterface { Hashtable books; Library() throws RemoteException { books = new Hashtable(100); } public BookID getBook(UserID u, String title) throws RemoteException { System.out.println("REQUEST TO GET BOOK " + title); if(books.containsKey(title)) { Book b = (Book)books.get(title); System.out.println("getBook: Found it:" + b); if (b != null) { if (b.get_borrower() == null) b.set_borrower(u); return b.get_bid(); } return null; } public PostScript getBookPS(BookID bid) throws RemoteException { if (books.containsKey(bid.get_title())) { Book b = (Book)books.get(bid.get_title()); if (b != null) return b.get_ps(); } return null; } interface PrinterInterface extends Remote { public boolean print (UserID u, BookID b) throws RemoteException; } public class Printer extends UnicastRemoteObject implements PrinterInterface { private Vector jobs = new Vector(10, 10); private Library theLibrary; public Printer() throws RemoteException{} public boolean print (UserID u, BookID b) throws RemoteException{ PostScript ps=null; try{ ps = theLibrary.getBookPS(b); } catch (RemoteException e) {} Job newJob = new Job (ps, u); return queue(newJob); } boolean queue(Job j) { //... return true; } Traditional: Code to handle different data representations is tangled throughout the classes Aspect-oriented: Program is divided into classes and aspects; a code weaver puts them together Figures copyright 1997, 1998 Xerox Corporation

14 5/30/98LCR ‘98 BBN Technologies QuO’s aspect languages, aka Quality Description Languages (QDL) Contract Description Language (CDL) –expected regions of QoS –reality regions of QoS –transitions for adapting to changing levels of service Structure Description Language (SDL) –behavior alternatives for remote objects and their delegates –alternate bindings and connection strategies Resource Description Language (RDL) –available system resources and their status Implementation CDLSDLRDL QDL IDL QDL + IDL Compiler QuO application QuO Runtime ORB

15 5/30/98LCR ‘98 BBN Technologies Measured capacity >= 10 As_expected: Insufficient_resources: Measured capacity < 10 Contracts summarize system conditions into negotiated and reality regions and define transitions between them Negotiated regions represent the expected behavior of client and server objects, and reality regions represent observed system behaviors Predicates using system condition objects determine which regions are valid Transitions occur when a region becomes invalid and another becomes valid Transitions might trigger adaptation by the client, object, ORB, or system Normal: Expected capacity >= 10 Degraded: Expected capacity < 10 Expected capacity >= 2 As_expected: Extra_resources: Measured capacity < 10 Measured capacity >= 2 Measured capacity < 2 Insufficient_resources: Measured capacity >= 10 Unusable: Expected capacity < 2 As_expected: Extra_resources: Measured capacity < 2 Measured capacity >= 2 = Expected Region = Reality Region

16 5/30/98LCR ‘98 BBN Technologies Quality Description Languages for specifying operating regions and adaptive behaviors CORBA IDL typedef sequence LongSeq; interface Targeting { long calculate_distance_to_target(in long xcoord, in long ycoord); long identify_target(in long xcoord, in long ycoord); }; Code Generators Code Generators contract Replication( object client, object server ) is... negotiated regions are region Low_Cost :... region Available : when client.expectations.requested > 1 => reality regions are region Too_Low : when measured region Normal : when measured > 1 => transitions are transition any->Too_Low : client.callbacks.availability_degraded(); transition any->Normal : client.callbacks.availability_back_to_normal();... transitions are... end Replication; delegate behavior for Targeting and repl_contract is obj : bind Targeting with name SingleTargetingObject; group : bind Targeting with characteristics { Replicated = True }; call calculate_distance_to_target : region Available.Normal : pass to group; region Low_Cost.Normal : pass to obj; region Available.TooLow : throw AvailabilityDegraded; return calculate_distance_to_target : pass_through; default : pass_through end delegate behavior; SDL QuO Runtime ContractDelegate CDL

17 5/30/98LCR ‘98 BBN Technologies CDL contract to control object replication contract Replication( object client, object server ) is var measured : measured_replication init(); negotiated regions are region Low_Cost : when client.expectations.requested == 1 => reality regions are region Too_Low : when measured == 0 => region Normal : when measured == 1 => region Too_High : when measured > 1 => transitions are transition any->Too_Low : client.callbacks.availability_degraded(); transition any->Normal : client.callbacks.availability_back_to_normal(); end transitions; end reality regions; region High_Avail : when client.expectations.requested > 1 => reality regions are region Too_Low : when measured region Normal : when measured > 1 => transitions are transition any->Too_Low : client.callbacks.availability_degraded(); transition any->Normal : client.callbacks.availability_back_to_normal(); end transitions; end reality regions; transitions are transition Low_Cost->High_Avail : adjust_degree_of_replication(client.expectations.requested); transition High_Avail->Low_Cost : adjust_degree_of_replication(client.expectations.requested); end transitions; end negotiated regions; end Replication;

18 5/30/98LCR ‘98 BBN Technologies SDL code that supports choosing between replicated and non- replicated server objects delegate behavior for Targeting and repl_contract is obj : bind Targeting with name SingleTargetingObject; group : bind Targeting with characteristics { Replicated = True }; call calculate_distance_to_target : region Available.Normal : pass to group; region Low_Cost.Normal : pass to obj; region Available.TooLow : throw AvailabilityDegraded; return calculate_distance_to_target : pass_through; default : pass_through end delegate behavior; SDL supports choosing between objects, choosing between methods, run-time binding, exceptions, and embedded Java or C++ code.

19 5/30/98LCR ‘98 BBN Technologies Status of QuO QuO version 0.5 (internal release only) done, including the QuO kernel; two aspect languages, CDL and SDL, and their code generators, i.e., weavers; and a small library of system condition objects Currently working on two prototype applications of QuO –AQuA, which addresses availability through object replication –DIRM, which addresses managed communication through resource reservation Continuing development of the QuO framework –Multiple contracts, layering of delegates, contracts on the client and the server side –Further SDL development, including connection generation, and RDL –More example applications, libraries of system condition objects