A new object model, the CAPE-OPEN Binary Interop Architecture (COBIA), has been proposed as a next step in the evolution of CAPE-OPEN. COBIA will include registration components, binary interoperability standards, and middleware that acts as a bridge between software components. Development of COBIA involves a number of tasks, grouped in phases, which can be performed incrementally.
Support for legacy COM-based CAPE-OPEN is a key requirement. COM-based CAPE-OPEN is a proven technology that needs to be supported by COBIA, however, COM is almost exclusively utilized on Microsoft Windows operating system, and a majority of the development is done with Microsoft development tools. COBIA is intended to run on any operating system, and to support a variety of development tools. The COM/COBIA interop will only be provided for the Windows platform.
The legacy argument does not hold for CORBA implementations – CORBA/COBIA interop is not anticipated to be part of the scope of COBIA.
COBIA development provides an opportunity to simplify existing interfaces and remove COM-specific artifacts in the current interface specifications.
Phase 1 (Prototype Development): consists of completing tasks 1, 2, 3, 4 and 5 below to provide proof of concept for COBIA. At end of Phase I, we will be able to demonstrate the functionality and provide a test suite for use by others to test implementations of COBIA compliant thermodynamic packages. With the COM/COBIA interop, the thermodynamic server of the test suite is accessible from COM PMEs and COM PMCs can be loaded by the material object (PME) part of the test suite.The following items are the tasks in the development process (outputs of the tasks are in bold/italics):
1. COBIA Registry: The ability to register components and create instances of these objects is one of the key requirements for the COBIA. Developing a prototype COBIA Registry needs to be conducted early in the process, enabling testing of this prototype to identify and correct deficiencies early in the development process.
2. Data Type Standardization: Data types used in the COBIA need to be standardized for transport across the various potential platforms. Some types such as integers and floating point numbers are implemented in a fairly consistent manner across various platforms, but others such as Booleans, strings, and arrays have different implementations on different platforms. Based on these data types, API methods and appropriate interfaces will be developed to enable data to be handled by the various platforms, as well as an initial implementation.
3. Interface Stub Codes: The mechanisms used by the COBIA objects to interact with each other needs to be developed and tested. It is best to start with a limited set of interfaces and make sure that they work before attempting to tackle the entire set of CAPE-OPEN interfaces. In this light, the first step will be to declare, in stub-code form, a minimal set of core interfaces such as ICapeIdentification, ICapeDiagnostics, and the 1.1 Thermodynamic interfaces.
4. Prototype COBIA Middleware and Objects: Creation of a simple thermodynamic property package and material object utilizing prototyped single-threaded COBIA middleware to exercise the interfaces developed above. This will provide proof of concept for the COBIA registration components, data types, and stub codes.
COBIA/COM Interop: Bi-direction interoperability between COBIA and COM will be added to COBIA based upon the approach demonstrated in Task 4. Involves also adapting the COBIA registry to track and expose COM objects. The interop objects will be limited to those interfaces implemented in steps 3 & 4.
On March 10, 2016, contract with AsmterCHEM on the development of Phase I has been approved by CO-LaN Management Board.