reconciling the boeing pces oep with ccm component structure john hatcliff (slide maker and talk...

20
Reconciling the Boeing PCES OEP with CCM Component Structure http://www.cis.ksu.edu/santos/KSU-CCM-Workshop John Hatcliff (slide maker and talk giver) …many others contributed including Venkatesh Ranganath, Gurdip Singh, William Deng

Upload: camilla-armstrong

Post on 02-Jan-2016

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

Reconciling the Boeing PCES OEP with CCM Component Structure

http://www.cis.ksu.edu/santos/KSU-CCM-Workshop

John Hatcliff (slide maker and talk giver)…many others contributed including Venkatesh Ranganath, Gurdip Singh, William Deng

Page 2: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 2May 19, 2003

Why discuss these issues now… Meeting goal: move forward bringing Cadena and CIAO together

to address PCES goals. Ultimate aim is to support development of DRE systems

(including the Boeing OEP). Cadena and CIAO teams need to agree on…

common examples requires agreement on how to structure DRE systems in CCM

common intermediate formats (configuration, deployment, packing) requires agreement on how to augment conventional CCM artifacts to

include RT & QoS properties. So the desired outcome with these talks is

not only a convergence of ideas related to how to recast the Boeing OEP in CCM,

but resolution of a number of issues that will allow us to support development of realistic DRE systems in an environment that is general enough to support the Boeing OEP.

In other words, having these discussions will force us to talk about some relevant concrete issues that both groups will need to consider if we want to support realistic systems.

Page 3: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 3May 19, 2003

Real Reason to Talk…

We are not CORBA experts …but now we have a bunch in this

room. We have been struggling with how to

resolve some of these issues for 9+ months now …and we would like to get your

feedback, and bring some of these to conclusion.

Page 4: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 4May 19, 2003

Goals and anti-Goals Expose a list of issues that we need to be

addressed between Cadena/CIAO as we try to move to real systems.

Collect proposed solutions (if they are clear) to as many issues as possible.

Anti-Goal: spend a lot of time thrashing around try to agree on final solutions.

We don’t want to get bogged down trying to finalize a solutions without the input from the Boeing people

We will just try to collect some notes, dump them into the existing document summarizing these issues.

Continue to circulate and evolve this document with hope of convergence at a later date

…but lets try to make some progress in next two days on XML configuration issues since that is a primary connection point between Cadena and CIAO.

Page 5: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 5May 19, 2003

Claims OEP components are very (overly?) generic

very generic and dynamic checking of inputs classes with CCM philosophy and makes various types of formal checking by static analysis more difficult.

Many things are only captured dynamically instead of statically e.g., event types, communication topology makes various forms of automated analysis

much harder or impossible CCM-like port structure is not utilized

e.g., single generic dynamically typed event sink ports in OEP vs. multiple statically typed event sink ports in CCM.

Note: these are not knocks against the OEP designers – many of the issues below simply were not apparent in their context when the OEP was designed.

Note: these are not knocks against the OEP designers – many of the issues below simply were not apparent in their context when the OEP was designed.

Page 6: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 6May 19, 2003

Motivating Examplevoid BM__PushPullComponentImpl::Update (const UUEventSet& events){ UM__GUARD_EXTERNAL_REGION(GetExternalPushLock()); BM__ComponentInstrumentation::EventConsumer(GetId(), "Update", events);

unsigned int tempData1 = GetId().GetGroupId(); unsigned int tempData2 = GetId().GetItemId();

std::vector<BM__ClosedComponent*>::iterator devIter = devices_.begin(); std::vector<BM__ClosedComponent*>::iterator endIter = devices_.end();

for (; devIter != endIter; ++devIter) { BM__ClosedComponent* component = *devIter; const UUIdentifier& id = component->GetId();

if (idInEventSet(id, events)) { (see next slide) } } UM__GUARD_INTERNAL_REGION; data1_ = tempData1; data2_ = tempData2;}

Locking macros – components are “aspectized” on locking strategy

Locking macros – components are “aspectized” on locking strategy

Components are uniquely identified by (GroupId, ItemId ) pair

Components are uniquely identified by (GroupId, ItemId ) pair

Iterate over list of facet providers (note hard-coding of structure for BM_Closed)

Iterate over list of facet providers (note hard-coding of structure for BM_Closed)

Get “UUID” of from supplier

Get “UUID” of from supplier

Does this ID appear in events that were pushed?

Does this ID appear in events that were pushed?

Page 7: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 7May 19, 2003

Motivating Example (continued)

const BM__ClosedFunctionalFacet& facet = component->ProvideClosedFunctionalFacet(); tempData1 += facet.GetData1(); tempData2 += facet.GetData2();

When supplier ID matches with ID actually arriving in current event, get the associated component’s facet

When supplier ID matches with ID actually arriving in current event, get the associated component’s facet

Call facet method to fetch data.

Call facet method to fetch data.

Page 8: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 8May 19, 2003

Issue: Component IDs

Component instances in the OEP are uniquely identified by… (Name, Group_ID, Item_ID) triple

Group_ID and Item_ID are integers that are appended to provide a unique identifier within the entire configuration. The Group_ID and Item_ID are optional and are normally automatically generated. If the Group_ID is specified, an Item_ID must also be specified. The Name values provides a domain applicable human readable representation of this unique identifier (e.g., AirFrame or GPS).

Group_ID and Item_ID are integers that are appended to provide a unique identifier within the entire configuration. The Group_ID and Item_ID are optional and are normally automatically generated. If the Group_ID is specified, an Item_ID must also be specified. The Name values provides a domain applicable human readable representation of this unique identifier (e.g., AirFrame or GPS).from MOBIES OEP Configuration Interface (v. 2.3) –

Wendy Roll

Page 9: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 9May 19, 2003

Solution: Component IDs

Main point is to have a unique ID E.g., OpenCCM has all components

implement a “Named Component” interface Proposed solution:

all components should implement IDComponent interface which has a readonly string attribute id. This allows the component’s id to be set via the .cpf file.

interface IDComponent {readonly attribute string id;

};

Page 10: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 10May 19, 2003

Issue: Event Connections

multiple typed event source/sink ports

one “push method” for each sink port

CCM

T1

T2

T3

OEP

{e1,…, en}

single event sink port receiving a list of generic events

a single push method that dynamically de-multiplexes.

Page 11: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 11May 19, 2003

OEP Event Structure

Each event list contains events with a single event structure (record) consisting of… 32-bit integer field indicating event “kind”

e.g., “dataAvailable” 20+ different event “kinds” (per Wendy)

supplier id (source id) field 32-bit integer “payload” field

OEP

{e1,…, en}

Page 12: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 12May 19, 2003

Event Connections -- Assessment

event types (event “kinds”) are represented as 32-bit integers provide a degree of genericity, but… since event types are represented using this

“universal type” there is no static type-checking on events

more prone to errors than statically framework

OEP

{e1,…, en}

static event type (kind)-checking is problematic

static event type (kind)-checking is problematic

Page 13: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 13May 19, 2003

Event Connections -- AssessmentOEP

{e1,…, en}

dynamic de-multiplexing (branching on source_id’s and event type-tags) significantly complicates design-time formal reasoning

dynamic de-multiplexing (branching on source_id’s and event type-tags) significantly complicates design-time formal reasoning

T1

T2

T3

Example: Dependency specification & checking

OEPCCM

{e1,…, en}

?

dependencies between particular suppliers or event types and other component actions are tangled and more difficult to specify and check statically

dependencies between particular suppliers or event types and other component actions are tangled and more difficult to specify and check statically

Page 14: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 14May 19, 2003

Solution [1]: Event Types

Mimic OEP Generic Event Structure

eventtype GenericEvent {readonly attribute integer event_id;readonly attribute string source_id;readonly attribute any payload;

};

Mimic OEP Component Event Interface Structure

OEP

{e1,…, en}

CCM

Sequence(GenericEvent)

…CORBA Sequence type

Page 15: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 15May 19, 2003

Solution [1]: Assessment

Generic structure (list of generic events) allows variable number of connections

Generic event type allows “event polymorphism”

Pros (same as current Boeing structure)

Static event-type checking is lost (for all practical purposes) Static reasoning about intra-component event dependencies is

much more difficult. Programmers have to write more code (de-multiplexing, checking

of event-types and supplier IDs)

Cons (same as current Boeing structure)

Page 16: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 16May 19, 2003

Solution [2]: Event Types

CORBA event types capture OEP event type tags Payload is still present, but supplier ID has disappeared Language type-checking provides type-compatibility checking for port

connections. General design rule: declare one event sink for each component

supplying an event of a particular type. This allows suppliers to be identified by knowing the port at which an

event arrived In cases where supplier identification is necessary, we can no

longer handle a variable number of suppliers. However, we can still achieve polymorphism over event inputs

using event type inheritance (see next slide).

eventtype DataAvailable {readonly attribute <any type> payload;

};

component AirFrame : IDComponent {publishes DataAvailable dataOut;consumes DataAvailable dataIn;

};

Page 17: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 17May 19, 2003

Solution [2]: Event Types It is often the case that a component simply wishes to be

notified on a certain condition – i.e., the component does not need to examine the event type,

supplier ID, or payload. In this case, the event sink port of the component should

have a type declared corresponding to the “top” event type inheritance hierarchy.

This allows a component that supplies any type of event to be plugged to the port.

T1

T2

T3

CCM

CORBA “any” event type (top of event inheritance hierarchy)

CORBA “any” event type (top of event inheritance hierarchy)

Page 18: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 18May 19, 2003

Issue: Timer event subscriptions

In the OEP, components subscribe to timer events.

What should components subscribe to in CCM? Main point: how should this be presented to

developer in assembly descriptions What should we actually connect to in the

underlying infrastructure? RT event-channel seems like obvious choice, but are

there others.

20 HzTimerEvent

Device componet

What should the CORBA event type of this event be, and what should we connect to at design level?

What should the CORBA event type of this event be, and what should we connect to at design level?

Page 19: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 19May 19, 2003

Solution [1]: CORBA Timer Service

CORBA Timer Service as a component Port names associated with different rates

Hardwires rates to port names Different component may need to be generated for each

scenario (to provide port names associated with rates specific to particular scenarios)

Meshes well with conventional CCM configuration No extra attributes are needed in XML configuration file

…CORBA Timer Service

Timer20Hz

Timer10Hz

Timer1Hz

Port names

Page 20: Reconciling the Boeing PCES OEP with CCM Component Structure  John Hatcliff (slide maker and talk giver)

KSU CCM Workshop --- Reconciling the Boeing OEP and CCM 20May 19, 2003

Solution [2]:

Container is responsible for handling and delivering timing events

The component needs to indicate its interest in certain timer events to the container along with a port on which it will consume these events.

Container itself can generate events, or Container can subscribe to timing service

(see Venkatesh’s talk on XML issues)

eventtype TimeEvent {readonly attribute integer rate;

};

component GPS {consumes TimerEvent timeout;

};