OMG OMA-NG Green Paper (original) (raw)
Thoughts on OMA-NG:
The Next Generation Object Management Architecture
Object Services and Consulting, Inc.
Ted Linden and Bob Filman
Microelectronics and Computer Technology Corporation (MCC)
OMG document ormsc/97-09-01
Abstract: The OMG Object Management Architecture (OMA) has proven to be a successful foundation for achieving distributed, interoperable systems. However, the OMA faces challenges, both internally and from competitors, to raise the level of support it provides. In the near future, it will no longer be good enough for an architecture to merely enable the desired behavior (program semantics). Instead, there are a host of other system properties, or "ilities" (e.g., reliability, interoperability, security, quality of service, manageability, extensibility, and scalability) that users will rightly come to expect the OMA to support.
The OMG Object Management Architecture Reference Model (OMA-RM) and the containing OMA Guide, once was (and still ought to be) the central architectural handbook of OMG. The Object and Reference Model Subcommittee (ORMSC) is presently considering updates to these documents. This architectural "green paper" proposes some areas for discussion that we hope will ultimately lead to improving the OMA-RM and OMA Guide. Our focus is on extending the ORB and services model of OMA to an integrated set of services that enable and enforce ilities.
- Problem, Objective, Impact
- OMG Object Management Architecture Today
- Possible Extensions to the OMA
- **architectural principles and properties (the -ilities)**- architectural properties (-ilities), frameworks
- composability and componentware - containment model, binding time, packages, interceptors, extensions, guards, economic model
- scalability via federation
- **performance guarantees and system management**- real-time, quality of service, system management
- convergence with the competition - componentware, Java, web, DBMS, KBMS, mobile code, agent management architecture, RM-ODP, patterns
- other extensions - semantics, object model extensions, domain interface architecture, needed interfaces
- Recommendations
Problem, Objective, Impact
OMG is currently considering the problem of how to update its "Object Management Architecture Reference Model" (OMA-RM). The OMA-RM is a chapter in its_OMA Guide_, the central architectural handbook of OMG. The Object and Reference Model Subcommittee (ORMSC), reporting to the OMG Architecture Board, has been formed with that revision as part of its charter. This document is a position paper for consideration by ORMSC.
The OMA-RM has served OMG well since 1990. It is both an explanation of the current OMG architecture and a guide to the evolution of that architecture. However, seven years is a long time in the computer field. We assert that it's now time to discuss and revise the OMA-RM to reflect current reality and to facilitate future development. We hope this green paper will provide some useful insights on architectural directions, particularly with respect to componentware, composing components, building scalable systems, and the interactions of components in achieving software ilities. We discuss several specific candidate upgrades to the current OMA-RM and _OMA Guide_and provide a list of areas where more work is needed to better understand and extend the OMA.
The Object Management Architecture Today
OMA-RM and OMG architecture
The "Object Management Architecture Reference Model" was published in 1990 as part of the OMG Object Management Architecture Guide. In addition to the OMA-RM, the OMA Guide contains additional supporting material, including chapters entitled "Introduction" and "Overview" (describing OMG goals and benefits), "Technical Objectives", and "The Object Model," appendices "Glossary" and "Policies and Procedures." Revisions of OMA-RM in 1992 and 1995 made small additions, and a more substantial revision was approved in August, 1996, but is not yet part of the currently published OMA Guide. For the purposes of this paper, we will use the term OMA-RM to refer specifically to the reference model and OMA generally to refer to the entire body of OMG architecture specifications. These include the architectural principles, Common Object Request Broker Architecture, Object Services Architecture, Common Facilities Architecture, Domain Interfaces, and all adopted specifications (even specifications in process).
What the OMA-RM itself explains.
By design, the OMA-RM is a high level architecture. Its function has been "to map out areas to be addressed rather than to impose design constraints." Its modus operandi has been to identify major components without itself defining detailed interface specifications. The OMG technology adoption process takes care of such specifications. OMA-RM has evolved in several steps:
- OMA RM 1.0 � The original 1990 OMA-RM described how objects make requests and receive responses and abstractly described the Object Request Broker, Object Services, Common Facilities, and Application Objects. It included the distinction between object interfaces and implementations that permitted non-object-oriented software to be wrapped in objects that participate in the OMA.
- OMA RM 2.0 � The 1992 revision added the Interface Description Language and CORBA.
- OMA RM 3.0 � The 1995 revision (the current official version, ab/97-05-05) removed some examples of object services and common facilities, replacing them with explicit reference to adopted CORBAservices and CORBAfacilities. The glossary has been slightly reduced from the 1992 version. The object model chapter has been revised into the "Core Object Model."
- A 1996 revision of OMA RM by Geoff Lewis at the Madrid OMG meeting was approved by the OMG Architecture Board (I think). It removed examples of object services and common facilities, replacing them with explicit reference to adopted CORBAservices and CORBAfacilities; and added a paragraph on Domain Interfaces and three pages on Object Frameworks. The latter describes a hierarchy of application, domain, common facility, and object service frameworks that are compositions (e.g., by interface inheritance or client requests) of application, domain, common facility, and object service objects. This included the conceptual notion that higher level objects may call lower level objects (e.g., common facilities call object services). It says that the specification of an Object Framework "defines such things as the structure, interfaces, types, operation sequencing, and qualities of service of the objects that make up the framework." The 1996 OMA-RM was just seven pages long.
- Discussion of the Object Management Architecture (http://www.omg.org/library/oma1.htm) Another version of the OMA-RM and some of the chapters in the OMA Guide was developed for the CORBA Academy and appears in online. It includes the 1996 RM and includes descriptions of adopted object services. What the OMA-RM does not explain
The OMA-RM does not explain nor does it preclude a long list of desirable architectural extensions. Some of these are presaged in the original OMA Guide "Overview" and "Technical Objectives" sections but are not yet realized in the OMA. They are candidates for addition to these sections. In the next section, we examine several such extensions and discuss the virtue of extending the OMA to cover them.
Possible Extensions to the OMA
We've organized our set of architectural extensions to the OMA into the following subsections, working our way from the most general principles of software architecture to the specifics of interoperating in the real world:
- **architectural principles and properties (the -ilities)**- architectural principles, properties (ilities) and frameworks
- composability and componentware - containment model, binding time, packages, interceptors, extensions, guards, economic model
- scalability via federation
- **performance guarantees and system management**- real-time, quality of service, system management
- convergence with the competition - componentware, Java, web, DBMS, KBMS, mobile code, agent management architecture, RM-ODP, patterns
- other extensions - semantics, object model extensions, domain interface architecture, needed interfaces
Architectural Principles, Properties, and Frameworks
Architectural Principles
The OMA-RM does not explicitly mention the "architectural principles" that were first described in the Object Services Architecture and now appear in the RFP template. It should refer to these principles explicitly. The architectural principles should probably become a chapter or section in the OMA Guide.
Architectural Properties
The OMA-RM does not currently say much about desirable architectural properties (beyond interoperability).
Software is designed primarily to meet functional specifications---that is, to achieve particular input and output behavior. However, a well-designed system achieves an appropriate balance of other properties: those that encompass its ability to exist in its environment and evolve as that environment changes. Following evolving practice, we call these ilities [Table 1]. Ilities are architectural properties that often can cut across different levels or components of a system's architecture to be properties of the whole. Unlike simple functionality, ilities can include tradeoffs---for example, enhanced interoperability may have been produced at the cost of greater security. Although ilities are sometimes invisible properties of the system as a whole, they represent real (though perhaps unspoken or even unrealized) customer requirements. The enterprise architect or system architect is responsible for ensuring such ilities, and a most appropriate task for an architectural framework is to support them. Currently, the OMA does address security and is beginning to address quality of service, real-time, and composability. It's time for the OMG architecture to address other ilities, such as interoperability through time and space---that is, the ability to evolve to meet new demands. We discuss specific ilities in greater detail below.
- interoperability
- composability
- scalability
- evolvability
- extensibility
- tailorability
- security
- reliability
- adaptability
- survivability
- affordability
- maintainability
- understandability
- performance
- quality of service
- real-time
- nomadicity.
Table 1. Some Ilities
Frameworks
There has long been a question as to what the technical distinction is between object services and common facilities, even between_platform_ and domain (e.g., is workflow Platform or Domain Technical Committee?). Historically, such technical distinctions were mostly ignored and have mainly been treated as convenient intra-organizational divisions of labor.
But the 1996 OMA-RM section on frameworks is three pages long [In contrast, the domain interfaces section is a paragraph just four lines long.], describes an explicit hierarchy of application objects, domain objects, common facilities, and object services, and gives no concrete examples of object frameworks so they remain abstract. Frameworks appear to be constellations of objects that operate together. But most object services and common facilities define more than one object class. So it is not really clear how common facilities and common facility frameworks would differ. For instance, are OODBs, workflow systems, KBMS systems, repository management systems, and BOFs frameworks or are common facilities? The section on frameworks needs to be re-thought since at present frameworks are really a research area at OMG.
Composability and Componentware
From the beginning, high level goals of OMG have included reusability, interoperability, extensibility, and dynamic evolution. OMG customers have wanted the ability to assemble applications quickly from standard parts, and OMA framework users were seeking consistent semantics for how shared services work when using the full suite of OMG specifications. We have made good progress on separable specifications but have said too little about composition of services and facilities. Current specifications do not provide enough information to realize the desirable the goals of being able to mix-and-match and plug-and-play with alternate implementations of services or facilities.
Composing services with application objects
Current OMG service specifications assume that the application developer understands all the relevant services and invokes them when appropriate. This means that calls to specific service functions (including implementation specific options) become deeply interwoven with the application logic. The interweaving of separate concerns is especially serious in the cases where the service requires insertion of functionality at the calling side of an interaction, as occurs with services such as encryption, authentication, and replication.
To make services appear as componentware within an application, we need better and more structured ways of adding services while minimizing their impact on the application code. Often, service functions can be implicit in application method invocations. Frameworks can protect the application code from being intertwined with calls to service functions. However, it is not clear how to add (chain?) or control implicitly specified services. Binding times for adding services are not specified nor is there any mechanism to control which users can add services dynamically.
Service Interactions
Before the ORB bus architecture was adopted in 1989-90, some people argued that both versions and DBMS functionality were needed. While it was clear that services needed to interact, no one was satisfied with any particular block diagram or calling tree showing particular services explicitly calling other services. The CORBA bus architecture, with its uniform set of services hanging from the bus seemed to be a good solution. It allowed separately specified services and deferred the issues of service composition. OMG has followed this course for the last eight years. But we still have little experience connecting the services on the bus together to do useful work. [According to the IEEE, an architecture is a collection of functions and interconnections. Interconnections reveal the relationship between the functional components. Ironically, by mapping calling trees to a set of functions communicating over a single message dispatch bus, OMG has provided only the definition of functions and not the information about interconnections.]
This legacy is visible in OMG discussions about specifying CORBAservices. Such discussions are marked by a tendency to state that one service might depend on another without explicitly committing to such dependencies. Another manifestation is seen in the use of IDL. An object's IDL encapsulates its implementation with no mention of service dependencies. (One must examine the implementation to discover them.) On the positive side, this provides implementation independence for clients of interfaces. On the negative side, it prevents service substitutability and leads to application bloat and large, monolithic ORB's. A side effect is that a high level component like a BOF or an application component may have no way to specify how it uses Object Services (if it does). OMG users expect higher level OMG objects like facilities to be composed partly from lower level services and they want the ability to spin out stable internal components for independent reuse.
Uses specification or Containment Model needed
Some sort of uses specification is needed to declaratively relate implementations to interfaces on which they depend. Alternatively, some sort of explicit containment graph is needed to relate a higher level component to components it contains or depends on. Hopefully, the_CORBA Component RFP_ will address this.
Binding Times
The OMA-RM does not address how dynamic the binding is for adding new services to existing frameworks (though the old Technical Objectives chapter of the OMA Guide did mention Extensible and dynamic changes like adding new implementations, replacing implementations where the interface has not changed, replacing implementations where the interface is changed, and changing the location of implementations).
Dynamic Dispatch, Interceptors and Extensions
Good news about the OMG bus architecture is that it promises flexibility. If object A calls object B using the bus architecture, then the call may be transparently local or remote and furthermore the call can be _intercepted_or filtered by any number of implicit operations which can be executed on the client or the server or somewhere in between to insure that concurrency control is respected if B is a shared object, that B is versioned or not, that A has authorization to access B, that B is coerced to a form that A can accept, that the replicated copies B' and B" receive copies of the request, and so forth. There is a long list of these implicit actions, or extensions. OMA needs a generic mechanism for specifying these implicit service actions without expecting the application programmer to understand and manage all this implicit functionality.
Many Kinds of Extensions, Need for Guards
The interceptors above are just some of a large family of implicit (or explicit) side-effect extension behaviors that set up _boundaries_that need guards to enforce that the extensional behavior is not bypassed. Others are:
- crossing intellectual property boundaries - license objects before use
- micropayment boundary - install payment and collection
- replication and consistency management - for availability and fault tolerance
- annotations - so comments and expertise from others can be added to a source object like a document
- derivation histories - so copied objects retain the source of the copy
- removing duplicate postings
- adding or filtering out advertisements (removing spam via keywords FREE, CASH, RICH, SALE, etc.)
More Packaging Technology Needed
Principled selection and decomposition into subcomponents can enable substitution and customization by developers other than the original designers. But there are reasons to hide containment information as well:
- Who can install Interceptors? If generic interceptors are used in applications, it must be that not just anyone anytime can install new interceptors. An obvious case is security. Here interceptors trap accesses to allow modular security checks. If anyone can add or modify a service's interceptors, then there can be no guarantees that the objects are guarded by interceptors. This implies that we need inviolate ways for application developers to package interceptors, controlling which can be added or removed and what information is available to each. And it must be understandable at a high enough level that it is easy to do and does not cause developer errors.
In a way, instead of putting data objects into a database, one can think of the data objects as guarded by a set of extensional behaviors like persistence, security, replication, versioning, distribution. What was formerly a monolithic DBMS might become a collection of guards that form a sort of DBMS exoskeleton. The flexibility is in being able to add new services modularly to the list to create the kind of data store you want. A puzzle for OMG is how to represent the list of behaviors (before and after methods, a schedule, context variable, and so forth) to insure proper control.
- Roles. Another architectural concept related to packaging not mentioned in the OMA Guide is roles. Different classes of developers might want to install different interceptors:
- the security group may want to insure that a certain security policy is followed
- the system management group may want to insure uniform system monitoring and may want a load balancing ability to move objects across distribution boundaries without affecting application semantics
- the configuration board may want to insure versioning
- a system administrator may want to insure that conversions occur to unpack compressed files
In some cases, a developer wants to install a certain family of interceptors and then seal off the ability of anyone else to augment (that part of) the interceptor list. (In fact, this corresponds to how we build stovepipe systems today as particular compositions of particular capabilities with little access to how to add other capabilities or customize or extend the ones that are in the system.)
If not everyone can replace at will any part of an OMG architecture at any time, then the abstract notion of roles is needed to complement the packaging idea. Roles might be global to an OMG system (e.g., CORBA vendor, developer, end-user) or local to an abstraction of the system (e.g., the system management role, the security administration role, the configuration management role, the DBA). At present in the OMA there is no structural way to associate roles with responsibilities over parts of the architecture. Roles appear to be related to packaging.
- Policies. If there are multiple implementations of services and variations on how the service can work then there also need to be _policies_that control the services' behavior.
Some related issues:
- Footprint. At present, applications or services are encapsulated and opaque. A user of several OMG applications whose implementations share common services may discover multiple copies of the same service in the execution environment. A containment model at least reduces this redundancy. The Java community has developed some approaches that help reduce this problem.
- Debugging and run-time fault resolution. One of the key problems with componentware is that system developers and run-time administrators find it very difficult to resolve faults that originate within "black-box" components. Finger pointing is a problem when there are N <=2 suppliers in a debug environment. To make componentware a reality, a set of services for pattern-directed tracing, logging, and monitoring will be useful.
- Complexity. Another problem with componentware is the same as with toolkits - too many interfaces are exposed. OMG provides a small forest of separable specifications. This has the benefits of conceptual isolation and potential reuse. However, it also has the drawback of complexity. Each application composes the services into the application in unique and idiosyncratic ways. Programmers are used to the complexity of subroutine and class libraries, and used to cursing the complexity of these libraries as they grow large. Distributed systems add the additional complication of requiring ilities to be implemented consistently, system-wide, throughout the application. It might make most sense if there are standard configurations of services and facilities (the analog of DBMS, KBMS, workflow, etc.) and interceptors dispatch to these (maybe that is what a common facility or a framework is, a named configuration?). The NIIIP Consortium uses such a mechanism, which it terms a virtual enterprise object - every ORB request is shunted through a VE gateway which governs a collection of common decisions made when the VE is constructed.
- Tailorability. How easy is it for a developer to tailor a system, framework, facility, or service developed by others to meet the developer's needs. What are the supported mechanisms? (e.g., subclassing, installing new interceptors, negotiation to be able to support a range of platform sizes) Given frameworks A and B with function f only available in B, how can users of framework A get this extra function f if they need it?
- Adaptability and Survivability. Can large systems developed with componentware gracefully degrade and still survive to provide a useful subset of their original mission?
- Multiple dispatch overloading mechanisms: are they all needed? Interceptors, POA, and Trader all provide a mechanism for implicitly calling some side-effect behavior. Trader appears to be separately useful but are both POA and interceptors needed?
- **Higher level Dynamic Dispatch Mechanisms than interceptors and POA.**Rules, filters, and before-and-after methods might provide higher level means of specifying implicit actions rather than using a low level mechanism like interceptors.
- Portability. Even assuming technical solutions for component isolation, the question remains how will OMG state _environmental constraints_on components. Components implemented by C++ may not port easily to other environments. Most legacy code encapsulated as components will be pinned to the environment it is compiled into. Only Java or other languages compiled with a virtual machine will have the portability requirements for components across a variety of platforms.
- Java Decompilation. Java bytecodes contain names of classes, methods, and fields and reverse compilers can reconstruct class definitions. Companies worry how to preserve their investments in designs. Better compiler technology can protect against decompilers by making reconstruction harder for third parties by mangling names or rearranging statements. But the main point is, this is a case where the developer role has self-interest in exposing only some interfaces.
- Visibility and Profiles. The notions of visibility and _profiles_mentioned in the old OMA Guide Introduction seem related to packaging:
- Visible and Invisible objects. Visible objects are identified and manipulated at service interfaces. _Invisible objects_are those whose behavior may affect behavior at the interface but are not directly identified or manipulated. It is not clear how to control visibility of objects in the OMA.
- Profiles. Also mentioned in the old OMA Guide are profiles, which are collections of OMG technology (object model capabilities, services and facilities) that can be extended for use by some technology community (e.g., OODBs) or domain community (e.g., CAD). This notion may need to be revisited since the extensions that are community idiosyncratic directly lead to interoperability problems at the borders of a profile, e.g., as when ODMG-profile data might need to be distributed via CORBA. Also, limits on expectations need to be understood better -- can STEP be viewed as an OMG profile just because there is a mapping from STEP to IDL? Closer to home, if UML introduces 80+ semantically useful constructs that users begin to use widely to represent their problems, does that constitute a profile just because there is a mapping to IDL? Users of the results of the mapping might need to be aware of the UML semantics as well as the details of the mapping to maintain their resulting OMG code.
- Economic Model. All of the considerations above are technical enablers to make it possible within the OMA to separately specify and control components. But it must be the case that an economic model for componentry exists as well. Even if it is possible to separately isolate components for reuse, there must be a marketplace for making them available. We view the emerging markets in ActiveX and JavaBeans components as an encouraging sign of this possibility.
Scalability and the Federation Pattern
Scalability is a desirable property of componentware: we want to build larger systems from components, unrestricted by the particular size or internal organization of the components.
One notion of scalability refers to the ability of a design to maintain a linear relationship between demands on a system and required resources. This is illustrated in the "Technical Objectives" chapter of the_OMA Guide_, where scalability is defined as "the effect on request processing times as the numbers of objects accessible to a client increases and the number of requests handled increases."
Build-time componentware definitions might cast scalability as the ability to build larger systems or systems of systems from component parts. An example would be composition as described above in which a common facility might be defined from object services, for example, an OODB as some composition of naming, persistence, query, transactions, security, etc.
An important variant to composition of parts to form a whole is the special case when the parts are similar. We can define _federation_to be the composition of like systems that operate together to form a higher level system. When there was just a single LAN-based CORBA, OMG could choose to not spend to much emphasis on federation interfaces. But with CORBA interoperability and Visigenics fanned out the the Netscape desktop, the number of machines connected to an ORB might go from 40 to 40 million. No longer should we assume that there is a single name service, a single transaction service, a single query service, a single trader, ... in such an environment. Minimally, we'd expect many instances of these services. And we'd expect them to interoperate with others of their kind, so that name services federate, transactions federate, and so on. Not only services but also facilities should federate so workflow, OODBs, simulations, etc. would intercommunicate with others of their own kind.
To achieve scalability via federation, OMG must address several architectural issues:
- In many cases, the result of a federation is recursively similar in interface to the base level services (e.g., a query service that has the same interface to child query services). But the result of a federation might be a different abstraction, so that a collection of softball players make up a team and team behave differently than individual players.
- Decentralizing control - While an architecture cannot guarantee a scalable system, certain architectural decisions can preclude it. Most obviously, positing a single, centralized locus of some activity imposes a ceiling (the point at which the demands on that locus degrade its performance) on the scalability of an architecture.
- Defining which interfaces of the components are interfaces of the federation as a whole and enforcing the interfaces required to participate in a federation. For instance, DBMS systems might federate by obeying the XA transaction protocol or they might federate via some mediating schema or both. The High Level Architecture is a federation architecture for simulations that abstracts out system time and inter-simulation events to allow new simulations to enter an HLA simulation by agreeing on the protocols that define these two area.
- Instances of a single service will vary by manufacturer, version, and features. We need these services to interoperate with others of their kind. For that to happen, services need policy interfaces to specify and later to negotiate and resolve semantic conflicts between confederates, e.g., no versioning and branching versioning, discretionary access control and mandatory access control. Given two services or frameworks that are alike in all ways except for some policy p that governs some service s, what can we say about how they interoperate modulo that policy? Taken together, with both composition and federation as ways of building complex systems from simpler ones, one can come back to the question of ilities and talk about end-to-end X or top-to-bottom X where X = security, QoS/bandwidth adaptive, real-time guarantees, optimization, maintainability, reliability, affordability, licenseability for reasonable cost, testability, understandability, seamlessness, evolvability, survivability, etc. When a system, for instance, a communications network is a federation of similar subsystems, then we can talk about end-to-end guarantees. When a systems is composed of parts, we can talk about _top-to-bottom_guarantees.
Performance Guarantees and System Management
It is hard to keep your promises if those promises depend on things you can't control. So an application that makes some form of performance or quality of service guarantee needs its underlying infrastructure to expose enough information or controls to enable the keeping of those promises. More globally, if an enterprise system is to know what kind of system-wide performance is being achieved, the system must expose enough information to allow that monitoring.
Real-time and QoS
Engineering is the process of trading among system attributes. Performance, precision, accuracy, and reliability pervade many components of a system. Real-time and Quality of Service both involve capturing traffic, accuracy, and other meta data from trend data and current data in a system and providing guarantees on certain outcomes, e.g., that a certain class of user might receive some negotiated level of service. Much of the QoS literature focuses on the issues of getting the underlying components (principally the network) to provide QoS guarantees to applications. Higher-level applications are said to be bandwidth-adaptive or QoS-aware if they can take special advantage of guarantees made by lower levels of the system to perform better and make further guarantees to their own customer applications.
So far CORBA, CORBAservices, or CORBAfacilities are QoS- and bandwidth-insensitive. This reflects the appropriate emphasis on the semantics of actions, rather than their pragmatic attributes. However, pragmatics also matters; the architecture needs interfaces for collecting system performance data and for exposing QoS constraints.
OMG is already actively focusing on real-time and QoS via the active Real-time SIG and QoS Working Groups. A reason to highlight these -ilities in this paper is just to remind us that some kinds of information that must be transmitted between components may be passed in ways other than functional IDL interfaces of the kinds so far specified in OMG. An implication for portability of service implementations is that the first generation of services and facilities will not be QoS-aware because there are not yet standard ways to transfer this kind of information. Another implication is that it is likely that OMG compliant first-generation QoS-unaware implementations should remain useful for many QoS-unaware uses (the majority of uses today) even when QoS guarantees are specifiable (that is, QoS-unaware will be a degenerate, special case of QoS-awareness in a similar way to version-unaware is a degenerate case of version-aware where the policy is to keep only the current version and similarly for many other services.)
System Management
We note that one reason many large installations are slow to adopt CORBA-based technology is the lack of system management facilities. System management involves performance measurement, accounting, intrusion detection and security, failure analysis and debugging, and configuration management. These elements have enough in common and are sufficiently fundamental to suggest their treatment in the OMG architecture at more than the "service" level. System management services are critical enablers for componentware because components are black boxes; all debugging must focus on the interaction between components.
Compressibility
Compressibility could have a significant impact on scalability, reliability, affordability, understandability, performance, and QoS in several different ways that affect bandwidth. Compressibility can be achieved by following architectural specifications on the representation and characterization of the data - the idea is that the message attribute could just state that it could be compressed/decompressed by an operator X which would result in a compression ratio Y but it would need CPU resources Z at the sending and V at the receiving end. This could be done independently from the data and application type, other than pointing to X. Then, the decision and the possible compression invocation would be transparently done in the pipe. This raises the issue of whether to overlay the OMA with an attribute driven metadata architecture, which would be useful for other services beyond compression.
Convergence with the Competition
Several current and emerging representational paradigms compete with OMG. Rather than having user communities scatter to a Babel of architectures, OMG must either provide a migration path or subsume the concepts of these alternatives. OMG may have had the first distributed architecture, but being first is not a guarantee of survival. This suggests extending the OMA Guide, (either in the chapter on OMA-NG or in the chapter on "Technical Objectives") to provide a road map for convergence with the following:
A Market for Components
Componentware is the industry buzzword for small isolatable chunks of software that can be assembled into large applications. We discussed above some of the concepts we believe are appropriate to an OMG notion of composition and federation of components. The notion of an economy of componentware is that components are vended separately by potentially many vendors. OMG has not yet really demonstrated itself to be a componentware community though we have taken great care to adopt an _isolation principle_for orthogonal object services. While there are many ORB vendors, there are relatively few object service providers and those mainly vend a collection of components from one vendor. This is, one's ORB vendor is often the source of one's CORBA services. There is not enough evidence of portable object services or higher level applications that are compositions of collections of services. Componentware does not _per se_require a certain variety of object technology. We note that the ActiveX/COM and more recently the JavaBeans environments have active componentware sub-industries. OMG has just issued Component Model and Component Scripting RFPs to try to jump-start OMG into contributing to the componentware movement.
Microsoft ActiveX and COM
OMG has already provided guidance in this area. Of course, this is a 600 pound gorilla force to be reckoned with with an active componentware marketplace.
Java
With Java on servers as well as on clients, Java and OMG are increasingly addressing the same market. It is an open question as to whether the Java and OMG specifications will converge. Java and IDL are at the same level of representational adequacy, but Java definitions come attached to a programming language. IDL is language neutral and IDL mappings have been defined for several programming languages. Java benefits from the greater semantic specificity an underlying language provides, but also has an emerging need to directly supply standard _Java to X_mappings for legacy language applications. Some of the distance between OMG and Java is narrowing: JavaSoft is moving toward OMG by adopting into its Enterprise Java both CORBA naming and transactions and making accommodations for OMG IIOP. OMG is likely to adopt a JavaBean-like component model, Java-based scripting (pure speculation of course!), and harmonization with Objects by Value, Multiple Interfaces, and Portable Object Adapter. Already, Java libraries are extensive, implemented and conveniently accessible. Momentum is high. OMG has a reasonable collection of specifications for middleware services so far unmatched by Java or ActiveX. And OMG has defined an IDL to Java mapping. But what happens when the Java class library community implements all the OMG services? Will the specifications be compliant to OMG services and the defined mappings? Or will variants spring up? One example is collection class libraries. OMG collections are not the same as ODMG collections which are not the same as C++ STL collections. Java collection classes seem more likely to be based on C++ STL. Will there be a time when OMG permits specifications described natively in Java which use Java-to-IDL mappings to insure backwards compatibility to IDL? Will that become the norm? Should we just go ahead and use the IDL to Java mapping to convert all OMG specs to Java now to make convergence easier? Or should we permit OMG specifications written in native Java (when we have IDL to Java and Java to IDL mappings)? Java may soon have its own standards body, similar but not the same as OMG. Java has the potential for producing real working libraries more quickly than the OMG process. If that happens, OMG might find itself less a visionary leader into new directions and more a redundant afterthought.
Web
Information once available only in local file systems is now available via the World Wide Web. The web architecture consists of lightweight clients providing a desktop, servers providing document content, and a means of accessing backend applications that provide semantics often accessible via CGI scripts. The addition of Java to the client and server side enhances the architecture. All this has been accomplished without the complexities and simplifications of formal specifications (i.e., IDL.). The recent addition by Netscape of Visigenic's ORB provides one reasonable way to glue the web and ORB architectures together. Interestingly, it is possible to imagine adding services to a URL Request Broker without ever introducing IDL, CORBA, or OMA. For instance, one can add an annotation service on a client to access a URL and any URL annotation repositories and return annotated documents. This is very like the OMG interceptor architecture but with proxy based intermediary services interposed between client and server. There are many similar services (e.g., add advertisements, strip advertisements, micropayment, microlicense, PICS, etc.). The puzzle for OMG is how to converge the web and CORBA architectures so there will not become two parallel sets of services (e.g., web traders and CORBA traders, web versions and CORBA versions). A scenario for convergence might be if there is a web document guarded by the OMG security service, subject to the annotation service, that can use OMG versioning (if we had it). A fitting name for the addition of Internet/Web motivated services might be Internet Services Architecture, an extension to the OMA.
Database Management Systems
While the original "Introduction" to the OMA Guide listed Object Database Interfaces in scope for OMG and OMG has defined services for persistence, transactions, queries, naming, and collections, there is no OMG compositional facility for an OODB or Object-relational DBMS, nor are there gateway interfaces for SQL3, ODMG, or ODBC/JDBC interface defined by OMG except via a string API call to the Query Service (so for instance, there is no defined mapping from IDL to relations or vice versa). Since a lot of the world's data is in relational DBMS systems (and a little is in OODBs) there is a need for OMG interfaces to these kinds of DBMS systems. Furthermore, there is an opportunity for OMG to define federation interfaces that access multiple data sources in the network uniformly, as is done in various experimental communities (e.g., OMG Internet SIG's OTAM, DARPA I*3 and Data Server, MCC Infosleuth).
Knowledgebase Management Systems
Loosely, if a KBMS is a composite of objects, rules, constraints, before-and-after methods, etc., then one would like to find a path to grow OMG's object modeling capability to add these extra representational capabilities.
Mobile Code
For most of its lifetime, OMG has provided only a partial solution to distribution, namely object reference at a distance. Only recently has it added Call by Value for moving object state and Mobile Agents for adding mobile code. Java-based schemes are rapidly evolving and OMG's schemes are following Java.
Agent Management Architecture
OMG has issued and is considering responses to the Mobile Agents RFP. This direction could add mobile state, mobile code, and mobile objects to the OMG OMA. An architectural puzzle for OMG is whether agents subsume objects the way that objects subsume abstract data types. [Object systems might someday come to be viewed as degenerate agent systems, ones where the agents are passive and immobile. When that day comes, we'll need to change the OMG and OMA to the AMG and AMA. ] Even if agents are just an "optional" extension to the OMA and not a core topic, the diverse family of technologies, ideas and directions of agent technology could lead to a collection of RFPs to cover autonomous action, cooperation and negotiation, acting on behalf of others, proactive and reactive control structures, intelligence in reacting to its environments and planning, scheduling, and/or learning.
RM-ODP
The Open Distributed Processing community has developed a number of concepts that complement OMG's architecture:
- Distribution Transparencies - these map differences in representation, invocation mechanisms, failure and recovery, persistence, transactions and consistency, location, migration and relocation, and replication. (There seem to be many more transparencies than these.) These could be added to the "Technical Objectives" in the OMA Guide since all seem to be OMG objectives.
- Viewpoints
- the enterprise viewpoint contains the notion of a community (a configuration of objects formed to meet an objective) and an X-federation(a community of X-domains), roles played by the system (defining permissions, obligations, prohibitions and behaviors), policy statements, a system and its environment
- the information viewpoint contains schemas, invariant predicates, and specification of allowable state changes
- the _computational viewpoint, engineering viewpoint, and technology viewpoints_- these contain notions like cluster, interceptor, binder, checkpoint, recovery, channel, consistency rules and conformance statements among many others.
- ODP Functions - categories of ODP functions include system management, coordination functions, repository functions, security functions, non-repudiation functions
- The OMG and RM-ODP architectures overlap. In some ways, ODP may provide the broader conceptual framework and OMG the more enunciated framework architecture. There seems to be some real opportunity to borrow some of the ODP framework into OMG (and possibly for OMG to standardized some of its services and facilities through ODP). But some substantial conceptual mapping would have to be done to do this wholesale since object services, common facilities, and domain interfaces plus OMG architectural principles do not seem to map exactly into ODP concepts.
Patterns
There is now substantial and useful literature on OO patterns, which are abstract specifications of the behavior of constellations of objects. Pattern collections can be mined for new OMG services. The patterns methodology can be incorporated into the OMG technology base. Puzzles involve rationalizing vocabularies for patterns and frameworks.
Other Extensions
The following extensions are already being discussed in OMG and we are not adding much to this discussion except to list them as significant candidate extensions to the OMA-RM.
Views of the Architecture
We need some additional views of the OMA architecture, not just the software bus view. Other views might explain how services are interconnected, how ilities are inserted, how visibility and packaging is supported, dataflow, physical distribution, etc. This is in addition or complementary to possibly adopting ODP viewpoints.
Semantics
There is already activity in OMG to address the need to say more about specifications than just their interface and an English explanation of their intended semantics.
Object Model Extensions
This paper doesn't currently address object model extensions needed except to mention some ideas:
- Templates - there is no IDL template or generic facility and no macro facility.
- CDL or JDL - the JBOF CDL extended IDL with ODMG ODL which includes ODMG relationships (which differ from OMG Relationships Service), extensions for collections of instances of a class and keys, and some other additions. Some modelers have found these extensions useful.
- Rules - Like relationships, rules could either be thought of as an extension to an object model or as a service. There are several kinds of related rules systems (ECA Rules, before-and-after rules). In the last year, the NIIIP consortium made a valiant but so far unsuccessful effort toward getting OMG interested in rules.
Domain Interface Architecture
The OMG-RM provides short descriptions of Object Services, Common Facilities, and Domain Interfaces. Separate substantial Object Services Architecture and Common Facilities Architecture documents currently exist. Historically, these have proved reasonably valuable to the Platform technical committee in setting the scope and road maps for the Object Services Task Force and Common Facilities Task Force. (On the other hand, there never was a predecessor ORB Architecture document apart from the growing CORBA specification.) The Domain Technical Committee has chartered a broad collection of task forces and SIGs but there is currently no Domain Interfaces Architecture (DIA) to guide OMG in how to populate the DTC space. This has led to recent (fairly emotional) discussions on the need for such a document. Problems have arisen between DTC groups on boundaries between, say, common business objects and manufacturing objects partly because there are no criteria for setting boundaries except one group "getting there first." On the other hand, having architecture documents has not guaranteed
- that they would be updated to reflect adopted specifications,
- that they would continue to guide road map discussions, or
- that some other group with a seemingly different charter might not generate RFPs apropos to another group (e.g., the Topology RFP generated by DTC Telecom appears to be a PTC specification), Despite these problems, such architecture documents do substantially help OMG move forward by providing "stakes in the ground." The need for a DIA document could be a discussion point in ORMSC (or DTC) that could lead to a new work item. If so, someone would have to come forward with at least the sketch of a strawman document. [It appears that the Common Business Object Working Group of the Business Object Domain Task Force is preparing an RFI to develop a DIA.] A DIA document might mention the areas that OMG currently is committed to:
- business objects, electronic commerce, finance, insurance, manufacturing, transportation, telecom, healthcare, GIS and imagery, and gastronomy and other potential areas like
- logistics, command and control, and crisis management and provide guidance on domain scope. The potential space is very large. Other domain standards populate parts of that space (e.g., STEP).
Needed Services and Common Facilities
- Change Management Service. The Object Services Architecture has a service descriptor called Change Management that described version management, configuration management, and transformation management. The OMA Guide "Technical Objectives" chapter described a versioning requirement. OMG mailing lists have discussed whether to issue a Change Management Service RFP. Some of the discussion has revolved around what the subject of the service should be: instances, interfaces, or implementations or all three. The OMA does need to provide a uniform framework for managing change since all data and all long-lived systems evolve. In this area, OMG lags practice and will need to reflect emerging practice for incrementally downloading upgrades across the web (e.g., Marimba Castanet, NetCast-like models).
- Replication Service. A Replication Service has been a topic of conversation in OMG ORB and later ORB/OS meetings. But it has never made it to RFP status. One promising approach is based on_group objects_ -- an object that acts as the surrogate for a collection of replicas so that operations on the surrogate cascade to the replicas via some control regime (e.g., master-slave, peer-peer, voting schemes, ...) and corresponding consistency maintenance policy, which may promise less than instantaneous consistency.
- Rules Service. This was mentioned above. Event-condition-action rules or before-after rules provided via some useful language construct would probably provide a higher, level easier to use capability than low level interceptors.
- Planning Service(s). Enterprise level command and control systems depend on these. So do intelligent agents. This might include the ability to represent possible futures.
- Scheduling Service(s). In many environments (e.g., factories) scheduling is used to optimize throughput or share scarce resources. Agents that plan may schedule the execution of their subtasks. Planning and scheduling probably warrant a Platform SIG of their own.
- Uncertainty, Precision. There is a need to be able to explicitly represent uncertainty. Also, for some applications (geographic), there is a tradeoff between precision and compression.
- Other Services and Facilities. Caching Service, Indexing Service, Parsing Service, Event Logging Service, Search Engine Facility, Information Access Facility/Object Transfer Manipulation Facility, ODBMS, KBMS,
Conclusion and Recommendations
OMG still offers the most comprehensive collection of specifications for distributed middleware and is an active community with strong industry backing. It must continue to evolve rapidly to survive since it does not stand alone -- there are rival technologies like ODP (more conceptual), agents (richer abstraction base), Java (broadly based implementations in rapid fire evolution), and DCOM (strong market penetration). OMG must develop convergence stories for each of these to best represent the needs of its communities.
The OMA-RM has historically been and continues to be useful "as is." The most conservative position is to change it as little as possible since it has served as a permissive guide to allow many architectural extensions to be layered on top as the entire body of OMA is populated. The original OMA-RM reflected a vision of the future. Now some of that future is in place. Its role may need to grow to explain that architecture. And its vision of the future may need to be revised to reflect the better perspective of six years of experience. As a starting point for those discussions, we recommend:
- Continuing the current practice of replacing references to abstract parts of the OMA architecture (e.g., object services in the 1990 OMA-RM) with concrete references to named adopted CORBAservices in the 1996 OMG-RM). The concrete portions serve as a high level reminder of the current scope of the OMA. We need to determine how to splice in abstract elements of the architecture in order to serve as a scoping guide to OMG directions while still distinguishing what has been done from what is planned.
- Only a few abstract extensions should be adopted into the body of the OMA-RM document itself. These should identify some key architectural directions for the entire OMA. Some additions to the OMA-RM we believe are needed are in the next revision are:
- Mention the architectural principles. Add a short section on architectural properties (ilities) and mention scalability, evolvability, survivability, real-time, QoS, and systems management.
- Add some supporting examples of object frameworks to show how they are different from (especially) common facilities (or drop the concept).
- · Changes that need to be made to the OMA Guide
- Add a new chapter to the OMA Guide containing the architectural principles and properties.
- Add glossary terms to the "Glossary" chapter. Candidates for additional terms include: domain interface, encapsulation, skeleton, stub, framework, component, containment model, external environment, packaging, identify, granularity, interceptor, extension, policy, governs or owns, boundary, seamless or implicit, exoskeleton, architectural principles, -ility, isolation, property, scalability, survivability, real-time, quality of service (QoS), naming, transaction, trader, and concurrency. Also see Componentware Glossary.
- Update the "Technical Objectives" chapter to modularly include:
- technical objectives on architectural principals and ilities (component model and packaging, scalability by composition and federation, evolution, real-time and QoS.)
- technical objectives for ORB, services and facilities like trader, language mappings, scripting language
- technical objective(s) on domain interfaces
- interoperability with industry standards including the Web, Java and COM/ActiveX
- Differentiate requirements that have been met from requirements that are so far unmet (like versioning).
- Keep the OMA Guide up to date (annually) and use it as a primary OMG architecture guide.
© Copyright 1997 Object Services and Consulting, Inc. Permission is granted to copy this document provided this copyright statement is retained in all copies.
© Copyright 1997 Microelectronics and Computer Technology Corporation. Permission is granted to copy this document provided this copyright statement is retained in all copies.
This research is sponsored by the Defense Advanced Research Projects Agency and managed by the U.S. Army Research Laboratory under contract DAAL01-95-C-0112. The views and conclusions contained in this document are those of the authors and should not be interpreted as necessarily representing the official policies, either expressed or implied of the Defense Advanced Research Projects Agency, U.S. Army Research Laboratory, or the United States Government.
This research is sponsored by the Object Infrastructure Project of the Microelectronics and Computer Technology Corporation. The views and conclusions contained in this document are those of the authors and should not be interpreted as necessarily representing the official policies, either expressed or implied of the Microelectronics and Computer Technology Corporation or its member companies.
Acknowledgments: This paper is based on lessons learned primarily in the OBJS project Scaling OSAs to the Internet and the MCC project _Object Infrastructure Project._The authors gratefully acknowledge inputs received from Art Goldschmidt on lessons learned in the National Industrial Information Infrastructure Consortium (NIIIP) and from Gabor Seymour (Motorola).
