Top Banner
Tutorial on the Lightweight Tutorial on the Lightweight CORBA Component Model (CCM) CORBA Component Model (CCM) Industrializing the Development of Industrializing the Development of Distributed Real-time & Embedded Distributed Real-time & Embedded Applications Applications Other contributors include Kitty Balasubramanian, Tao Lu, Bala Other contributors include Kitty Balasubramanian, Tao Lu, Bala Natarajan, Jeff Parsons, Frank Pilhofer, Craig Rodrigues, Natarajan, Jeff Parsons, Frank Pilhofer, Craig Rodrigues, & Nanbor Wang Nanbor Wang Dr. Douglas C. Schmidt [email protected] http://www.dre.vanderbilt.edu/~schmidt/ Professor of EECS Vanderbilt University Nashville, Tennessee
201

Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt

Feb 03, 2016

Download

Documents

mikkel isaksen

Tutorial on the Lightweight CORBA Component Model (CCM) Industrializing the Development of Distributed Real-time & Embedded Applications. Dr. Douglas C. Schmidt [email protected] http://www.dre.vanderbilt.edu/~schmidt/. Professor of EECS Vanderbilt University Nashville, Tennessee. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Tutorial on the LightweightTutorial on the LightweightCORBA Component Model (CCM)CORBA Component Model (CCM)

Industrializing the Development of Distributed Real-Industrializing the Development of Distributed Real-time & Embedded Applicationstime & Embedded Applications

Other contributors include Kitty Balasubramanian, Tao Lu, Bala Other contributors include Kitty Balasubramanian, Tao Lu, Bala Natarajan, Jeff Parsons, Frank Pilhofer, Craig Rodrigues,Natarajan, Jeff Parsons, Frank Pilhofer, Craig Rodrigues, & Nanbor WangNanbor Wang

Dr. Douglas C. Schmidt [email protected]

http://www.dre.vanderbilt.edu/~schmidt/

Professor of EECS Vanderbilt University Nashville, Tennessee

Page 2: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Tutorial Overview• The purpose of this tutorial is to

–Motivate the need for the CORBA Component Model (CCM) & contrast it with the CORBA 2.x distributed object computing (DOC) model

–Introduce CCM features most relevant to distributed real-time & embedded (DRE) applications

• e.g., Lightweight CCM & the new OMG Deployment & Configuration spec

–Show how to implement DRE applications using CCM & C++

–Illustrate status of CCM & Lightweight CCM support in existing platforms

• but not to

–Enumerate all the CCM C++ or Java mapping rules & features

–Provide detailed references of all CORBA & CCM interfaces

–Make you capable of implementing CORBA & CCM middleware

Page 3: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Motivation & Overview of Component

Middleware

www.cs.wustl.edu/~schmidt/cuj-16.doc

Page 4: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Where We Started: Object-Oriented Programming• Object-oriented (OO) programming simplified software

development through higher level abstractions & patterns, e.g.,

Well-written OO programs exhibit recurring structures that promote abstraction, flexibility, modularity, elegance

– Decoupling interfaces & implementations

– Associating related data & operations

operation1()operation2()operation3()operationn()

data

class X

Page 5: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Motivations for Applying OO to Network Programming

• Apply the Broker pattern abstract away lower-level OS & protocol-specific details for network programming

• Create distributed systems which are easier to model & build

• Result: robust distributed systems built with distributed object computing middleware

– e.g., CORBA, Java RMI, DCOM, etc.

1 1Proxy

service

Service

service

AbstractService

service

Client

We now have more robust software & more powerful distributed systems

operation()Object :

Interface X: Client

Middleware

Page 6: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Overview of CORBA 2.x Standard•CORBA 2.x is distributed object computing (DOC) middleware that shields applications from heterogeneous platform dependencies•e.g., languages, operating systems, networking protocols, hardware• CORBA 2.x simplifies

development of distributed applications by automating/encapsulating

– Object location – Connection & memory mgmt.– Parameter (de)marshaling– Event & request

demultiplexing– Error handling & fault tolerance– Object/server activation– Concurrency– Security

• CORBA defines interfaces & policies, not implementations

Page 7: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Example: Applying OO to Network Programming• CORBA 2.x IDL specifies interfaces with operations

– Interfaces map to objects in OO programming languages • e.g., C++, Java, Ada95, etc.

– Operations defined in interfaces can be invoked on local or remote objects

interface Foo { void bar (in long arg);};

IDL

class Foo : public virtual CORBA::Object { virtual void bar (CORBA::Long arg);};

C++

Page 8: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Limitations of OO-based CORBA 2.x Middleware

• CORBA 2.x doesn’t specify how configuration & deployment of objects should be done to create complete applications

–Proprietary infrastructure & scripts are written by developers to facilitate this

InterfaceDesign

ApplicationDevelopment &

Deployment

IDLDefinitions

IDLCompiler

Stubs&

Skeletons

ObjectImplementations

LanguageTools

Libraries

“Other”Implementations

Applications

• CORBA 2.x IDL doesn’t provide a way to group together related interfaces to offer a service family

–Such “bundling” must be done by developers

CORBA 2.x application development is unnecessarily tedious & error-prone

Page 9: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Boiler Plate X

Boiler Plate YBoiler Plate X

Example: Limitations of CORBA 2.x Specification• Requirements of non-trivial DOC

applications:• Collaboration of multiple objects &

services• Deployment on diverse platforms

• Limitations – Lack of standards for• Server configuration• Object/service configuration• Application configuration• Object/service deployment

• Consequence: tight couplings at various layers

• Brittle, non-scalable implementation

• Hard to adapt & maintain• Increased time-to-market

ServerORB/POA

ObjImpl

ObjImpl

ObjImpl

ServerORB/POA

ObjImpl

ObjImpl

COS

Svc

ServerORB/POA

ObjImpl

ObjImpl

COS

Svc

Client

CORBA BUS

invoke C

onfig C

Config B

Config A

Page 10: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Solution: Component MiddlewareComponent middleware capabilities:

•Creates a standard “virtual boundary” around application component implementations that interact only via well-defined interfaces

•Define standard container mechanisms needed to execute components in generic component servers

•Specify the infrastructure needed to configure & deploy components throughout a distributed system

Page 11: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

•Components encapsulate application “business” logic

•Components interact via ports•Provided interfaces, e.g.,facets•Required connection points, e.g., receptacles

•Event sinks & sources•Attributes

•Containers provide execution environment for components with common operating requirements

•Components/containers can also

•Communicate via a middleware bus and

•Reuse common middleware services

SecurityReplication NotificationPersistence

SchedulingA/V Streaming Load Balancing

Container

… …

Middleware Bus

Container

Birdseye View of Component Middleware

Page 12: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Overview of the CORBA Component

Model (CCM)

Page 13: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Capabilities of the CORBA Component Model (CCM)• Component Server

– A generic server process for hosting containers & components/homes

• Component Implementation Framework (CIF)

– Automates the implementation of many component features

• Component configuration tools

– Collect implementation & configuration information into deployable assemblies

• Component deployment tools

– Automate the deployment of component assemblies to component servers

Container

ORB

CORBAComponent

ComponentHome

POA

Transaction

Security Notification

Persistent State

Exte

rna

lIn

terf

ace

s

CallbackInterfaces

InternalInterfaces

Container

CORBAComponent

ComponentHome

POA

Exte

rna

lIn

terf

ace

s

CallbackInterfaces

InternalInterfaces

Component Server

Page 14: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Capabilities of the CORBA Component Model (CCM)

Stub

Impl

Skel

IDL Compiler

IDL

CIDL

CIDL Compiler

Executor IDL

Servants

Executors

IDL Compiler

XMLComponentDescriptors

• Component Server

– A generic server process for hosting containers & components/homes

• Component Implementation Framework (CIF)

– Automates the implementation of many component features

• Component configuration tools

– Collect implementation & configuration information into deployable assemblies

• Component deployment tools

– Automate the deployment of component assemblies to component servers

Page 15: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Capabilities of CORBA Component Model (CCM)• Component Server

– A generic server process for hosting containers & components/homes

• Component Implementation Framework (CIF)

– Automates the implementation of many component features

• Component configuration tools

– Collect implementation & configuration information into deployable assemblies

• Component deployment tools

– Automate the deployment of component assemblies to component servers

AssemblyMeta-Model

Component Assembler

ComponentDevelopment

ComponentDeployment

AssemblyConstraints

ComponentPackager

PackageMeta-Model

Component

ResourceRequirements

Impl Impl Impl

PropertiesComponent Assembly

ComponentComponent

ComponentComponent

PackageConstraints

Component Package

Component Assembly Component Assembly

Page 16: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Capabilities of CORBA Component Model (CCM)COMPONENT REPOSITORY

Getconfiguredpackage

Deploymentplan

Creates

Get resource

Domain Administrator

Planner

Node

Node Node

Bridge

Domain

Node

Node Node

Bridge

Creates

Deploys

Executor

• Component Server

– A generic server process for hosting containers & components/homes

• Component Implementation Framework (CIF)

– Automates the implementation of many component features

• Component configuration tools

– Collect implementation & configuration information into deployable assemblies

• Component deployment tools

– Automate the deployment of component assemblies to component servers

Page 17: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Available CCM ImplementationsName Provider Open

SourceLanguage URL

Component Integrated ACE ORB (CIAO)

Vanderbilt University & Washington University

Yes C++ www.dre.vanderbilt.edu/CIAO/

Enterprise Java CORBA Component Model (EJCCM)

Computational Physics, Inc.

Yes Java http://www.cpi.com/ejccm/

K2 iCMG No C++ http://www.icmgworld.com/products.asp

MicoCCM FPX Yes C++ http://www.fpx.de/MicoCCM/

OpenCCM ObjectWeb Yes Java http://openccm.objectweb.org/

QoS Enabled Distributed Object (Qedo)

Fokus Yes C++ http://qedo.berlios.de/news.php4?lang=eng

StarCCM Source Forge Yes C++ http://sourceforge.net/projects/starccm/

Page 18: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CCM Compared to EJB, COM, & .NET• Like Sun Microsystems’

Enterprise Java Beans (EJB)

• CORBA components created & managed by homes

• Run in containers that manage system services transparently

• Hosted by generic application component servers

• But can be written in more than Java

• Like Microsoft’s Component Object Model (COM)

• Have several input & output interfaces per component

• Both point-to-point sync/async operations & publish/subscribe events

• Component navigation & introspection capabilities

• But more effective support for distribution & QoS properties

• Like Microsoft’s .NET Framework

• Could be written in different programming languages

• Could be packaged to be distributed

• But runs on more than just Microsoft Windows

Page 19: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Comparing Application Development with

CORBA 2.x vs. CCM

Page 20: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CORBA 2.x User Roles

• Object interface designers

• Server developers

• Client application developersStubFiles

ImplFiles

Generated Hand-Written

SkeletonFiles

Generates Inherits

Server

IDL Compiler

IDL File

Page 21: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CORBA 2.x Application Development Lifecycle

InterfaceDesign

ApplicationDevelopment &

Deployment

IDLDefinitions

IDLCompiler

Stubs&

Skeletons

ObjectImplementations

LanguageTools

Libraries

“Other”Implementations

Applications

Specification of IDL interfaces of objects

Page 22: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CORBA 2.x Application Development Lifecycle

InterfaceDesign

ApplicationDevelopment &

Deployment

IDLDefinitions

IDLCompiler

Stubs&

Skeletons

ObjectImplementations

LanguageTools

Libraries

“Other”Implementations

Applications

Implement servants & write all the code required to bootstrap & run the server

CORBA 2.x supports programming by development (engineering) rather than programming by assembly (manufacturing)

Page 23: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CCM User Roles

• Component designers

• Component clients

• Composition designers

• Component implementers

• Component packagers

• Component deployers

• Component end-users

Stub

Executors

Skel

IDL Compiler

IDL

CIDL

CIDL Compiler

Executor IDL

Servants

ExecutorStubs

IDL Compiler

XMLComponentDescriptors

Page 24: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

Component &Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackages

(*.cpk)

Component &Home Properties

ComponentPackage

Descriptors(.cpd)

DeploymentTools

ImplementationArtifact

Descriptors(.iad)

DeploymentPlan

Descriptor(.cdp)

ComponentDomain

Descriptor(.cdd)

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

CCM Application Development Lifecycle

Specification of supported interfaces

of components

Page 25: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

Component &Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackages

(*.cpk)

Component &Home Properties

ComponentPackage

Descriptors(.cpd)

DeploymentTools

ImplementationArtifact

Descriptors(.iad)

DeploymentPlan

Descriptor(.cdp)

ComponentDomain

Descriptor(.cdd)

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

CCM Application Development LifecycleSpecification of provided & required interfaces of

components

Page 26: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

Component &Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackages

(*.cpk)

Component &Home Properties

ComponentPackage

Descriptors(.cpd)

DeploymentTools

ImplementationArtifact

Descriptors(.iad)

DeploymentPlan

Descriptor(.cdp)

ComponentDomain

Descriptor(.cdd)

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

CCM Application Development Lifecycle

Implementation of component executors, plus association of components with component executors

& their homes via CIDL

Page 27: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

Component &Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackages

(*.cpk)

Component &Home Properties

ComponentPackage

Descriptors(.cpd)

DeploymentTools

ImplementationArtifact

Descriptors(.iad)

DeploymentPlan

Descriptor(.cdp)

ComponentDomain

Descriptor(.cdd)

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

CCM Application Development Lifecycle

Grouping of component implementation artifacts & meta-data descriptors

into component packages

Page 28: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

Component &Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackages

(*.cpk)

Component &Home Properties

ComponentPackage

Descriptors(.cpd)

DeploymentTools

ImplementationArtifact

Descriptors(.iad)

DeploymentPlan

Descriptor(.cdp)

ComponentDomain

Descriptor(.cdd)

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

CCM Application Development Lifecycle

Specification of component inter-connections &

composition of component assembly packages

Page 29: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

Component &Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackages

(*.cpk)

Component &Home Properties

ComponentPackage

Descriptors(.cpd)

DeploymentTools

ImplementationArtifact

Descriptors(.iad)

DeploymentPlan

Descriptor(.cdp)

ComponentDomain

Descriptor(.cdd)

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

CCM Application Development Lifecycle

Deploy components onto target nodes

according to a deployment plan

Page 30: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

Component &Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackages

(*.cpk)

Component &Home Properties

ComponentPackage

Descriptors(.cpd)

DeploymentTools

ImplementationArtifact

Descriptors(.iad)

DeploymentPlan

Descriptor(.cdp)

ComponentDomain

Descriptor(.cdd)

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

CCM Application Development LifecycleCCM makes explicit many steps that are performed implicitly in CORBA 2.x

Page 31: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

CORBA Component Model (CCM) Features

Page 32: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Example CCM DRE Application• Rate Generator

– Sends periodic Pulse events to consumers

• Positioning Sensor

– Receives Refresh events from suppliers

– Refreshes cached coordinates available thru MyLocation facet

– Notifies subscribers via Ready events

• Display Device

– Receives Refresh events from suppliers

– Reads current coordinates via its GPSLocation receptacle

– Updates display

NavDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Component Server

Rate Generator

Avionics example used throughout tutorial as

typical DRE application

PositioningSensor

DisplayDevice

$CIAO_ROOT/examples/OEP/Display/

Page 33: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

Component &Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackages

(*.cpk)

Component &Home Properties

ComponentPackage

Descriptors(.cpd)

DeploymentTools

ImplementationArtifact

Descriptors(.iad)

DeploymentPlan

Descriptor(.cdp)

ComponentDomain

Descriptor(.cdd)

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

Interface & Component Design StageGoal: Specify supported, provided, & required interfaces and event sinks & event sources

Page 34: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Unit of Business Logic & Composition in CCM• Context

–Development via composition

• Problems

–CORBA 2.x object limitations

• Merely identify interfaces

• No direct relation w/implementations

• CCM Solution

–Define CORBA 3.0 component meta-type

• Extension of Object interface

• Has interface & object reference

• Essentially a stylized use of CORBA interfaces/objects

– i.e., CORBA 3.x IDL maps onto equivalent CORBA 2.x IDL

Page 35: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Simple CCM Component Example• Roles played by CCM component

–Define a unit of reuse & implementation

–Encapsulate an interaction & configuration model

• A CORBA component has several derivation options, i.e.,

– It can inherit from a single component type

–It can support multiple IDL interfaces

// IDL 3

interface rate_control{ void start (); void stop ();};

component RateGen supports rate_control {};

// Equivalent IDL 2

interface RateGen : Components::CCMObject, rate_control {};

RateGenPulse

Rate interface A {};

interface B {};

component D supports A, B {};

component E : D {};

Page 36: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

• A CORBA component can contain ports:

• Facets (provides)

• Offers operation interfaces

• Receptacles (uses)

• Required operation interfaces

• Event sources (publishes & emits)

• Produced events

• Event sinks (consumes)

• Consumed events

• Attributes (attribute)

• Configurable properties

• Each component instance is created & managed by a unique component home

CORBA Component Ports

Attributes

Event

Sinks

Facets

Rec

epta

cles

Eve

ntS

ourc

esComponentReference

ComponentHome

OfferedP

orts

Req

uire

dP

orts

“Re

ceives

Fro

m” “S

end

s T

o”

Page 37: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Managing Component Lifecycle• Context

–Components need to be created by the CCM run-time

• Problems with CORBA 2.x

–No standard way to manage component’s lifecycle

–Need standard mechanisms to strategize lifecycle management

• CCM Solution

– Integrate lifecycle service into component definitions

–Use different component home’s to provide different lifecycle managing strategies

• Based on the factory and finder patterns.

Page 38: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

A CORBA Component Home

•home is a new CORBA meta-type

–A home has an interface & object reference

• Manages one type of component

–More than one home type can manage the same component type

–A component instance is managed by one home instance

• Standard factory & finder operations

–e.g., create()

• Can have arbitrary user-defined operations

// IDL 3

home RateGenHome manages RateGen{ factory create_pulser (in rateHz r);};

// Equivalent IDL 2

interface RateGenHomeExplicit : Components::CCMHome { RateGen create_pulser (in rateHz r);};

interface RateGenHomeImplicit : Components::KeylessCCMHome { RateGen create ();};

interface RateGenHome : RateGenHomeExplicit, RateGenHomeImplicit {};

RateGenHome

RateGenPulseRate

Page 39: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

A Quick CCM Client Example

Page 40: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component & Home for Simple HelloWorldinterface Hello { void sayHello (in string username);};

component HelloWorld supports Hello {};

home HelloHome manages HelloWorld {};

•IDL 3 definitions for

•Component: HelloWorld

•Managing home: HelloHome

• Example in $CIAO_ROOT/docs/tutorial/Hello/

Page 41: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

The Client OMG IDL Mapping• Each OMG IDL 3.0 construction has

an equivalent in terms of OMG IDL 2.x

• Component & home types are viewed by clients through the CCM client-side OMG IDL mapping

• Requires no change in client programming language mapping

–Clients still use their favorite IDL-oriented tools, such as CORBA stub generators, etc.

• Clients need not be “component-aware”

–i.e., they just invoke interface operations

OMG IDL 2.x

OMG IDL3.0

C++/JavaMappings

extends

generates

Page 42: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Simple Client for HelloWorld Component 1 int 2 main (int argc, char *argv[]) 3 { 4 CORBA::ORB_var orb = 5 CORBA::ORB_init (argc, argv); 6 CORBA::Object_var o = 7 orb->resolve_initial_references 8 ("NameService"); 9 CosNaming::NamingContextExt_var nc =10 CosNaming::NamingContextExt::_narrow (o);11 o = nc->resolve_str ("HelloHome");12 HelloHome_var hh = HelloHome::_narrow (o);13 HelloWorld_var hw = hh->create ();14 hw->sayHello (“Dennis and Brian”);15 hw->remove ();16 return 0;17 }

•Lines 4-10: Perform standard ORB bootstrapping

•Lines 11-12: Obtain object reference to home

•Line 13: Create component

•Line 14: Invoke remote operation

•Line 15: Remove component instance•Clients don’t always need to manage component lifecycle directly

$ ./hello-client

Hello World! -- from Dennis and Brian.

Page 43: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

CCM Component Features in Depth

www.cs.wustl.edu/~schmidt/cuj-17.doc

Page 44: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Summary of Client OMG IDL Mapping Rules• A component type is mapped to

an interface inheriting from Components::CCMObject

• Facets & event sinks are mapped to an operation for obtaining the associated reference

• Receptacles are mapped to operations for connecting, disconnecting, & getting the associated reference(s)

• Event sources are mapped to operations for subscribing & unsubscribing for produced events

• An event type is mapped to

–A value type that inherits from Components::EventBase

–A consumer interface that inherits from Components:: EventConsumerBase

• A home type is mapped to three interfaces

–One for explicit user-defined operations that inherit from Components::CCMHome

–One for generated implicit operations

–One inheriting from both previous interfaces

Page 45: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Components Can Offer Different Views• Context

–Components need to collaborate with other types of components

–These collaborating components may understand different interfaces

• Problems with CORBA 2.x

–Hard to extend interface without breaking/bloating it

–No standard way to acquire new interfaces

• CCM Solution

–Define facets, aka provided interfaces, that embody a view of the component & correspond to roles in which a client may act relatively to the component

• Represents the “top of the Lego”

Page 46: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Facets

• Component facets:

–Define provided operation interfaces

–Specified with provides keyword

–Logically represents the component itself, not a separate thing contained by the component

–Have independent object references

–Can be used to implement Extension Interface pattern

// IDL 3

interface position{ long get_pos ();};

component GPS{ provides position MyLocation; …};

// Equivalent IDL 2

interface GPS

: Components::CCMObject{ position provide_MyLocation ();

…};

GPS

MyLocation

Refresh Ready

Page 47: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Extension Interface PatternThe Extension Interface design pattern (P2) allows multiple interfaces to be exported by a component to prevent

• breaking of client code &

• bloating of interfaces

when developers extend or modify component functionality

createComponent

Factory

*

*

CreateInstance

createComponent

Componentnew

*1

cueryInterface

Root

Implemented by

1+

<<extends>>

Ask for a reference to an interface

Call an operation on an interface

initialize

uninititialize

ServerqueryInterface

service_i

ExtensionInterface i

callService

Client

queryInterface()

: Clientoperation()

Page 48: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Using Other Components• Context

–Components need to collaborate with several different types of components/applications

–These collaborating components/applications may provide different types of interface

• Problems with CORBA 2.x

–No standard way to specify interface dependencies

–No standard way to connect an interface to a component

• CCM Solution

–Define receptacles, aka required interfaces, which are distinct named connection points for potential connectivity

• Represents the “bottom of the Lego”

Page 49: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Receptacles• Component receptacles

–Specify a way to connect one or more required interfaces to this component

–Specified with uses keyword

–Connections are established statically via configuration & deployment tools during initialization stage or assembly stage

–Connections are managed dynamically at runtime to offer interactions with clients or other components via callbacks

// IDL 3

component NavDisplay{ … uses position GPSLocation; …};

// Equivalent IDL 2

interface NavDisplay : Components::CCMObject{ … void connect_GPSLocation (in position c); position disconnect_GPSLocation(); position get_connection_GPSLocation (); …};

NavDisplayRefresh

GPSLocation

Page 50: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Event Passing• Context

–Components often want to communicate using publisher/subscriber message passing mechanism

• Problems with CORBA 2.x

–Non-trivial to extend existing interfaces to support event passing

–Standard CORBA Event Service is dynamically typed, i.e., there’s no static type-checking connecting publishers-consumers

–No standard way to specify an object’s capability to generate & process events

• CCM Solution

–Standard eventtype & eventtype consumer interface (which are based on valuetypes)

–Event sources & event sinks (“push mode” only)

Page 51: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CORBA Valuetypes• Context

–Parameters of IDL operations that are an interface type always have pass-by-reference semantics (even in parameters)

–IDL interfaces hide implementations from clients

• Problems

–Clients cannot instantiate CORBA objects

–IDL structs are passed by value, but don’t support operations or inheritance

• CORBA Solution

–The IDL valuetype• Always passed by value

• Have operations & state

• Supports inheritance

Page 52: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Events

• Events are IDL valuetypes

• Defined with the new IDL 3 eventtype keyword

// IDL 3

eventtype tick{ public rateHz Rate;};

// Equivalent IDL 2

valuetype tick : Components::EventBase{ public rateHz Rate;};

interface tickConsumer : Components::EventConsumerBase {

void push_tick (in tick the_tick);};

RateGenPulse

Rate

Publisher Consumer

GPS

MyLocation

Refresh Ready

tick event

Page 53: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Event Sources

• Event sources

–Named connection points for event production

–Two kinds: publisher & emitter

• publishes = may be multiple consumers

• emits = only one consumer

• Event delivery

–Consumer subscribes/connects directly

–CCM container mediates access to CosNotification channels or other event delivery mechanism

// IDL 3

component RateGen{ publishes tick Pulse; emits tick Trigger; …

};

// Equivalent IDL 2

interface RateGen : Components::CCMObject { Components::Cookie subscribe_Pulse (in tickConsumer c); tickConsumer unsubscribe_Pulse (in Components::Cookie ck);

…};

RateGenPulse

Rate

Page 54: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CCM Cookiesmodule Components{ valuetype Cookie { private CORBA::OctetSeq cookieValue; };

interface Receptacles { Cookie connect (…); void disconnect (in Cookie ck); };

interface Events { Cookie subscribe (…); void unsubscribe (in Cookie ck); };};

• Context

–Event sources & receptacles correlate connect() & disconnect() operations

• Problem

–Object references cannot be tested reliably for equivalence

• CCM Solution

–Cookie valuetype

• Generated by receptacle or event source implementation

• Retained by client until needed for disconnect()

• Used as a unique id

Page 55: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Event Sinks

• Event sinks

–Named connection points into which events of a specific type may be pushed

–Multiple event sinks of same type can subscribe to the same event sources

–No distinction between emitter & publisher

// IDL 3

component NavDisplay{ … consumes tick Refresh;};

// Equivalent IDL 2

interface NavDisplay : Components::CCMObject{ … tickConsumer get_consumer_Refresh (); …};

NavDisplayRefresh

GetLocation

Page 56: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CCM Events

valuetype tick : Components::EventBase {…};

interface tickConsumer : Components::EventConsumerBase {…};

• Context

–Generic event push() operation requires a generic event type

• Problem

–Arbitrarily-defined eventtypes are not generic

• CCM Solution

–EventBase abstract valuetype

RateGenPulse

Rate

Publisher Consumer

GPS

MyLocation

Refresh Ready

tick event

module Components{ abstract valuetype EventBase {};

interface EventConsumerBase { void push_event (in EventBase evt); };};

class tickConsumer{ virtual void push_event (Components::EventBase *evt); …};

Page 57: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

The Need to Configure Components• Context

– To make component implementations more adaptable, components should be (re)configurable

• Problems

– Applications shouldn’t commit to a configuration too early

– No standard way to specify component’s configurable knobs

– Need standard mechanisms to configure components

• CCM Solution

– Configure components via attributes in assembly/deployment environment, by homes, and/or during component initialization

Ethernet

VIDEO

Page 58: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Attributes

• Named configurable properties

–Intended for component configuration

• e.g., optional behaviors, modality, resource hints, etc.

–Could raise exceptions (new CCM capability)

–Exposed through accessors & mutators

// IDL 3

typedef unsigned long rateHz;

component RateGen supports rate_control{ attribute rateHz Rate;};

// Equivalent IDL 2

interface RateGen : Components::CCMObject, rate_control{ attribute rateHz Rate;};

RateGenPulse

Rate

Page 59: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Configuring & Connecting Components• Context

–Components need to be configured & connected together to form applications

• Problems

–Components can have multiple ports with different types & names

–Non-scalable to write code manually to connect a set of components for a specific application

• CCM Solution

–Provide introspection interface to discover component capability

–Provide generic port operations to compose/configure components using external tools

–Represents snapping the lego bricks together

Page 60: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CCM Navigation & Introspection• Navigation from component base reference to any facet via generated facet-

specific operations

• Navigation from any facet to component base reference with CORBA::Object::_get_component()

– Returns nil if target isn’t a component facet, else component reference

• Navigation & introspection capabilities provided by CCMObject

– i.e., via Navigation interface for facets, Receptacles interface for receptacles, & Events interface for event ports

_get_component()

: Clientoperation()

Page 61: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Using Navigation Interfaces of a Component 1 int 2 main (int argc, char *argv[]) 3 { 4 CORBA::ORB_var orb = 5 CORBA::ORB_init (argc, argv); 6-10 // Get the NameService reference… 11 CORBA::Object_var o = ns->resolve_str ("HelloHome");12 HelloHome_var hh = HelloHome::_narrow (o.in ());14 HelloWorld_var hw = hh->create ();15 Components::FacetDescriptions_var fd = hw->get_all_facets ();16 // Get all Receptacles17 Components::ReceptacleDescriptions_var rd = 18 hw->get_all_receptacles ();19 // Get a named facet with a name “MyLocation”20 CORBA::Object_var fobj = hw->provide_facet (“MyLocation”);21 // Operations on “MyLocation” after narrowing to the right 22 // interface. 16 return 0;17 }

Page 62: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Generic Port Operations

• Generic port operations for provides, uses, subscribes, emits, & consumes

– Apply the Extension Interface pattern– Used by deployment & configuration tools– Lightweight CCM spec doesn’t include equivalent IDL 2 operations

Port Equivalent IDL2 Operations

Generic Port Operations

(CCMObject)

Facets provide_name (); provide (“name”);

Receptacles connect_name (con);

disconnect_name ();

connect (“name”, con);

disconnect (“name”);

Event sources(publishes only)

subscribe_name (c);

unsubscribe_name ();

subscribe (“name”, c);

unsubscribe (“name”);

Event sinks get_consumer_name(); get_consumer (“name”);

Page 63: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Example of Connecting Components

NavDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Component Server

• Facet Receptacle

objref = GPS->provide (“MyLocation”);

NavDisplay->connect (“GPSLocation”, objref);

• Event Source Event Sinkconsumer = NavDisplay-> get_consumer (“Refresh”)

GPS->subscribe

(“Ready”, consumer);

CCM components are usually connected via deployment & configuration tools

Page 64: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Recap – CCM Component Features• IDL 3 component from a client perspective

–Define component life cycle operations (i.e., home)

–Define what a component provides to other components

–Define what a component requires from other components

–Define what collaboration modes are used between components

• Point-to-point via operation invocation

• Publish/subscribe via event notification

–Define which component attributes are configurable

• IDL 3 maps to “equivalent IDL 2 Interfaces”

Attributes

Event

Sinks

Facets

Rec

epta

cles

Eve

ntS

ourc

esComponentReference

ComponentHome

OfferedP

orts

Req

uire

dP

orts

“Re

cevies

Fro

m” “S

end

s T

o”

Page 65: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

CCM Component

Run-time Environment & Containers

www.cs.wustl.edu/~schmidt/cuj-18.doc

Page 66: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

ComponentServer

CCM Component Server Features

• CCM focuses largely on component server & application configuration

• Enhance CORBA 2.x by supporting

–Higher-level abstractions of servant usage models

–Tool-based configuration & meta-programming techniques, e.g.:

• Reusable run-time environment

• Drop in & run

• Transparent to clients

Client Client

Page 67: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

ComponentServer

The CCM Container Model• A framework within component

servers• Built on the Portable Object

Adaptor (POA)–Automatic activation &

deactivation of components–Resource usage

optimization• Provides simplified interfaces

for CORBA Common Services–e.g., security, transactions,

persistence, & events• Uses callbacks for instance

management –e.g., session states,

activation, deactivation, etc.

Container

ORB

CORBAComponent

ComponentHome

POA

Transaction

Security Notification

Persistent State

Exte

rna

lIn

terf

ace

s

CallbackInterfaces

InternalInterfaces

Container

CORBAComponent

ComponentHome

POA

Exte

rna

lIn

terf

ace

s

CallbackInterfaces

InternalInterfaces

Page 68: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CCM Component/Container CategoriesCOMPONENT CATEGORY

CONTAINER IMPL TYPE

CONTAINER TYPE

EXTERNAL TYPE

Service Stateless Session Keyless

Session Conversational Session Keyless

Process Durable Entity Keyless

Entity Durable Entity Keyfull

These categories can be specified declaratively via a CIDL file

Page 69: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Container-managed CORBA Policies• Goal: decouple install-/run-time configuration from

component implementation & configuration

• Specified by component implementers using XML-based meta-data

• Implemented by the container, not the component

–Uses Interceptor pattern (P2)

• CORBA policy declarations defined for:

–Servant lifetime

–Transaction

–Security

–Events

–Persistence

SSL Container

CORBAComponent

ComponentHome

POA

External

Interfaces

CallbackInterfaces

InternalInterfaces

Transactional Container

CORBAComponent

ComponentHome

POA

External

Interfaces

CallbackInterfaces

InternalInterfaces

Page 70: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

CORBA Implementation Framework (CIF)

&

Component Implementation Definition Language (CIDL)

Page 71: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Implementation Stage

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

Component &Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackages

(*.cpk)

Component &Home Properties

ComponentPackage

Descriptors(.cpd)

DeploymentTools

ImplementationArtifact

Descriptors(.iad)

DeploymentPlan

Descriptor(.cdp)

ComponentDomain

Descriptor(.cdd)

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

Goal: Implement components & associate them with homes

Page 72: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Requirements for Implementing Components

• Component implementations need to support introspection, navigation, & manage connections

• Different implementations may have different run-time requirements

• Different run-time requirements use different container interfaces

Component & homedefinitions

Component & Home Servants• Navigation interface operations• Receptacles interface operations• Events interface operations•CCMObject interface operations•CCMHome interface operations• Implied equivalent IDL 2 port operations• Application-related operations

• i.e., facets, supported interfaces, event consumers

IDL 3

C++/Java/etc.IDL 3 compiler

Page 73: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Difficulties with Implementing CORBA 2.x Objects• Problems

• Generic lifecycle & initialization server code must be handwritten, e.g.:

• Server initialization & event loop code

• Support for introspection & navigation of object interfaces

• Server application developers must

• Keep track of dependencies their objects have on other objects

• Manage the policies used to configure their POAs & manage object lifecycles

• Consequences are ad hoc design, code bloat, limited reuse

StubFiles

ImplFiles

Generated Hand-Written

SkeletonFiles

Generates Inherits

Server

IDL Compiler

IDL File

Page 74: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Implementation Framework (CIF)

• Defines programming model rules & tools for developing component implementations

– i.e., specifies how components should be implemented via executors

CIDLFILES

CIDLCompiler

InterfaceRepository

IDLFILES

Component-aware

IDL Compiler

Server Skeletons Client StubsExecutor IDL

Executor Source

C++Compiler

Client Source

Component/Executor (DLL)

ClientExecutable

ComponentDescription (XML)

IDL Compiler

Executor Skeletons

C++Compiler

• Facilitates component implementation

– “only” business logic should be implemented, not activation, identification, port management, introspection, etc

• Automates much of the component implementation “glue” code

Page 75: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CCM Executors & Home Executors• Programming artifacts that implement a

component or component home’s behavior

– Local CORBA objects with interfaces defined by the local server-side OMG IDL mapping

• Component executors can be monolithic

– All component attributes, supported interfaces, facet operations, & event sinks implemented by one class

• Component executors can also be segmented

– Component features split into several classes

– Implements ExecutorLocator interface

• Home executors are always monolithic

HelloHome servant

HelloWorld servant

HelloHome_Exec

HelloWorld_Exec

Manages

Page 76: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Executors Are Hosted by Containers• Container intercepts invocations on

executors for managing activation, security, transactions, persistency, etc.

• Component executors must implement a local callback lifecycle interface used by the container

–SessionComponent for transient components

–EntityComponent for persistent components

• Component executors can interact with their containers & connected components through a local context interface Container

Servant

ComponentSpecificContext

CCMContext

MainComponent

Executor

ExecutorsExecutorsExecutors

POA

EnterpriseComponent

CCMContext

Container

Servant

ComponentSpecificContext

CCMContext

MainComponent

Executor

ExecutorsExecutorsExecutors

POA

EnterpriseComponent

CCMContext

Container

CORBAComponent

POA

Ext

ern

al

Inte

rfa

ces

InternalInterfaces

user implemented

code

Page 77: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

A Monolithic Component Executor

Monolithic executor

Container context

Componentspecificcontext

Component container

Main component executor interface

Facet or event sink executor interface

SessionComponent or EntityComponent

Component-oriented context interface

Container-oriented context interface

Container interposition

Context use

Page 78: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

A Segmented Component Executor

Main segment

Container context

Componentspecificcontext

Component container

Seg2 Seg4Seg3

ExecutorLocator

Page 79: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Overview of Component Implementation Definition Language (CIDL)

• Describes a component composition–Aggregate entity that describes all the

artifacts required to implement a component & its home

• Manages component persistence state–With OMG Persistent State Definition

Language (PSDL)–Links storage types to segmented

executors• Generates executor skeletons providing

–Segmentation of component executors–Default implementations of callback

operations–Component’s state persistence

CIDL

PSDL

IDL3IDL2

Page 80: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Facilitating Component Implementation via CIDL

• CIDL is part of the CCM strategy for managing complex component applications

• Enhances separation of concerns

• Helps coordinate tools

• Increases the ratio of generated to hand-written code

• Server code is now generated, startup automated by other CCM tools

Stub

Impl

Skel

IDL Compiler

IDL

CIDL

CIDL Compiler

Executor IDL

Servants

Executors

IDL Compiler

XMLComponentDescriptors

uses

Page 81: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Facilitating Component Composition via CIDL

• Component lifecycle category

– i.e., service, session, process, entity

• Composition name specifies home executor skeleton to generate

• Component home type implemented

–Implicitly the component type implemented

• Name of main executor skeleton to generate

composition <category> <composition name> { home executor <home_executor_name>; implements <home_type>; manages <executor_name>;

component home

component

home executor

component executor

CIDL generated

IDL generated

manages

implements

manages

implements

explicitly defined in IDL/CIDL

implicitly defined in compositionexplicitly defined in composition

Page 82: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Connecting Components & Containers with CIDL

• CIDL & IDL 3.0 compilers generate infrastructure “glue” code that connects together component implementations & container that hosts them

Component executor

Server-side Mapping

Servant managingports, life cycle, etc.

Compilingfor CIF/C++

OMG 3.0 IDL

file + CIDL

• Infrastructure code in container intercepts invocations on executors

–e.g., can be used to manage activation, security, transactions, persistency, & so on

• CIF defines “executor mappings”

Page 83: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

CCM Component Application Examples

www.cs.wustl.edu/~schmidt/cuj-19.doc

Page 84: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

• Define your interfaces using IDL 2.x features, e.g., use the familiar CORBA types (such as struct, sequence, long, Object, interface, raises, etc.) to define your interfaces and exceptions

• Define your component types using IDL 3.x features, e.g., use the new CCM keywords (such as component, provides, uses, publishes, emits, & consumes) to group the IDL 2.x types together to form components

• Use IDL 3.x features to manage the lifecycle of the component types, e.g., use the new CCM keyword home to define factories that create & destroy component instances

• Implement your components, e.g., using C++ or Java & the Component Implementation Definition Language (CIDL), which generates the component implementation executors & associated metadata

• Assemble your components, e.g., group related components together & characterize their metadata that describes the components present in the assembly

• Deploy your components & run your application, e.g., move the component assemblies to the appropriate nodes in the distributed system & invoke operations on components to perform the application logic

Steps for Developing CCM Applications

Page 85: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Summary of Server OMG IDL Mapping Rules• A component type is mapped to three local interfaces

–The component executor interface

• Inherits from Components:: EnterpriseComponent and provides operations for attributes and receiving events

–A facet executor interface

• Operations to obtain facets

–The component-specific context interface

• Operations to publish events & access component receptacles

• A home type is mapped to four local interfaces

– An explicit executor interface for user-defined operations

• Inheriting from Components:: HomeExecutorBase

– An implicit executor interface for create () operation

– A main executor interface inheriting from both previous interfaces

– And a composition executor interface inheriting from the main executor interface

Page 86: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Overview of CCM Tool Chain for HelloWorld Example

GENERATED

Stub

Impl

Skel

IDL Compiler

IDL

CIDL

CIDL Compiler

Executor IDL

Servants

Executors

IDL Compiler

XMLComponentDescriptors

INHERITED

helloC.hhelloC.cpp

helloS.hhelloS.cpp

hello_svnt.hhello_svnt.cpp

helloE.idlhelloEC.hhelloEC.cpp

Page 87: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

HelloWorld IDL 3 File & Generated Code

• IDL file has IDL3 keywords–e.g., component, home, supports, & manages

• Processed by IDL compiler that supports IDL3 features

• Can be processed by another tool to generate equivalent IDL2

// hello.idl#include <Components.idl>interface hello{ string sayHello (in string name}};component HelloWorld supports Hello{};home HelloHome manages HelloWorld{};

// helloC.h – Stub file class HelloWorld : public virtual ::Components::CCMObject, public virtual ::Hello {};

// helloC.h – Stub fileclass HelloHomeExplicit : public virtual ::Components::CCMHome {};

// helloC.h – Stub file class HelloHomeImplicit : public virtual ::Components::KeylessCCMHome {};

// helloC.h – Stub fileclass HelloHome : public virtual HelloHomeExplicit, public virtual HelloHomeImplicit {};

// helloS.h – Servant fileclass POA_HelloWorld : public virtual POA_Components::CCMobject, public virtual POA_Hello {};

// helloS.h – Servant fileclass POA_Hello : public virtual PortableServer::ServantBase {};

Page 88: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

HelloWorld CIDL & Generated Servant Code• Passed to CIDL compiler which

generates–servant code, completely

transparent to the developer. –executor IDL, which the

application implements• Servant code is generated for

–Components (e.g., HelloWorld_Servant)

• e.g., attribute operations, generic port operations, supported interface operations, & navigation operation overrides

–Homes (e.g., HelloHome_Servant)

–Facets

Generated by CIDL compiler(For both the Component and the Home)

Servant ImplementationExecutor Interface

Executor Implementation

User writes

Forward Request

Imp

lem

en

ts

// hello.idl#include <Components.idl>interface hello {};component HelloWorld supports Hello{};home HelloHome manages HelloWorld{};

// hello.cidl#include “hello.idl”composition session Hello_example{ home executor HelloHome_Exec { implements HelloHome; manages HelloWorld_Exec; };};

Servant code also contains Context classes

Page 89: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

class HelloWorld_Context : public virtual ::CCM_HelloWorld_Context, public virtual CORBA::LocalObject { // Operations from Components::CCMContext // Operations from Components::SessionContext // Operations from CCM_HelloWorld_Context};

HelloWorld CIDL-Generated Servants (hello_svnt.*)

class HelloWorld_Servant : public virtual POA_HelloWorld, public virtual PortableServer::RefCountServantBase{ // Supported operations // Operations on the navigation interface // Operations for the receptacle interfaces};

class HelloHome_Servant : public virtual POA_HelloHome, public virtual PortableServer::RefCountServantBase{ // Supported interface operations // Home operations // Factory and attribute operations // ImplicitHome operations ::HelloWorld_ptr create ();};

// hello.cidl#include “hello.idl”composition session Hello_example{ home executor HelloHome_Exec { implements HelloHome; manages HelloWorld_Exec; };};

Compilingfor CIF/C++

Page 90: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

HelloWorld CIDL & Generated Executor CodeGenerated by CIDL compiler(For both the Component and the Home)

Servant ImplementationExecutor Interface

Executor Implementation

User writes

Forward Request

Imp

lem

en

ts

// hello.idl#include “hello.idl”interface hello {};component HelloWorld supports Hello{};home HelloHome manages HelloWorld{};

// hello.cidl#include “hello.idl”composition session Hello_example{ home executor HelloHome_Exec { implements HelloHome; manages HelloWorld_Exec; };};

• Executor Interfaces– IDL or C++/Java code– Used by component

developers to complete applications

• Generate IDL/code has interfaces for – Implicit and explicit homes– Main home executor– Main and/or monolithic

component executors– Facet and consumer executor– A component context

• All executor interfaces are locality constrained– i.e., uses keyword local

Component developers should onlyuse executor interfaces

Page 91: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

local interface CCM_HelloWorld : Components::EnterpriseComponent, ::Hello{};

HelloWorld CIDL-Generated Executor IDL (helloE.idl)// hello.cidl#include “hello.idl”composition session Hello_example{ home executor HelloHome_Exec { implements HelloHome; manages HelloWorld_Exec; };};

local interface CCM_HelloWorld_Context : ::Components::SessionContext{};

local interface CCM_HelloHomeImplicit{ ::Components::EnterpriseComponent create () raises (::Components::CCMException);};

local interface CCM_HelloHomeExplicit : ::Components::HomeExecutorBase {};

local interface CCM_HelloHome : CCM_HelloHomeExplicit, CCM_HelloHomeImplicit {};

local interface HelloWorld_Exec : CCM_HelloWorld, Components::SessionComponent{};

local interface HelloHome_Exec : ::CCM_HelloHome {};

Component Executor Interface

Component Context Interface

Implicit Home interface

Explicit Home interface

Main Component Executor Interface

Main Home Interface

The interface names are spec-compliant & generated by examining the CIDL & the included IDL’s

Page 92: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Implementing HelloWorld Executor (helloEC.*)

HelloHome servant

HelloWorld servant

HelloHome_Exec

HelloWorld_Exec

Manages

// hello.cidl#include “hello.idl”composition session Hello_example{

home executor HelloHome_Exec{ implements HelloHome; manages HelloWorld_Exec; }

};

• An executor is where a component/home is implemented

–The component/home’s servant will forward a client’s business logic request on the component to its corresponding executor

• User should implement the following *_Exec local interfaces generated by the CIDL compiler:

–HelloHome_Exec

–HelloWorld_Exec

• We give these executor implementations stylized names

–HelloHome_Exec_Impl

–HelloWorld_Exec_Impl

Page 93: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

HelloWorld Component Executorsclass HelloWorld_Exec_Impl : public virtual HelloWorld_Exec, public virtual CORBA::LocalObject {public: HelloWorld_Exec_Impl () {} ~HelloWorld_Exec_Impl () {} void sayHello (const char *name) { cout << “Hello World! -- from ” << name << endl; } // … _add_ref() and _remove_ref()};

•HelloWorld_Exec_Impl executor implements behavior of HelloWorld component

•HelloHome_Exec_Impl executor implements lifecycle management strategy of HelloWorld component

class HelloHome_Exec_Impl : public virtual HelloHome_Exec, public virtual CORBA::LocalObject {public: HelloHome_Exec_Impl () {} ~HelloHome_Exec_Impl () {}

Components::EnterpriseComponent_ptr create () { return new HelloWorld_Exec_Impl; } // … _add_ref() and _remove_ref()

};

$CIAO_ROOT/docs/tutorial/Hello/

•CORBA::LocalObject, is of type CORBA::Object

• Objects of type CORBA::LocalObject cannot generate references

Page 94: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment & Configuration of HelloWorld Example

AssemblyServerActivator

ComponentServer

Container

CCMHome

«instantiates»

«instantiates»

«instantiates»

...createHelloHome_Impl ()

Canonical steps in the Hello deployment & configuration process:

• Create the component server environment within which homes & containers reside

• Create home factories for the component containers

• Create containers for the components

• Create the components themselves

• Register components, &

• Establish connections between components

Page 95: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

HelloWorld Component Entry Point Exampleextern "C" {Components::HomeExecutorBase_ptrcreateHelloHome_Impl (void) { return new HelloHome_Exec_Impl;}}

• The signature is defined by the CCM spec

•extern “C” required to prevent C++ name mangling, so function name can be resolved in DLL

• Container calls this method to create a home executor

• User or modeling tool should generate the XML file that contains this information

AssemblyServerActivator

ComponentServer

Container

CCMHome

«instantiates»

«instantiates»

«instantiates»

...createHelloHome_Impl ()

Page 96: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Implementing Port Mechanisms for HUD Display Example• Component developers must implement

–Executors for “provided” ports that are invoked by its clients

• Facets

• Event sinks

–Executors that invoke the component’s “required” ports

• Receptacles

• Event sources

NavDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Component Server

Rate Generator

PositioningSensor

DisplayingDevice

This is the majority of the code implemented by component developers!

Page 97: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Implementing Facets Local Interface // IDL 3

interface position{ long get_pos ();};

component GPS{ provides position MyLocation; …};

// Equivalent IDL 2

interface GPS : Components::CCMObject{ position provide_MyLocation ();

…};

local interface CCM_position:position {};local interface GPS_Exec : CCM_GPS, Components::SessionComponent{ CCM_position get_MyLocation();};

class GPS_Exec_Impl : public virtual GPS_Exec, public virtual CORBA::LocalObject {public: virtual CCM_position_ptr get_MyLocation () { return new position_Exec_Impl; }};

class position_Exec_Impl : public CCM_position, … { virtual CORBA::Long get_pos () { return cached_current_location_; }};

GPS

MyLocation

Refresh Ready

Page 98: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Event Sinks• Event sinks

–Clients can acquire consumer interfaces, similar to facets

–CIDL generates event consumer servants

–Executor mapping defines typed push operations directly

// IDL 3

component NavDisplay{ … consumes tick Refresh;};

// Equivalent IDL 2

interface NavDisplay : Components::CCMObject{

… tickConsumer get_consumer_Refresh(); …};

NavDisplayRefresh

GetLocationclass NavDisplay_Exec_Impl : public virtual NavDisplay_Exec, public virtual CORBA::LocalObject {public: … virtual void push_Refresh (tick *ev) { // Call a user-defined method // (defined later) to perform some // work on the event. this->refresh_reading (); } …};

Page 99: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Initializing Component-specific Context• Calls to set context information are

invoked automatically during deployment, as a callback

• Component implementations need to implement this call in their executor code

Container

Servant

ComponentSpecificContext

CCMContext

MainComponent

Executor

ExecutorsExecutorsExecutors

POA

EnterpriseComponent

CCMContext

Container

Servant

ComponentSpecificContext

CCMContext

MainComponent

Executor

ExecutorsExecutorsExecutors

POA

EnterpriseComponent

CCMContext

class GPS_Exec_Impl : public virtual GPS_Exec, public virtual CORBA::LocalObject {private: CCM_GPS_Context_var context_;public: … void set_session_context (Components::SessionContext_ptr c) { this->context_ = CCM_GPS_Context::_narrow (c); } …};

• Component-specific context manages connections & subscriptions

• Container passes component its context via either

–set_session_context()

–set_entity_context()

Page 100: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Using Receptacle Connections• Component-specific context manages

receptacle connections

• Executor acquires its connected receptacle reference from the context

// IDL 3

component NavDisplay{ … uses position GPSLocation; …};

// Equivalent IDL 2

interface NavDisplay : Components::CCMObject{ … void connect_GPSLocation (in position c); position disconnect_GPSLocation(); position get_connection_GPSLocation (); …};

NavDisplay

Refresh

GPSLocation

class NavDisplay_Exec_Impl : public virtual NavDisplay_Exec, public virtual CORBA::LocalObject {public: … virtual void refresh_reading (void) { position_var cur = this->context_-> get_connection_GPSLocation (); long coord = cur->get_pos (); … } …};

Page 101: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Pushing Events from a Component// IDL 3

component RateGen{ publishes tick Pulse; emits tick trigger; …

};

// Equivalent IDL 2

interface RateGen : Components::CCMObject{ Components::Cookie subscribe_Pulse (in tickConsumer c); tickConsumer unsubscribe_Pulse (in Components::Cookie ck);

…};

RateGenPulse

Rate

class RateGen_Exec_Impl : public virtual RateGen_Exec, public virtual CORBA::LocalObject {public: … virtual void send_pulse (void) { tick_var ev = new tick; this->context_->push_Pulse (ev.in ()); } …};

• Component-specific context also

–Manages consumer subscriptions (for publishers) & connections (for emitters)

–Provides the event pushing operations & relays events to consumers

Page 102: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Component Packaging, Assembly, & Deployment

Page 103: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Overview of Configuration & Deployment Process

NavDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

• Goals

– Ease component reuse

– Build complex applications by assembling existing components

– Deploy component-based application into heterogeneous domain

• Separation of concerns

– Component development

– Application assembly

– Application deployment

– Application configuration

– Server configuration

DeploymentApplication

Deployer

Page 104: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Configuration Problem

• Components interact with other software artifacts & environment to achieve specific functions

– e.g., using a specific runtime library to encrypt & decrypt data

• Some prior knowledge of the runtime environment may be required during development

– e.g., rates of certain tasks based on the functional role played

• Need to configure the middleware for specific QoS properties

– e.g., transport protocols, timeouts, event correlation

• Adding environment & interaction details with the business logic leads to coupling

– e.g., tightly coupled code leads to poor reusability & QoS

Component middleware & applications are characterized by a large configuration space that maps known variations in the application requirements space to known variations in the solution space

Page 105: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Configuration Idea & SolutionIdea:• Configure runtime &

environment properties late in the software lifecycle, i.e., during deployment

iMac

Ethernet

CONFIGURATION ATDEPLOYMENT

Solution:

• Well-defined exchange formats to represent configuration properties

– Can represent a wide variety of data types

– Well-defined semantics to interpret the data

• Well-defined interfaces to pass configuration data from “off-line” tools to components

• Well-defined configuration boundary between the application & the middleware

Page 106: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Problem• Component implementations are usually hardware-specific

–Compiled for Windows, Linux, Java – or just FPGA firmware

–Require special hardware

• e.g., GPS sensor component needs access to GPS device (e.g., on serial bus or USB)

• e.g., Navigation display component needs … a display

– not as trivial as it may sound!

• Computers, networks are heterogeneous

–Not all computers can execute all component implementations

• The above is true for each & every component of an application

–Each component has different requirements

Page 107: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Idea

SWCreator2

SW DeployerDeployment

Infrastructure

D & C Model(PIM & PSMs)

InterchangeFormats

Deployment Tools (generic)

DeploymentInterfaces

InfrastructureInterfacesA2A1

Deploymentrequirements

Implementations

D+CProfile

Shipping

SW Creator1

XMLSchemaGeneration IDL

Generation

Page 108: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Solution• Well-defined exchange format

–Defines what a software vendor delivers

–Requires “off-line” data format, to be stored in files

• Well-defined Interfaces

–Infrastructure to install, configure and deploy software

–Requires “on-line” data format, to be passed to & from interfaces

• Well-defined software meta-data model

–Annotate software & hardware with interoperable, vendor-independent, deployment-relevant information

–Generate “on-line” & “off-line” data formats from model

Page 109: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Old OMG Packaging & Deployment Specification

Page 110: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Packaging Stage

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

XMLComponent &

Home Properties

XMLComponentDescriptors

(.ccd)

PackagingTools

ComponentPackages(Zippedarchives

*.car)

AssemblingTools

XMLComponent &

Home Properties

AssemblyPackages(Zippedarchives

*.aar)

XMLSoftpkg

Descriptors(.csd)

XMLAssembly

Descriptors(.cad)

DeploymentTools

Target PlatformProperties

ComponentConfigurations

Packaging: bundling a component implementation with associate metadata

Page 111: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Packages• Goals

– Configure components, containers, servers

– Extract these aspects into metadata

• That’s a lot of stuff to be bundled together & moved around

• “Classic” CORBA: No standard means of configuration, distribution, & deployment

• Packaging of components

– Components are packaged into a self-descriptive package as a compressed archive

• XML descriptors provide metadata that describe

– The content of a package

– The capability of components

– The dependencies to other software artifacts

• e.g., Other components, 3rd party DLLs, & Value factories

PackagingTool

Implementation

ComponentDescriptor

Default Properties

Home Properties

softpkgDescriptor

CORBA

Package

CORBAComponent

Package

packager

Page 112: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Application Assembling Stage

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

XMLComponent &

Home Properties

XMLComponentDescriptors

(.ccd)

PackagingTools

ComponentPackages(Zippedarchives

*.car)

AssemblingTools

XMLComponent &

Home Properties

AssemblyPackages(Zippedarchives

*.aar)

XMLSoftpkg

Descriptors(.csd)

XMLAssembly

Descriptors(.cad)

DeploymentTools

Target PlatformProperties

ComponentConfigurations

Assembly: Set of components packages & metadata that specify composition of application

Page 113: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Assembling• Goals

– Configure components, containers, servers, and applications

– Extract these aspects into metadata– Provide higher level of modeling

• “Classic” CORBA: No standard means of– Configuration– Distribution– Deployment

• An assembly descriptor specifies:– Component implementations– Component/home instantiations– Interconnections

Properties DeploymentTool

AssemblyArchive

.aar (ZIP)

Assembly/

PackagingTool

ComponentPackage

ComponentPackage

ComponentPackage

PortConnections

InstanceCreation

Page 114: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Implementation Specifications

<!– Assembly descriptors associate components with implementations --><!- in software packages defined by softpkg descriptors (*.csd) files --> <componentfiles> <componentfile id=“com-RateGen"> <fileinarchive name=“RateGen.csd"/> </componentfile>

<componentfile id=“com-GPS"> <fileinarchive name=“GPS.csd"/> </componentfile>

<componentfile id=“com-Display"> <fileinarchive name=“NavDisplay.csd"/> </componentfile>

</componentfiles>

navDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Rate Generator

PositioningSensor

DisplayingDevice

Page 115: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Home/Instances Installation Specifications<!– Instantiating component homes/instances -->

<partitioning> <hostcollocation> ...

<homeplacement id=“a_RateGenHome"> <componentfileref idref=“com-RateGen"/> <componentinstantiation id=“a_RateGen"> <componentproperties> <fileinarchive name=“NavRateGen.cpf"/> </componentproperties> </componentinstantiation> </homeplacement> ... <destination>A_Remote_Host</destination> </hostcollocation></partitioning>

• An assembly descriptor specifies how & where homes & components should be instantiated

• A component property file (.cpf) can be associated with a home or a component instantiation to override default component properties

Page 116: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Interconnection Specification<connections> ... <connectinterface> <usesport> <usesidentifier>GPSPosition</usesidentifier> <componentinstantiationref idref=“a_NavDisplay"/> </usesport> <providesport> <providesidentifier> MyLocation </providesidentifier> <componentinstantiationref idref=“a_GPS"/> </providesport> </connectinterface> <connectevent> <consumesport> <consumesidentifier>Refresh</consumesidentifier> <componentinstantiationref idref=“a_GPS"/> </consumesport> <publishesport> <publishesidentifier> Pulse </publishesidentifier> <componentinstantiationref idref=“a_RateGen"/> </publishesport> </connectevent> ...</connections>

• Assembly descriptors also specify how component instances are connected together

navDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Rate Generator

PositioningSensor

DisplayingDevice

Page 117: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Two Deployment Examples

Instrument Cluster

Positioning Unit

GUIDisplayRefresh

GPSLocation

LEDDisplayRefresh

GetLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Instrument ClusterPositioning Unit

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

GUIDisplayRefresh

GPSLocation

• Making configuring, assembling, & deploying of applications easy

• Component configurations

• Component implemenations

• Inter-connections

• Logical location constraints

RemoteDisplayGUI.cad

DuelDisplay.cad

Page 118: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Stage

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

XMLComponent &

Home Properties

XMLComponentDescriptors

(.ccd)

PackagingTools

ComponentPackages(Zippedarchives

*.car)

AssemblingTools

XMLComponent &

Home Properties

AssemblyPackages(Zippedarchives

*.aar)

XMLSoftpkg

Descriptors(.csd)

XMLAssembly

Descriptors(.cad)

DeploymentTools

Target PlatformProperties

ComponentConfigurations

Deployment: Realization of a single component or an assembly specification

Page 119: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Application Deployment• Deployment tools

– Have knowledge of target platforms

– Map locations in assembly to physical nodes

– Manage available resources for applications

– Use standard CCM interfaces defined in moduleComponents::Deployment to realize an assembly

Client

Middleware Bus

Platform/Resource

Configuration

System Development

Field RadarControlSystem

Real-TimeFlightStatus

DataCenterComponent

Assembly

FlightScheduling

AirportApproachControl

ComponentRepository

Deploy:Installation

InstantiationInterconnection

Page 120: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

New OMG Deployment & Configuration Specification

Page 121: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CCM Deployment & Configuration (D+C) Spec• “D+C” spec was adopted by OMG

last year

• Intended to replace Packaging & Deployment chapter of CCM specification

• Supports …

–Hierarchical assemblies

–Resource management

–QoS characteristics

–Automated deployment

–Vendor-independent deployment infrastructure

Meta-data

Component Component

Meta-data

Implementation

QoSProperties

Checksum

Version Dependencies

DLL DLL

List of FilesQoS Specs ComponentInterconnections

Assembly

DeploymentApplication

Assembly Assembly

ImplementationDLL DLL

Meta-data

QoSProperties

Checksum

Version Dependencies

Deployer

Page 122: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

D+C & the MDA Approach• Platform-independent model

– Defines “deployment” model

– Independent of CORBA and CCM

• Refined into CCM-specific model (T1)

• Uses standard mappings to generate

– IDL (for “on-line” data)

• using UML Profile for CORBA (M1)

– XML Schema (for “off-line” data)

• using XMI (M2)

• Intermediate transformation T2

– Transforms PSM for CCM into suitable input for M1 and M2

PlatformIndependentModel (PIM)

Platform Specific Model(PSM) for CCM

PSM forCCM for

IDL

PSM forCCM for

XML

IDLXML

Schema

T1

T2

M1 M2

Page 123: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

D+C Metadata Model Slices• Component Model

–Metadata to describe component-based applications

–“Repository Manager” interface for installing, maintaining and retrieving Component Packages

• Target Model

–Metadata to describe available resources

–“Target Manager” interface for accessing and tracking resources

• Execution Model

–Metadata to describe “Deployment Plan”

–“Execution Manager” interface to execute applications according to plan

Page 124: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

D+C Actors• Different Stages

– Development

• Developer

• Assembler

• Packager

– Target

• Domain Administrator

– Deployment

• Repository Administrator

• Planner

• Executor

• Actors are abstract

– Usually human + software tool

Domain

AccessResources

Assembler

Assembler

Planner

DomainAdministrator

Specifies

CreatesComponent

ResourceRequirements

Impl Impl Impl

Properties

COMPONENT REPOSITORY

QoS Specs

Configurations

Dependencies

Developer

CreatesComponent Assembly

ComponentComponent

ComponentComponent

Creates Packager

RepositoryAdministrator

Component Packages

Configures

Desktop Printer Laptop computer

Ethernet Bridge

Firewall

Creates

Executor

Deployment PlanUses

Deploys

Development

Target Deployment

Page 125: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component-based Software: Component• Component

–Modular–Encapsulates its contents–Replaceable “black box”,

conformance defined by interface compatibility

• Component Interface

–“Ports”: provided interfaces, used (required) interfaces

–Attributes

• Component Implementation

–Either “Monolithic” or

–“Assembly-based”

Page 126: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Monolithic Implementation• Monolithic Implementation

–Executable piece of software

• One or more “implementation artifacts” (e.g., .exe, .so, .class)

• Zero or more supporting artifacts (e.g., config files)

–May have hardware or software requirements

• Specific CPU (e.g., x86)

• Specific OS (e.g., Linux)

• Hardware devices (e.g., GPS sensor)

Page 127: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Assembly-based Implementation• Set of interconnected subcomponents

• Hardware and software independent

–Reuses subcomponents as “black boxes”, independent of their implementation

• Implements a specific component interface

–Ports & attributes are “mapped” to subcomponents

• Assemblies are fully reusable

–Can be “standalone” applications, or reusable components

–Can be used in an encompassing assembly

Page 128: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Package• Component Package

–A set of alternative, replaceable implementations of the same component interface

• e.g., Implementations for Win32, Linux, Java

–May be a mix of monolithic and assembly-based implementations

• e.g., a parallel, scalable implementation for Mercury multicomputer, or a single, monolithic Java component

–Implementations may have different “Quality of Service”

• e.g., latency, resolution

–“Best” implementation is chosen at deployment time

• Based on available hardware and QoS requirements

Page 129: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Development Actors

Specifier

ImplementationArtifact(from Meta-Concepts)

<<Developer>>

Packager

**

DeveloperComponentImplementationDescription

(from Component)

<<Implementer>>

1..*1..*

ComponentInterfaceDescription(from Component)

<<Specifier>>

<<create>>

11

11

ComponentPackage(from Meta-Concepts)

<<Packager>>

<<create>>

Assembler

11

<<create>>

**

1..*

<<create>>

1

<<create>>

Page 130: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Packaging

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

Component &Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackages

(*.cpk)

Component &Home Properties

ComponentPackage

Descriptors(.cpd)

DeploymentTools

ImplementationArtifact

Descriptors(.iad)

DeploymentPlan

Descriptor(.cdp)

ComponentDomain

Descriptor(.cdd)

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

Goal: Associate a component implementation with its meta-data

Page 131: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Packaging Tools• Goals

–Extract systemic properties into meta-data

–Configure components, containers, target environment, applications

ComponentDLLs

Component &Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackage

Descriptors(.cpd)

ImplementationArtifact

Descriptors(.iad)

ComponentPackages

(*.cpk)

• CCM component packages bring together

–Multiple component implementations

–Component properties

–Descriptors (XML Files)

• Descriptors provide meta-data that describe contents of a package, dependencies on other components, 3rd party DLLs, & value factories

Page 132: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Application Assembly

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

XMLComponent &

Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackages

(*.cpk)

Component &Home Properties

ComponentPackage

Descriptors(.cpd)

DeploymentTools

ImplementationArtifact

Descriptors(.iad)

DeploymentPlan

Descriptor(.cdp)

ComponentDomain

Descriptor(.cdd)

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

Goal: Group packages & meta-data by specifying inter-connections

Page 133: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Application Assembly Tools• Goals

–Compose higher level components from set of sub- components

–Store composition information as meta-data

–Provide logical abstractionComponentPackages

(*.cpk)

Component &Home Properties

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

DeploymentTools

PackagingTools

• Component assembly description specifies:

–Sub-component packages

–Sub-component instantiation andconfiguration

– Interconnections

–Mapping of ports and properties to subcomponents

• “Pure meta-data” construct (no code, hardware-independent)

Page 134: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Data Model Overview

{same interface or base type}

{xor}

{xor}

PackageConfiguration<<Description>>

0..1

+specializedConfig

0..1

ComponentAssemblyDescription<<Assembler>>

ComponentPackageDescription<<Packager>>

1..*1..*0..1+basePackage 0..1

ComponentInterfaceDescription<<Specifier>>1

+realizes

1

ComponentImplementationDescription<<Implementer>>

0..1+assemblyImpl

0..1

1..*

+implementation

1..*

1

+implements

1

MonolithicImplementationDescription<<Developer>>

0..1+monolithicImpl

0..1

ImplementationArtifactDescription<<Developer>> *

+dependsOn

*

1..*+primaryArtifact 1..*

Page 135: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Example CCM DRE Application

• “Display” component is an assembly of three components

• RateGen, GPS, & NavDisplay implemented monolithically

• GPS component requires “GPS” device

• Two alternative implementations for NavDisplay

–Text-based & GUI versions

NavDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Rate

DisplayControl

Page 136: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Interface Description

{same interface or base type}

{xor}

{xor}

PackageConfiguration<<Description>>

0..1

+specializedConfig

0..1

ComponentAssemblyDescription<<Assembler>>

ComponentPackageDescription<<Packager>>

1..*1..*0..1+basePackage 0..1

ComponentInterfaceDescription<<Specifier>>1

+realizes

1

ComponentImplementationDescription<<Implementer>>

0..1+assemblyImpl

0..1

1..*

+implementation

1..*

1

+implements

1

MonolithicImplementationDescription<<Developer>>

0..1+monolithicImpl

0..1

ImplementationArtifactDescription<<Developer>> *

+dependsOn

*

1..*+primaryArtifact 1..*

Page 137: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Interface Description

• Meta-data to describe a component interface

–Identifies a component’s specific (most-derived) type, and supported (inherited) types

–Describes a component’s ports and properties (attributes)

–Optionally configures default property values

ComponentPortDescription<<Specifier>>

name : StringspecificType : StringsupportedType : String [1..*]provider : BooleanexclusiveProvider : BooleanexclusiveUser : Booleanoptional : Boolean

ComponentInterfaceDescription<<Specifier>>

label : String [0..1]UUID : String [0..1]specificType : StringsupportedType : String [1..*]

*+port

*

DataType(from Common)

<<Description>>

ComponentPropertyDescription<<Specifier>>

name : String

*+property

*

1+type1

Any(from Common)

<<Description>>

Property(from Common)

<<Description>>

name : String

*

+configProperty

*

*+infoProperty

*

1+value

1

Page 138: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Interface Descriptorfor RateGen component: RateGen.ccd (1/3)

<?xml version='1.0' encoding='ISO-8859-1'?>

<Deployment:ComponentInterfaceDescription

xmlns:Deployment='http://www.omg.org/Deployment'

xmlns:xmi='http://www.omg.org/XMI'

>

<label>Rate Generator</label>

<specificType>IDL:HUDisplay/RateGen:1.0</specificType>

<supportedType>IDL:HUDisplay/RateGen:1.0</supportedType>

<idlFile>RateGen.idl</idlFile>

<port>

<name>supports</name>

<specificType>IDL:HUDisplay/opmode:1.0</specificType>

<supportedType>IDL:HUDisplay/opmode:1.0</supportedType>

<provider>true</provider>

<exclusiveProvider>false</exclusiveProvider>

<exclusiveUser>false</exclusiveUser>

<optional>true</optional>

<kind>Facet</kind>

</port>

[...]

</Deployment:ComponentInterfaceDescription>

Rate

Pulse

RateGen

Page 139: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Interface Descriptorfor RateGen component: RateGen.ccd (2/3)

<Deployment:ComponentInterfaceDescription>

[...]

<port>

<name>Pulse</name>

<specificType>IDL:HUDisplay/tick:1.0</specificType>

<supportedType>IDL:HUDisplay/tick:1.0</supportedType>

<provider>false</provider>

<exclusiveProvider>false</exclusiveProvider>

<exclusiveUser>false</exclusiveUser>

<optional>true</optional>

<kind>EventPublisher</kind>

</port>

<property>

<name>Rate</name>

<type>

<kind>tk_long</kind>

</type>

</property>

[...]

</Deployment:ComponentInterfaceDescription>

Rate

Pulse

RateGen

Page 140: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Interface Descriptorfor RateGen component: RateGen.ccd (3/3)

<Deployment:ComponentInterfaceDescription>

[...]

<configProperty>

<name>Rate</name>

<value>

<type>

<kind>tk_long</kind>

</type>

<value>

<long>1</long>

</value>

</value>

</configProperty>

</Deployment:ComponentInterfaceDescription>

Rate

Pulse

RateGen

• Default value for Rate property–Can be overridden by implementation, package, assembly, user, or at

deployment time

Page 141: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Interface Descriptorfor GPS component: GPS.ccd (1/2)

<?xml version='1.0' encoding='ISO-8859-1'?>

<Deployment:ComponentInterfaceDescription

xmlns:Deployment='http://www.omg.org/Deployment'

xmlns:xmi='http://www.omg.org/XMI'

>

<label>Positioning Sensor</label>

<specificType>IDL:HUDisplay/GPS:1.0</specificType>

<supportedType>IDL:HUDisplay/GPS:1.0</supportedType>

<idlFile>GPS.idl</idlFile>

<port>

<name>MyLocation</name>

<specificType>IDL:HUDisplay/position:1.0</specificType>

<supportedType>IDL:HUDisplay/position:1.0</supportedType>

<provider>true</provider>

<exclusiveProvider>false</exclusiveProvider>

<exclusiveUser>false</exclusiveUser>

<optional>true</optional>

<kind>Facet</kind>

</port>

[...]

</Deployment:ComponentInterfaceDescription>

MyLocation

Ready

GPS

Refresh

Page 142: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Interface Descriptorfor GPS component: GPS.ccd (2/2)

<Deployment:ComponentInterfaceDescription> [...]

<port>

<name>Ready</name>

<specificType>IDL:HUDisplay/tick:1.0</specificType>

<supportedType>IDL:HUDisplay/tick:1.0</supportedType>

<provider>false</provider>

<exclusiveProvider>false</exclusiveProvider>

<exclusiveUser>false</exclusiveUser>

<optional>true</optional>

<kind>EventPublisher</kind>

</port>

<port>

<name>Refresh</name>

<specificType>IDL:HUDisplay/tick:1.0</specificType>

<supportedType>IDL:HUDisplay/tick:1.0</supportedType>

<provider>true</provider>

<exclusiveProvider>false</exclusiveProvider>

<exclusiveUser>false</exclusiveUser>

<optional>false</optional>

<kind>EventConsumer</kind>

</port>

</Deployment:ComponentInterfaceDescription>

MyLocation

Ready

GPS

Refresh

Page 143: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Interface Descriptorfor NavDisplay component: NavDisplay.ccd (1/2)<Deployment:ComponentInterfaceDescription

xmlns:Deployment='http://www.omg.org/Deployment'

xmlns:xmi='http://www.omg.org/XMI'

>

<label>Display Device</label>

<specificType>IDL:HUDisplay/NavDisplay:1.0</specificType>

<supportedType>IDL:HUDisplay/NavDisplay:1.0</supportedType>

<idlFile>NavDisplay.idl</idlFile>

<port>

<name>Refresh</name>

<specificType>IDL:HUDisplay/tick:1.0</specificType>

<supportedType>IDL:HUDisplay/tick:1.0</supportedType>

<provider>true</provider>

<exclusiveProvider>false</exclusiveProvider>

<exclusiveUser>false</exclusiveUser>

<optional>false</optional>

<kind>EventConsumer</kind>

</port>

[...]

</Deployment:ComponentInterfaceDescription>

GPSLocation

NavDisplayRefresh

Page 144: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Interface Descriptorfor NavDisplay component: NavDisplay.ccd (2/2)<Deployment:ComponentInterfaceDescription>

[...]

<port>

<name>GPSLocation</name>

<specificType>IDL:HUDisplay/position:1.0</specificType>

<supportedType>IDL:HUDisplay/position:1.0</supportedType>

<provider>false</provider>

<exclusiveProvider>false</exclusiveProvider>

<exclusiveUser>true</exclusiveUser>

<optional>false</optional>

<kind>SimplexReceptacle</kind>

</port>

</Deployment:ComponentInterfaceDescription>

GPSLocation

NavDisplayRefresh

Page 145: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Implementation Descriptionfor a Monolithic Implementation

{same interface or base type}

{xor}

{xor}

PackageConfiguration<<Description>>

0..1

+specializedConfig

0..1

ComponentAssemblyDescription<<Assembler>>

ComponentPackageDescription<<Packager>>

1..*1..*0..1+basePackage 0..1

ComponentInterfaceDescription<<Specifier>>1

+realizes

1

ComponentImplementationDescription<<Implementer>>

0..1+assemblyImpl

0..1

1..*

+implementation

1..*

1

+implements

1

MonolithicImplementationDescription<<Developer>>

0..1+monolithicImpl

0..1

ImplementationArtifactDescription<<Developer>> *

+dependsOn

*

1..*+primaryArtifact 1..*

Page 146: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Implementation Descriptionfor a Monolithic Implementation

• Meta-data to describe a monolithic component implementation

–Has deployment requirements, QoS capabilities

–References artifacts by URL, which may have dependencies

ComponentInterfaceDescription<<Specifier>>

Capability<<Implementer>>

ComponentImplementationDescription<<Implementer>>

label : String [0..1]UUID : String [0..1]

+implements

1

+capability

*

1

*

Requirement(from Common)

<<Description>>

name : StringresourceType : String

MonolithicImplementationDescription<<Developer>>

0..1+monolithicImpl

0..1

*

+deployRequirement

*

NamedImplementationArtifact<<Developer>>

name : String1..*

+primaryArtifact

1..*

Property(from Common)

<<Description>>*

+configProperty

*

*

+infoProperty

*

*

+property

* ImplementationArtifactDescription<<Developer>>

label : String [0..1]UUID : String [0..1]location : String [1..*]

1

+referencedArtifact

1

*

+dependsOn

*

Start Here

Page 147: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Implementation Descriptorfor RateGen component: RateGen.cid (1/2)

<?xml version='1.0' encoding='ISO-8859-1'?>

<Deployment:ComponentImplementation

xmlns:Deployment='http://www.omg.org/Deployment'

xmlns:xmi='http://www.omg.org/XMI'>

<implements href="RateGen.ccd"/>

<monolithicImpl>

<primaryArtifact>

<name>RateGen Executor</name>

<referencedArtifact>

<location>RateGen_exec.dll</location>

<dependsOn>

<name>CIAO Library</name>

<referencedArtifact>

<location>CIAO.dll</location>

</referencedArtifact>

</dependsOn>

</referencedArtifact>

</primaryArtifact>

[...]

</monolithicImpl>

</Deployment:ComponentImplementationDescription>

Rate

Pulse

RateGen

RateGen_exec.dll

Page 148: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Implementation Descriptorfor RateGen component: RateGen.cid (2/2)

<Deployment:ComponentImplementation>

<monolithicImpl> [...]

<deployRequirement>

<name>os</name>

<resourceType>Operating System</resourceType>

<property>

<name>version</name>

<value>

<type>

<kind>tk_string</kind>

</type>

<value>

<string>Windows 2000</string>

</value>

</value>

</property>

</deployRequirement>

</monolithicImpl>

</Deployment:ComponentImplementationDescription>

Rate

Pulse

RateGen

RateGen_exec.dll

Page 149: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

<?xml version='1.0' encoding='ISO-8859-1'?>

<Deployment:ComponentImplementationDescription>

<monolithicImpl> [...]

<deployRequirement>

<name>GPS</name>

<resourceType>GPS Device</resourceType>

<property>

<name>vendor</name>

<value>

<type>

<kind>tk_string</kind>

</type>

<value>

<string>My Favorite GPS Vendor</string>

</value>

</value>

</property>

</deployRequirement>

[... Requires Windows OS ...]

</monolithicImpl>

</Deployment:ComponentImplementationDescription>

MyLocation

Ready

GPS

Refresh

Component Implementation Descriptorfor GPS component: GPS.cid (excerpt)

GPS_exec.dll

Page 150: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Two Component Implementation Descriptorsfor NavDisplay component

• Two alternative implementations

–Therefore, two Component Implementation Descriptor files

• NavDisplay.cid

–text-based implementation

• NavDisplayGUI.cid

–GUI implementation

–“deployRequirement” on graphical display

• XML code not shown

GPS_exec.dllNavDisplay_exec.dll

GPSLocation

NavDisplayRefresh

GPS_exec.dllNavDisplayGUI_exec.dll

Page 151: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Package Description

{same interface or base type}

{xor}

{xor}

PackageConfiguration<<Description>>

0..1

+specializedConfig

0..1

ComponentAssemblyDescription<<Assembler>>

ComponentPackageDescription<<Packager>>

1..*1..*0..1+basePackage 0..1

ComponentInterfaceDescription<<Specifier>>1

+realizes

1

ComponentImplementationDescription<<Implementer>>

0..1+assemblyImpl

0..1

1..*

+implementation

1..*

1

+implements

1

MonolithicImplementationDescription<<Developer>>

0..1+monolithicImpl

0..1

ImplementationArtifactDescription<<Developer>> *

+dependsOn

*

1..*+primaryArtifact 1..*

Page 152: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Package Description

• Meta-data to describe a set of alternative implementations of the same component

–May redefine (overload) properties

ComponentPackageDescription<<Packager>>

label : String [0..1]UUID : String [0..1]

PackagedComponentImplementation<<Packager>>

name : String1..*

+implementation

1..*

ComponentInterfaceDescription<<Specifier>>1

+realizes

1

Property(from Common)

<<Description>>

*

+configProperty

* *

+infoProperty

*

ComponentImplementationDescription<<Implementer>>1

+referencedImplementation

1

1

+implements

1

Page 153: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Package Descriptorfor NavDisplay component: NavDisplay.cpd (1/1)

GPS_exec.dllNavDisplay_exec.dll

GPSLocation

NavDisplayRefresh

GPS_exec.dllNavDisplayGUI_exec.dll

<?xml version='1.0' encoding='ISO-8859-1'?>

<Deployment:ComponentPackageDescription

xmlns:Deployment='http://www.omg.org/Deployment'

xmlns:xmi='http://www.omg.org/XMI'

>

<label>Display Device</label>

<realizes href="NavDisplay.ccd"/>

<implementation>

<name>Text-based Display</name>

<referencedImplementation href="NavDisplay.cid"/>

</implementation>

<implementation>

<name>Graphical Display</name>

<referencedImplementation href="NavDisplayGUI.cid"/>

</implementation>

</Deployment:ComponentPackageDescription>

Page 154: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Display Component Assembly

NavDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Rate

DisplayControl

Page 155: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Interface Descriptorfor Display component: Display.ccd (1/1)

<?xml version='1.0' encoding='ISO-8859-1'?>

<Deployment:ComponentInterfaceDescription

xmlns:Deployment='http://www.omg.org/Deployment'>

<label>Navigation System</label>

<specificType>IDL:HUDisplay/Display:1.0</specificType>

<idlFile>Display.idl</idlFile>

<port>

<name>control</name>

<specificType>IDL:HUDisplay/opmode:1.0</specificType>

<supportedType>IDL:HUDisplay/opmode:1.0</supportedType>

<provider>true</provider>

<exclusiveProvider>false</exclusiveProvider>

<exclusiveUser>false</exclusiveUser>

<optional>true</optional>

<kind>Facet</kind>

</port>

<property>

<name>Rate</name>

<type>

<kind>tk_long</kind>

</type>

</property>

</Deployment:ComponentInterfaceDescription>

Control

Display

Rate

Page 156: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Assembly Description

{same interface or base type}

{xor}

{xor}

PackageConfiguration<<Description>>

0..1

+specializedConfig

0..1

ComponentAssemblyDescription<<Assembler>>

ComponentPackageDescription<<Packager>>

1..*1..*0..1+basePackage 0..1

ComponentInterfaceDescription<<Specifier>>1

+realizes

1

ComponentImplementationDescription<<Implementer>>

0..1+assemblyImpl

0..1

1..*

+implementation

1..*

1

+implements

1

MonolithicImplementationDescription<<Developer>>

0..1+monolithicImpl

0..1

ImplementationArtifactDescription<<Developer>> *

+dependsOn

*

1..*+primaryArtifact 1..*

Page 157: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Assembly Description

• Meta-data to describe an assembly-based implementation

–Subcomponent instances

–Connections between subcomponents’ ports

–Mapping an assembly’s properties to subcomponent properties

AssemblyConnectionDescription<<Assembler>>

SubcomponentInstantiationDescription<<Assembler>>

1..*1..*

AssemblyPropertyMapping<<Assembler>>

1..*1..*

ComponentAssemblyDescription<<Assembler>>

*+connection

*

1..*

+instance

1..*

*+externalProperty *

ComponentImplementationDescription<<Implementer>>

0..1+assemblyImpl0..1

Page 158: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Implementation Descriptorfor Display component: Display.cid (1/4)

<?xml version='1.0' encoding='ISO-8859-1'?>

<Deployment:ComponentImplementationDescription

xmlns:Deployment='http://www.omg.org/Deployment'

xmlns:xmi='http://www.omg.org/XMI'

>

<implements href="Display.ccd"/>

<assemblyImpl>

<instance xmi:id="RateGen">

<name>RateGen Subcomponent</name>

<package href="RateGen.cpd"/>

</instance>

<instance xmi:id="GPS">

<name>GPS Subcomponent</name>

<package href="GPS.cpd"/>

</instance>

<instance xmi:id="NavDisplay">

<name>NavDisplay Subcomponent</name>

<package href="NavDisplay.cpd"/>

</instance>

[...]

</assemblyImpl>

</Deployment:ComponentImplementationDescription>

NavDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Rate

DisplayControl

Page 159: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Implementation Descriptorfor Display component: Display.cid (2/4)

<Deployment:ComponentImplementationDescription>

<assemblyImpl> [...]

<connection> <name>GPS Trigger</name>

<internalEndpoint>

<portName>Pulse</portName>

<instance href="#RateGen"/>

</internalEndpoint>

<internalEndpoint>

<portName>Refresh</portName>

<instance href="#GPS"/>

</internalEndpoint>

</connection>

<connection> <name>NavDisplay Trigger</name>

<internalEndpoint>

<portName>Ready</portName>

<instance href="#GPS"/>

</internalEndpoint>

<internalEndpoint>

<portName>Refresh</portName>

<instance href="#NavDisplay"/>

</internalEndpoint>

</connection>

[...] </assemblyImpl>

</Deployment:ComponentImplementationDescription>

NavDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Rate

DisplayControl

Page 160: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Implementation Descriptorfor Display component: Display.cid (3/4)

<Deployment:ComponentImplementationDescription>

<assemblyImpl> [...]

<connection> <name>control port</name>

<externalEndpoint>

<portName>Control</portName>

</externalEndpoint>

<internalEndpoint>

<portName>supports</portName>

<instance href="#RateGen"/>

</internalEndpoint>

</connection>

<connection> <name>Location</name>

<internalEndpoint>

<portName>MyLocation</portName>

<instance href="#GPS"/>

</internalEndpoint>

<internalEndpoint>

<portName>GPSLocation</portName>

<instance href="#NavDisplay"/>

</internalEndpoint>

</connection>

[...] </assemblyImpl>

</Deployment:ComponentImplementationDescription>

NavDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Rate

DisplayControl

Page 161: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Component Implementation Descriptorfor Display component: Display.cid (4/4)

<Deployment:ComponentImplementationDescription>

<assemblyImpl>

[...]

<externalProperty>

<name>Rate Mapping</name>

<externalName>Rate</externalName>

<delegatesTo>

<propertyName>Rate</propertyName>

<instance href="#RateGen"/>

</delegatesTo>

</externalProperty>

</assemblyImpl>

</Deployment:ComponentImplementationDescription>

NavDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Rate

DisplayControl

Page 162: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Package Configuration

{same interface or base type}

{xor}

{xor}

PackageConfiguration<<Description>>

0..1

+specializedConfig

0..1

ComponentAssemblyDescription<<Assembler>>

ComponentPackageDescription<<Packager>>

1..*1..*0..1+basePackage 0..1

ComponentInterfaceDescription<<Specifier>>1

+realizes

1

ComponentImplementationDescription<<Implementer>>

0..1+assemblyImpl

0..1

1..*

+implementation

1..*

1

+implements

1

MonolithicImplementationDescription<<Developer>>

0..1+monolithicImpl

0..1

ImplementationArtifactDescription<<Developer>> *

+dependsOn

*

1..*+primaryArtifact 1..*

Page 163: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Package Configuration

• Meta-data to describe a reusable component package

–Sets initial configuration

–Sets QoS requirements

• to be matched against implementation capabilities

–May refine (specialize) existing package

+basePackage

{xor}

ComponentPackageDescription<<Packager>>

Requirement(from Common)

<<Description>>Property

(from Common)

<<Description>>

PackageConfiguration<<Description>>

label : String [0..1]UUID : String [0..1]

0..1

+specializedConfig

0..1

0..10..1

*

+selectRequirement

* *

+configProperty

*

Page 164: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Package Configurationfor Display application: Display.pcd (1/1)

<?xml version='1.0' encoding='ISO-8859-1'?>

<Deployment:PackageConfiguration

xmlns:Deployment='http://www.omg.org/Deployment'

xmlns:xmi='http://www.omg.org/XMI'

>

<label>Display Application</label>

<configProperty>

<name>Rate</name>

<value>

<type>

<kind>tk_long</kind>

</type>

<value>

<long>10</long>

</value>

</value>

</configProperty>

<basePackage href="Display.cpd"/>

</Deployment:PackageConfiguration>

NavDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Rate

DisplayControl

Page 165: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Resource<<DomainAdministrator>>

SharedResource<<DomainAdministrator>>

Interconnect<<DomainAdministrator>>

*

+resource

*

Node<<DomainAdministrator>>

*

1..*

+sharedResource*

+node1..*

1..*

*+connect

1..* +connection

*

*

+resource

*

Bridge<<DomainAdministrator>>*

1..* +connection

*+connect

1..*

*

+resource

*

Property(from Common)

<<Description>>Domain<<DomainAdministrator>>

UUID : String [0..1]label : String [0..1]

*

+sharedResource

*

* +interconnect*1..*+node1..* *

+bridge*

*

+infoProperty

*

• Meta-data to describe a "target domain"

–Nodes: targets for executing monolithic component implementations

–Interconnect: direct connections (e.g., ethernet cable)

–Bridge: indirect connections (e.g., routers, switches)

Target Data Model

Page 166: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Target Data Model: ResourcesResource

<<DomainAdministrator>>

SatisfierPropertyKind

QuantityCapacityMinimumMaximumAttributeSelection

(from Common)

<<enumeration>>

RequirementSatisfier

name : StringresourceType : String [1..*]

(from Common)

<<Description>>

SatisfierProperty

name : Stringkind : SatisfierPropertyKind

(from Common)

<<Description>>

*+property *

Any<<Description>>

1

+value

1

• Meta-data to describe a consumable resource

–Satisfies a requirement (from monolithic implementation)

–SatisfierPropertyKind: Operators and predicates to indicate if and how a resource property is "used up"

Page 167: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Matching Requirements against Resources

Requirement

name : StringresourceType : String

<<Description>>

Property

name : String

<<Description>>

*+property*

Any<<Description>> 1

+value

1

Resource(from Target)

<<DomainAdministrator>>

SatisfierPropertyKind

QuantityCapacityMinimumMaximumAttributeSelection

<<enumeration>>

RequirementSatisfier

name : StringresourceType : String [1..*]

<<Description>>

SatisfierProperty

name : Stringkind : SatisfierPropertyKind

<<Description>>

Any<<Description>>

+property**

+value

11

Predicate

• Generic grammar for defining resources and requirements

• Well-defined, generic matching and accounting algorithm

–Depending on predicate, resource capacity is "used up"

Page 168: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Example Domain

My Network

Alice Bob

MyCable

Page 169: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Domain Descriptor: MyNetwork.cdd (1/3)

<?xml version='1.0' encoding='ISO-8859-1'?>

<Deployment:Domain

xmlns:Deployment='http://www.omg.org/Deployment'

xmlns:xmi='http://www.omg.org/XMI'>

<label>My Network</label>

<node xmi:id="Alice">

<name>Alice</name>

<connection href='#MyCable'/>

<resource>

<name>os</name>

<resourceType>Operating System</resourceType>

<property>

<kind>Attribute</kind>

<name>version</name>

<value>

<type><kind>tk_string</kind></type>

<value><string>Windows 2000</string></value>

</value>

</property>

</resource>

[...]

</node>

</Deployment:Domain>

Alice

Page 170: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Domain Descriptor: MyNetwork.cdd (2/3)

<Deployment:Domain>

<node>

[...]

<resource>

<name>GPS</name>

<resourceType>GPS Device</resourceType>

<property>

<name>vendor</name>

<kind>Attribute</kind>

<value>

<type>

<kind>tk_string</kind>

</type>

<value>

<string>My Favorite GPS Vendor</string>

</value>

</value>

</property>

</resource>

</node>

[...]

</Deployment:Domain>

Alice

Page 171: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Domain Descriptor: MyNetwork.cdd (3/3)

<Deployment:Domain>

[...]

<node xmi:id='Bob'>

<name>Bob</name>

<connection href='#MyCable'/>

[... "Windows 2000" OS resource ...]

[... "Graphical Display" resource ...]

</node>

<interconnect xmi:id='MyCable'>

<connect href='#Alice'/>

<connect href='#Bob'/>

</interconnect>

</Deployment:Domain>

Bob

MyCable

Page 172: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

InterfaceDesign

ComponentDesign

ComponentImplementation

ComponentPackaging

ApplicationAssembly

SystemDeployment

Interface IDLDefinitions

Stubs&

Skeletons

ObjectImplementations

RunningApplications

ComponentIDL

Definitions

IDLCompiler

CIDLCompiler

ComponentCIDL

Definitions

Servants,Executors,Contexts

LanguageTools

ComponentDLLs

XMLComponent &

Home Properties

ComponentInterface

Descriptors(.ccd)

PackagingTools

ComponentPackages

(*.cpk)

Component &Home Properties

ComponentPackage

Descriptors(.cpd)

DeploymentTools

ImplementationArtifact

Descriptors(.iad)

DeploymentPlan

Descriptor(.cdp)

ComponentDomain

Descriptor(.cdd)

AssemblyTools

ComponentImplementation

Descriptor(*.cid)

DeploymentGoal: Deploy/execute application/components according to deployment plan

Page 173: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Infrastructure Overview• Repository Manager

–Database of applications that are available for deployment ("staging area")

• Target Manager

–Retrieval of target data (i.e., available nodes and resources)

• Execution Manager

–Execution of an application according to a "Deployment Plan"

• Node Manager

–Execution of monolithic component implementations on a node

• The above are independent compliance points, managers from different vendors can interoperate

–Especially important for vendor-specific Node Managers!

Page 174: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Infrastructure

Infrastructure (Services)

ComponentPackage(from Meta-Concepts)

<<Packager>>

Repository Administrator

1+package 1

RepositoryManager(from Component)

<<Manager>>

1+repository 1

PackageConfiguration(from Component)

<<Description>>

*+package *

Domain(from Target)

<<DomainAdministrator>>

Planner*

+searchPath

*

1

+application

1 1

+resourceData

1

DeploymentPlan(from Execution)

<<Planner>>

<<create>>

Executor

1+uses

1

Installs and configures package in repository.

Plans deployment of application based on resourceData from resourceDataProvider. Resolves packages using searchPath. Produces compatible plan.

Uses plan. Executes it in the targetEnvironment. (Involves preparation and launch.)

TargetManager(from Target)

<<Manager>>1

1

1

1

1

+resourceDataProvider

1

NodeManager(from Execution)

<<Manager>>ExecutionManager

(from Execution)

<<Manager>>

1

+targetEnvironment

1

*

+nodeMgr

*

Page 175: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Infrastructure: Repository Manager• Database of applications

–Meta-data (from Component Data Model)

–Artifacts (i.e., executable monolithic implementations)

• Applications can be configured

–e.g., to apply custom policies, e.g., "background color" = "blue"

• Applications are installed from packages

–ZIP files containing meta-data in XML format, & artifacts

• CORBA interface for installation of packages, retrieval and introspection of meta-data

• HTTP interface for downloading artifacts

–Used by Node Managers during execution

Page 176: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Infrastructure: Target Manager• Singleton service (i.e., one Target Manager per Domain)

• Retrieval of available or total resource capacities

• Allocation and release of resources (during application deployment)

• No "live" monitoring of resources implied (optional)

–Assumption: all resources are properly allocated and released through this interface

–Central management and tracking of resources

• Allows "off-line" scenarios where the possibility and the effect of deploying applications is studied

–e.g., "Given this configuration, is it possible to run this set of applications concurrently? How?"

Page 177: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Infrastructure: Execution Manager• Singleton service (i.e., one Execution Manager per Domain)

• User-visible front-end for executing a "Deployment Plan"

–Deployment Plan is the result of planning for the deployment of an application, based on a specific set of nodes and resources (will be elaborated later)

• Instructs Node Managers to execute their respective per-node pieces of an application

–Splits up the single "per domain" Deployment Plan into several partial, "per node" Deployment Plans

• Then interconnects these pieces

Page 178: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Infrastructure: Node Manager• One Node Manager instance per node; not user visible

• Instantiates component instances from monolithic implementations

• Encompasses CCM “container” concept

–Not a replacement, just an abstraction

• Very system specific, important inter-vendor boundary:

–Execution Manager part of generic deployment software

–Node Manager(s) part of CCM implementation

• No colocation with “its” node implied

–e.g., Node Manager can execute implementations remotely

–e.g., for non-GPP nodes such as DSPs or FPGAs that might not be capable of running an ORB/OS/concurrent processes

Page 179: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Infrastructure: Node Manager (Contd.)

• One Node Manager instance per node; not user visible

• Instantiates component instances from monolithic implementations

• Encompasses CCM “container” concept

–Not a replacement, just an abstraction

• Very system specific, important inter-vendor boundary:

–Execution Manager part of generic deployment software

–Node Manager(s) part of CCM implementation

• No colocation with “its” node implied

–e.g., Node Manager can execute implementations remotely

–e.g., for non-GPP nodes such as DSPs or FPGAs that might not be capable of running an ORB/OS/concurrent processes

Page 180: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Execution/Node Managers Interaction• Execution Manager computes per-node

Deployment Plan

–“Virtual” assemblies of components on the same node

–Described using the same data structure

• All parts are sent to theirrespective Node Manager

–Can be done concurrently

• Execution Manager then sends “provided” references to their users

• Transparent to “Executor” user

NavDisplayRefresh

GPSLocation

RateGenPulse

Rate

GPS

MyLocation

Refresh Ready

Rate

DisplayControl

RateGen GPS NavDisplay

Alice Bob

Page 181: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

ComponentPackage(from Meta-Concepts)

<<Packager>>

Repository Administrator

1+package 1

RepositoryManager(from Component)

<<Manager>>

1+repository 1

PackageConfiguration(from Component)

<<Description>>

*+package *

Domain(from Target)

<<DomainAdministrator>>

Planner*

+searchPath

*

1

+application

1 1

+resourceData

1

DeploymentPlan(from Execution)

<<Planner>>

<<create>>

Executor

1+uses

1

Installs and configures package in repository.

Plans deployment of application based on resourceData from resourceDataProvider. Resolves packages using searchPath. Produces compatible plan.

Uses plan. Executes it in the targetEnvironment. (Involves preparation and launch.)

TargetManager(from Target)

<<Manager>>1

1

1

1

1

+resourceDataProvider

1

NodeManager(from Execution)

<<Manager>>ExecutionManager

(from Execution)

<<Manager>>

1

+targetEnvironment

1

*

+nodeMgr

*

Deployment Actors

Actors usually, humans aided by software tools

Page 182: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Actors: Repository Administrator• Receives component package from software vendor

• Installs package into repository, using Repository Manager

–Assigns “installation name”

–Optionally applies custom configuration properties

• I.e., sets default values for an application’s external attributes (can be overridden during deployment)

–Optionally sets “selection requirements”

• Will be matched against implementation capabilities (during planning)

• Maintains repository contents

–Browsing repository, updating packages, deleting packages …

Page 183: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Actors: Planner• Accesses application meta-data from Repository Manager

–Resolving referenced (“imported”) packages

• Accesses resource meta-data from Target Manager

–Live “on-line” data, or simulated “off-line” data

• Matches requirements against resources

• Makes planning decisions

–Selecting appropriate component implementations

–Placing monolithic component instances onto nodes, assembly connections onto interconnects & bridges

• Produces Deployment Plan

–“Off-line” plans can be stored for later (re-) use

Page 184: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Actors: Executor• Passes Deployment Plan to Execution Manager

• Separate “Preparation” and “Launch” phases

• Preparation: prepares software for execution

–Usually involves loading implementation artifacts to nodes

–May (implementation specific) also involve pre-loading artifacts into memory, for faster launch

• Launch: starts application

–Instantiating & configuring components

–Interconnecting components

–Starting components

Page 185: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Plan• Self-contained data structure for executing an application within a specific

domain, based on a specific set of resources

–Records all decisions made during planning

• Implementation selection, instance to node assignment, resource allocation

–“Flat” assembly of instances of components with monolithic implementations (all assemblies are resolved)

• Does not contain implementation artifacts

–Contains URLs to artifacts, as served up by the repository

• HTTP mandatory, other protocols optional

–Node Managers will download artifacts using these URLs

Page 186: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Planning Revisited• Planning requires “intelligence”

–Large search space for valid deployments

• Considering all possibilities not practical; heuristics necessary

–May implement “metric” to compare deployments

• Prefer one component per node? As many components per node as possible?

–Wide range of implementation options

• Completely manual? Fully automatic?

►Planner is a separate piece, “outside” of the specification

–Only described as a “non-normative” actor

–Uses well-defined interfaces, “Deployment Plan” meta-data

Page 187: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Dynamic Planning Rationale• Common D+C criticism: “Deployment Plan is too static”

–Based on a snapshot of available resources

–“Not well adapted to dynamic domain, when resource allocation changes, requiring to plan again from scratch”

• However, Deployment Plan is a necessity

–Its information must be fully known at some point

• Future Idea:

–Build more dynamic “planning” infrastructure on top of D+C’s building blocks – by extension, not replacement

• E.g., “proto-plan” considering homogeneous nodes as equivalence classes (deferring concrete assignments)

• Refinement into Deployment Plan as late as possible

Page 188: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Deployment Plan Rationale• Common D+C criticism: “Who needs a Deployment Plan anyway?”

–Why not have a combined Planner/Executor that immediately deploys components on nodes as soon as decisions are made?

• Wouldn’t that be more efficient, & avoid “concurrent planning” issues?

• Race conditions between Planners & Executors are unavoidable, unless there is domain-wide locking or transactioning

–e.g., the above would require backtracking upon conflict

• In D+C, planning decision making is an entirely local process

–Interacting with nodes incurs large latency

–Not interacting with nodes is better tradeoff

• Also, Deployment Plan is an important inter-vendor boundary!

Page 189: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Summary of Deployment & Configuration Spec• Powerful concepts for the deployment of component-based applications

–Evolution of the original CCM’s packaging

• Hierarchical assemblies, allowing better component reuse

• Resource management

• Automated distribution & deployment

• Well-defined inter-vendor boundaries

–Planner and Repository, Target, Execution, & Node Managers can be replaced separately

• Designed for distributed, real-time, & embedded systems

–But also useful for general-purpose distributed component systems

Page 190: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Overview of Lightweight CCM

Specification

www.omg.org/cgi-bin/doc?realtime/2003-05-05

Page 191: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Motivation for Lightweight CCM• Many DRE CORBA applications can’t use

enterprise CCM due to design constraints imposed by their operational environment

–e.g., small code size in embedded environments & limited processing overhead for performance-intensive applications

• These constrained environments need CCM functionality packaged as a “lightweight” version

• ORB vendors, or other third-party vendors, can then support this lightweight version in a standard package

• In the Lightweight CCM specification, each section is explicitly treated & either retained as is, profiled, or removed

Page 192: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CCM Features Retained in Subset• All types of ports

• i.e., facets, receptacles, event sources & sinks, & attributes

• Component homes

• Generic port management operations in CCMObject

• Monolithic implementations

• Session & service components & containers

Attributes

Event

Sinks

Facets

Rec

epta

cles

Eve

ntS

ourc

es

ComponentReference

ComponentHome

OfferedP

orts

Req

uire

dP

orts

“Re

ceives

Fro

m” “S

end

s T

o”

Page 193: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CCM Features Excluded from Subset• Keyed homes

• Large overhead & complexity

• Process & Entity container

• Persistence often not relevant in DRE systems domain

• Component segmentation

• Unnecessary with introduction of D+C

• CIDL

• Not needed after removal of PSDL & segmentation

• IDL 3 is sufficient

•CCMObject introspection

• Useful in managing dynamic applications & debugging

• Debugging can be done in full CCM

• Application management can be done using D+C

• Dynamic applications not relevant in DRE systems domain

• Equivalent IDL for port management

• Redundant, can use generic operations

• Generic interface is required for D+C

Page 194: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Overview of CIAO

& Future R&D Directions

Page 195: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Overview of CIAO• Component Integrated ACE ORB

–CCM implementation atop TAO

–Supports component-oriented paradigm for DRE applications

• Provides Real-time CORBA policies & mechanisms required for DRE applications

• Key DRE aspects are supported as first-class meta-data

• First official release (CIAO 0.4) was at end of December 2003

• Latest release is downloadable from

deuce.doc.wustl.edu/Download.html

Page 196: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

CIAO Status• Components can be built as

shared libs or static libs

• Component server supported

• Tools to install, host, load, & manage component implementations are available

• The CIAO Deployment & Configuration (D&C) framework provides support for component assemblies in compliance with ptc/02-08-03

• CIAO also supports real-time extensions

– www.cs.wustl.edu/~schmidt/CIAO.html

• Support for IDL 3 (component, home & related keywords) & many CIDL features have been added

• Support for all types of ports: facets (provides), receptacles (uses, uses multiple), event sources (emits, publishes) & event sinks (consumes)

• Support for the Session container via CIDL compiler

Container

… …

Container

Page 197: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

• Deployment & Configuration (Leads: Kitty Balasubramanian & Jeff Parsons)

– Implementing the new deployment & configuration specification, ptc/03-07-02, necessary for DARPA ARMS program

– Changes to the deployment & assembly toolset to support lightweight components, as prescribed by ptc/04-02-03

• Core CCM Infrastructure (Leads: Bala Natarajan & Boris Kolpackov)

– Additional support for Real-time CORBA Policies at the ORB level & object level

• i.e., at the object reference level of a component receptacle

– Integration of different event propagation mechanisms (such as Event Channel & Notification Services) within the container

– Compliant with Lightweight CCM specification

• Modeling tool support for CIAO (Leads: Andy Gokhale & Tao Lu)

– See www.dre.vanderbilt.edu/cosmic for details

CIAO Next Steps

Page 198: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

• Examples available with the distribution

– CIAO/docs/tutorial/Hello, a simple example that illustrates the use of some basic CCM concepts

– CIAO/examples/OEP/BasicSP

• A simple example that shows the interaction between 4 components

– CIAO/examples/OEP/Display

• Similar to the BasicSP, but has an additional feature showing integration with Qt toolkit

• Step-by-step to create and deploy components based on CIAO available at

– CIAO/examples/Hello

• “Quick CORBA 3”, Jon Siegel, John Wiley and Sons provides a quick start

How to Learn about CIAO Programming

Page 199: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Wrapping

Up

Page 200: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Tutorial Summary• CCM

– Extends the CORBA object model to support application development via composition

– CORBA Implementation Framework (CIF) defines ways to automate the implementation of many component features

– Defines standard runtime environment with Containers & Component Servers

– Specifies packaging & deployment framework

• Deployment & Configuration specification separates key configuration concerns

– Server configuration

– Object/service configuration

– Application configuration

– Object/service deployment

Page 201: Dr. Douglas C. Schmidt d.schmidt@vanderbilt dre.vanderbilt/~schmidt/

Aug 8th – 9th, 2004

Tutorial on CCM Douglas C. Schmidt

Additional Information on CORBA & CCMOMG specifications pertaining to CCM

• CORBA Component Model (CCM)

•ptc/02-08-03

• Lightweight CCM

•ptc/04-02-03

• QoS for CCM RFP

•mars/03-06-12

• Streams for CCM RFP

•mars/03-06-11

• UML Profile for CCM

•mars/03-05-09

• Deployment & Configuration (D+C)

•ptc/03-07-02

Books pertaining to CCM

•CORBA 3 Fundamentals and Programming, Dr. John Siegel, published at John Wiley & Sons

Web resources pertaining to CCM

• “The CCM Page” by Diego Sevilla Ruiz

•www.ditec.um.es/~dsevilla/ccm/

• OMG CCM specification

•www.omg.org/technology/ documents/formal/components.htm

•CUJ columns by Schmidt & Vinoski

•www.cs.wustl.edu/~schmidt/ report-doc.html