SlideShare a Scribd company logo
1 of 100
Tutorial on the OMG Deployment and Configuration (DnC) Specification Industrializing the Development   Distributed Real-time & Embedded Systems Other contributors include Tao Lu, Gan Deng, Jai Balasubramanian, Kitty Balasubramanian, Bala Natarajan, William R. Otte, Jeff Parsons, Frank Pilhofer, Craig Rodrigues,   Nanbor Wang, & Johnny Willemsen Dr. Douglas C. Schmidt [email_address] http://www.dre.vanderbilt.edu/~schmidt/ Professor of EECS Vanderbilt University Nashville, Tennessee
[object Object],02/28/11
CCM Deployment & Configuration (D&C) Spec ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
D&C & Model-Driven Architecture ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Deployment & Configuration “Segments” ,[object Object],[object Object],[object Object],[object Object],PIM Data Model Run-time Model Component Software Metadata to describe component-based applications & their requirements Repository Manager interfaces to browse, store, & retrieve such metadata Target Metadata to describe heterogeneous distributed systems & their capabilities Target Manager interfaces to collect & retrieve such metadata & commit resources Execution  Metadata to describe a specific deployment plan for an application into a distributed system Execution Manager interfaces to prepare environment, execute deployment plan on target, manage lifecycle
D&C Actors ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Development Target Deployment Bridge Firewall Creates Executor Deployment Plan Uses Deploys These actors & stages are simply making explicit existing processes Domain Access Resources Assembler Assembler Planner Domain Administrator Specifies Creates Component Resource Requirements Impl Impl Impl Properties COMPONENT REPOSITORY QoS Specs Configurations Dependencies Specifier/Developer Creates Component Assembly Component Component Component Component Creates Packager Repository Administrator Component Packages Configures Desktop Printer Laptop computer Ethernet
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CCM Development & Deployment Phases ,[object Object]
Metadata Produced/Used by D&C Tools (1/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Component Packaging & Assembly System Deployment Component DLLs Component & Home Properties Component Interface Descriptors (.ccd) Packaging Tools Component Packages (*.cpk) Component & Home Properties Component Package Descriptors (.cpd) Implementation Artifact Descriptors (.iad) Plan Descriptor (.cdp) Domain Descriptor (.cdd) Assembly Tools Component Implementation Descriptor (*.cid) These files can be coalesced into a smaller # of files (i.e., 1) in practice
Metadata Produced/Used by D&C Tools (2/2) ,[object Object],[object Object],[object Object],[object Object],These files can also be coalesced into a smaller # of files (i.e., 1) in practice Component  Interface Descriptors  (. ccd ) Deployment  Plan  Descriptor  (. cdp ) Component  Package  Descriptors  (. cpd ) Deployment Planning Tools Component Domain Descriptor (. cdd ) Component  &  Home Properties realizes
Component-based Software: Component ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Monolithic Component Implementation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Assembly-based Component Implementation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Component Package ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Assembler Assembler Creates Component Resource Requirements Impl Impl Impl Properties Specifier/Developer Creates Component Assembly Component Component Component Component Creates Packager Component Packages
CCM Development Actors
Component Packaging Goal: Associate component implementation(s) with metadata
Component Packaging Tools ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Application Assembly Goal: Group packages & metadata by specifying their interconnections
Application Assembly Tools ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Component Data Model Overview We’ll  show XML snippets for each of these component data model elements
Example CCM DRE Application ,[object Object],[object Object],[object Object],[object Object],[object Object],Rate Control Display component
Component Interface Description
Component Interface Description ,[object Object],[object Object],[object Object],[object Object]
Component Interface Descriptor for the 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/rate_control:1.0</specificType> <supportedType>IDL:HUDisplay/rate_control:1.0</supportedType> <provider>true</provider> <exclusiveProvider>false</exclusiveProvider> <exclusiveUser>false</exclusiveUser> <optional>true</optional> <kind>Facet</kind> </port> [...] </Deployment:ComponentInterfaceDescription> Rate Pulse RateGen
Component Interface Descriptor for the 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
Component Interface Descriptor for the 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> ,[object Object],[object Object],Rate Pulse RateGen
Component Interface Descriptor for the 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>Global 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
Component Interface Descriptor for the 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
Component Interface Descriptor for the NavDisplay Component: NavDisplay.ccd (1/2) <Deployment:ComponentInterfaceDescription xmlns:Deployment='http://www.omg.org/Deployment' xmlns:xmi='http://www.omg.org/XMI' > <label>Navigation 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 NavDisplay Refresh
Component Interface Descriptor for the 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 NavDisplay Refresh
Component Implementation Description for a Monolithic Implementation
Component Implementation Description for a Monolithic Implementation ,[object Object],[object Object],[object Object],Start Here
Component Implementation Descriptor for the RateGen Component: RateGen.cid (1/2) <?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=&quot;RateGen.ccd&quot;/> <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
Component Implementation Descriptor for the RateGen Component: RateGen.cid (2/2) <Deployment:ComponentImplementationDescription> <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
<?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> Component Implementation Descriptor for the GPS Component: GPS.cid (excerpt) GPS_exec.dll MyLocation Ready GPS Refresh
Two Component Implementation Descriptors for the NavDisplay Component ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],GPS_exec.dll NavDisplay_exec.dll GPSLocation NavDisplay Refresh GPS_exec.dll NavDisplayGUI_exec.dll
Component Package Description
Component Package Description ,[object Object],[object Object]
Component Package Descriptor for the NavDisplay Component: NavDisplay.cpd GPS_exec.dll NavDisplay_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>Navigation Display Device</label> <realizes href=&quot;NavDisplay.ccd&quot;/> <implementation> <name>Text-based Display</name> <referencedImplementation href=&quot;NavDisplay.cid&quot;/> </implementation> <implementation> < name>Graphical Display</name> <referencedImplementation href=&quot;NavDisplayGUI.cid&quot;/> </implementation> </Deployment:ComponentPackageDescription> GPSLocation NavDisplay Refresh GPS_exec.dll NavDisplayGUI_exec.dll
Display Component Assembly Rate Control Display component ,[object Object],[object Object],[object Object],[object Object]
Component Interface Descriptor for the 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> <port> <name>control</name> <specificType>IDL:HUDisplay/rate_control:1.0</specificType> <supportedType>IDL:HUDisplay/rate_control: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
Component Assembly Description
Component Assembly Description ,[object Object],[object Object],[object Object],[object Object],[object Object]
Component Implementation Descriptor for the 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=&quot;Display.ccd&quot;/> <assemblyImpl> <instance xmi:id=&quot;RateGen&quot;> <name>RateGen Subcomponent</name> <package href=&quot;RateGen.cpd&quot;/> </instance> <instance xmi:id=&quot;GPS&quot;> <name>GPS Subcomponent</name> <package href=&quot;GPS.cpd&quot;/> </instance> <instance xmi:id=&quot;NavDisplay&quot;> <name>NavDisplay Subcomponent</name> <package href=&quot;NavDisplay.cpd&quot;/> </instance> [...] </assemblyImpl> </Deployment:ComponentImplementationDescription> Rate Control Display component Define subcomponent instances
Component Implementation Descriptor for the Display Component: Display.cid (2/4) <Deployment:ComponentImplementationDescription> <assemblyImpl>  [...] <connection> <name>GPS Trigger</name> <internalEndpoint> <portName>Pulse</portName> <instance href=&quot;#RateGen&quot;/> </internalEndpoint> <internalEndpoint> <portName>Refresh</portName> <instance href=&quot;#GPS&quot;/> </internalEndpoint> </connection> <connection> <name>NavDisplay Trigger</name> <internalEndpoint> <portName>Ready</portName> <instance href=&quot;#GPS&quot;/> </internalEndpoint> <internalEndpoint> <portName>Refresh</portName> <instance href=&quot;#NavDisplay&quot;/> </internalEndpoint> </connection> [...] </assemblyImpl> </Deployment:ComponentImplementationDescription> Rate Control Display component Connections between subcomponent ports
Component Implementation Descriptor for the 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=&quot;#RateGen&quot;/> </internalEndpoint> </connection> <connection> <name>Location</name> <internalEndpoint> <portName>MyLocation</portName> <instance href=&quot;#GPS&quot;/> </internalEndpoint> <internalEndpoint> <portName>GPSLocation</portName> <instance href=&quot;#NavDisplay&quot;/> </internalEndpoint> </connection> [...] </assemblyImpl> </Deployment:ComponentImplementationDescription> Rate Control Display component Connecting assembly (external) ports to subcomponent (internal) ports The external/internal mappings are virtual, i.e., there’s no extra indirection overhead
Component Implementation Descriptor for the Display Component: Display.cid (4/4) <Deployment:ComponentImplementationDescription> <assemblyImpl> [...] <externalProperty> <name>Rate Mapping</name> <externalName>Rate</externalName> < delegatesTo> <propertyName>Rate</propertyName> <instance href=&quot;#RateGen&quot;/> </delegatesTo> </externalProperty> </assemblyImpl> </Deployment:ComponentImplementationDescription> Rate Control Display component Mapping an assembly’s (external) properties to subcomponent (internal) properties
Package Configuration
Package Configuration ,[object Object],[object Object],[object Object],[object Object],[object Object]
Package Configuration for the 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=&quot;Display.cpd&quot;/> </Deployment:PackageConfiguration> Rate Control Display component
Deployment Planning Goal: Map application assembly onto target environment via deployment plan
Deployment Planning Tools ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],Target Data Model
Target Data Model: Resources ,[object Object],[object Object],[object Object]
Matching Requirements against Resources Predicate ,[object Object],[object Object],[object Object]
Example Domain My Network Alice Bob MyCable
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=&quot;Alice&quot;> <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
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
Domain Descriptor: MyNetwork.cdd (3/3) <Deployment:Domain> [...] <node xmi:id='Bob'> <name>Bob</name> <connection href='#MyCable'/> [... &quot;Windows 2000&quot; OS resource ...] [... &quot;Graphical Display&quot; resource ...] </node> <interconnect xmi:id='MyCable'> <connect href='#Alice'/> <connect href='#Bob'/> </interconnect> </Deployment:Domain> Bob MyCable
Deployment Goal: Deploy/execute application/components according to deployment plan
Deployment Infrastructure Overview ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Deployment Infrastructure Overview (1/2) www.cs.wustl.edu/~schmidt/PDF/DanCE.pdf “ Component Software” Runtime Model “ Target” Runtime Model “ Execution” Runtime Model
The DAnCE Deployment Runtime
Deployment Infrastructure Overview (2/2) Infrastructure (Services)
Deployment Plan (1/2) ,[object Object],[object Object],[object Object]
Deployment Plan (2/2) ,[object Object],[object Object],[object Object],[object Object],struct DeploymentPlan {   string label;   string UUID;   ComponentInterfaceDescription realizes;   MonolithicDeploymentDescriptions implementation;   InstanceDeploymentDescriptions instance;   PlanConnectionDescriptions connection;   PlanPropertyMappings externalProperty; ImplementationDependencies dependsOn;   ArtifactDeploymentDescriptions artifact;   Properties infoProperty; };
Deployment Infrastructure: Repository Manager ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Deployment Infrastructure: Target Manager ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Deployment Infrastructure: Execution Manager ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],Deployment Infrastructure: Plan Launcher (1/2) DAnCE_Plan_Launcher_Impl (Shared Library) Plan_Launcher_Base (Abstract Base Class) Plan_Launcher_Base_Impl (Template-Based generic implementation) EM_Launcher NM_Launcher Command Line Processing Logic Dispatch Logic dance_plan_launcher (executable) Instantiate Interact
[object Object],[object Object],[object Object],[object Object],Deployment Infrastructure: Plan Launcher DAnCE_Plan_Launcher_Impl (Shared Library) Plan_Launcher_Base (Abstract Base Class) Plan_Launcher_Base_Impl (Template-Based generic implementation) EM_Launcher NM_Launcher Command Line Processing Logic Dispatch Logic dance_plan_launcher (executable) Instantiate Interact
Deployment Infrastructure: Node Manager ,[object Object],[object Object],[object Object]
Deployment Infrastructure:  Locality Manager (1/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],We would like to expand the horizons of D&C beyond a single component model, to be a generic deployment tool.
Deployment Infrastructure:  Locality Manager (2/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],These instance-specific steps can be provisioned with  plug-ins to create a generic application server.
Execution/Node Managers Interaction ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Alice Bob Rate Control Display component RateGen GPS NavDisplay
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Launch Application: Domain vs. Node
Deployment Actors Actors    usually, humans aided by software tools
Deployment Actors: Repository Administrator ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],COMPONENT REPOSITORY QoS Specs Configurations Dependencies Repository Administrator Component Packages Installs
Deployment Actors: Planner ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Finds Package Accesses Planner COMPONENT REPOSITORY QoS Specs Configurations Dependencies Resources Domain Desktop Printer Laptop computer Ethernet Bridge Firewall Creates Deployment Plan
Deployment Actors: Executor ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Executor Gets Deployment Plan Deploys Resources Domain Desktop Printer Laptop computer Ethernet Bridge Firewall
[object Object],[object Object],[object Object],[object Object],Deployment Example <Deployment:DeploymentPlan … <label>Display Deployment Plan</label> <instance xmi:id=“RateGen_Instance&quot;> <name>RateGen_Instance</name> <node> Alice </node> </instance> <instance xmi:id=“GPS_Instance&quot;> <name>GPS_Instance</name> <node> Alice </node> </instance> <instance xmi:id=“NavDisplay_Instance&quot;> <name>NavDisplay_Instance</name> <node> Bob </node> </instance> </Deployment:DeploymentPlan> Rate Control Mapping components to nodes Display component
Deployment Example: Prepare Plan ,[object Object],[object Object],[object Object],[object Object],[object Object]
Deployment Example: Start Launch (1/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Deployment Example: Start Launch (2/2) ,[object Object],[object Object],[object Object]
Deployment Example: Finish Launch & Start (1/2) ,[object Object],[object Object],[object Object],[object Object]
Deployment Example: Finish Launch & Start (2/2) ,[object Object],[object Object],[object Object],[object Object],configuration_complete can be synchronized for the whole application by calling finishLanch and start separately.
Deployment Example: Application Teardown ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Steps for Developing CCM Applications
Deployment & Configuration Process NodeApplication Manager ,[object Object],[object Object],[object Object],[object Object],[object Object],«instantiates» LocalityManager «spawns» Container «instantiates» Home «instantiates» NodeApplication «instantiates» Component «instantiates»
Deployment & Configuration Process – Step 1 NodeApplication Manager ,[object Object],[object Object],[object Object],[object Object],[object Object],«instantiates» LocalityManager «spawns» Container «instantiates» Home «instantiates» NodeApplication «instantiates» Component «instantiates»
Creating a NodeApplication DomainApplication NodeApplicationManager startLaunch () NodeApplication prepare_instances() start_launch_instances() Instantiates a NodeApplication ,[object Object],[object Object],[object Object],[object Object],DomainApplicationManager startLaunch ()
Deployment & Configuration Process – Step 2 NodeApplication Manager ,[object Object],[object Object],[object Object],[object Object],[object Object],«instantiates» LocalityManager «spawns» Container «instantiates» Home «instantiates» NodeApplication «instantiates» Component «instantiates»
Spawning a LocalityManager ,[object Object],[object Object],[object Object],[object Object]
Deployment & Configuration Process – Step 3 NodeApplication Manager ,[object Object],[object Object],[object Object],[object Object],[object Object],«instantiates» LocalityManager «spawns» Container «instantiates» Home «instantiates» NodeApplication «instantiates» Component «instantiates»
Deploying Instances ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Deployment & Configuration Process – Step 5 NodeApplication Manager ,[object Object],[object Object],[object Object],[object Object],[object Object],«instantiates» LocalityManager «spawns» Container «instantiates» Home «instantiates» NodeApplication «instantiates» Component «instantiates»
Establishing Connections DomainApplicationManager startLaunch () NodeApplicationManager startLaunch () NodeApplication startLaunch() finishLaunch () DomainApplication finishLaunch () After component instances are installed, the NodeApplication gathers connection references and passes them back to the DomainApplication. The DomainApplication stores these references, finishes intialization, and startLaunch is completed.  The Executor may then invoke finishLaunch, which distributes object references to the NodeApplications, which uses them in conjuction with connection operations on components to accomplish connections.  LocalityManager finishLaunch ()
Planning Revisited ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Dynamic Planning Rationale ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Deployment Plan Rationale ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Summary of Deployment & Configuration Spec ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

Anish Karmakar S C A
Anish  Karmakar    S C AAnish  Karmakar    S C A
Anish Karmakar S C A
SOA Symposium
 

What's hot (16)

01.egovFrame Training Book I
01.egovFrame Training Book I01.egovFrame Training Book I
01.egovFrame Training Book I
 
Unit 08: Security for Web Applications
Unit 08: Security for Web ApplicationsUnit 08: Security for Web Applications
Unit 08: Security for Web Applications
 
Oracle PLSQL Training in Chennai, Tambaram
Oracle PLSQL Training in Chennai, TambaramOracle PLSQL Training in Chennai, Tambaram
Oracle PLSQL Training in Chennai, Tambaram
 
Anish Karmakar S C A
Anish  Karmakar    S C AAnish  Karmakar    S C A
Anish Karmakar S C A
 
Trank and branches for configuration management
Trank and branches for configuration managementTrank and branches for configuration management
Trank and branches for configuration management
 
LOD2: State of Play WP6 - LOD2 Stack Architecture
LOD2: State of Play WP6 - LOD2 Stack ArchitectureLOD2: State of Play WP6 - LOD2 Stack Architecture
LOD2: State of Play WP6 - LOD2 Stack Architecture
 
Less17 moving data
Less17 moving dataLess17 moving data
Less17 moving data
 
Physical Architecture Layer Design
Physical Architecture Layer DesignPhysical Architecture Layer Design
Physical Architecture Layer Design
 
Using Zend_Tool to Establish Your Project's Skeleton
Using Zend_Tool to Establish Your Project's SkeletonUsing Zend_Tool to Establish Your Project's Skeleton
Using Zend_Tool to Establish Your Project's Skeleton
 
Nwdi Overview And Features
Nwdi Overview And FeaturesNwdi Overview And Features
Nwdi Overview And Features
 
1006 Z2 Intro Complete
1006 Z2 Intro Complete1006 Z2 Intro Complete
1006 Z2 Intro Complete
 
Unit 04: From Requirements to the UX Model
Unit 04: From Requirements to the UX ModelUnit 04: From Requirements to the UX Model
Unit 04: From Requirements to the UX Model
 
Less14 br concepts
Less14 br conceptsLess14 br concepts
Less14 br concepts
 
Whats Next for JCA?
Whats Next for JCA?Whats Next for JCA?
Whats Next for JCA?
 
CloverETL Training Sample
CloverETL Training SampleCloverETL Training Sample
CloverETL Training Sample
 
Unit 10: XML and Beyond (Sematic Web, Web Services, ...)
Unit 10: XML and Beyond (Sematic Web, Web Services, ...)Unit 10: XML and Beyond (Sematic Web, Web Services, ...)
Unit 10: XML and Beyond (Sematic Web, Web Services, ...)
 

Similar to OMG D&C Tutorial

Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2
Pascal Rapicault
 
Pulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin Bost
Pulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin BostPulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin Bost
Pulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin Bost
StreamNative
 
Apache Ambari BOF - Blueprints + Azure - Hadoop Summit 2013
Apache Ambari BOF - Blueprints + Azure - Hadoop Summit 2013Apache Ambari BOF - Blueprints + Azure - Hadoop Summit 2013
Apache Ambari BOF - Blueprints + Azure - Hadoop Summit 2013
Hortonworks
 

Similar to OMG D&C Tutorial (20)

OMG CORBA Component Model tutorial
OMG CORBA Component Model tutorialOMG CORBA Component Model tutorial
OMG CORBA Component Model tutorial
 
Ese 2008 RTSC Draft1
Ese 2008 RTSC Draft1Ese 2008 RTSC Draft1
Ese 2008 RTSC Draft1
 
Understanding and extending p2 for fun and profit
Understanding and extending p2 for fun and profitUnderstanding and extending p2 for fun and profit
Understanding and extending p2 for fun and profit
 
C++ N Pv2
C++ N Pv2C++ N Pv2
C++ N Pv2
 
What's New for Presentation in Visual Studio 2008 SP1
What's New for Presentation in Visual Studio 2008 SP1What's New for Presentation in Visual Studio 2008 SP1
What's New for Presentation in Visual Studio 2008 SP1
 
Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2
 
Extend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation stepsExtend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation steps
 
AADL: Architecture Analysis and Design Language
AADL: Architecture Analysis and Design LanguageAADL: Architecture Analysis and Design Language
AADL: Architecture Analysis and Design Language
 
Component based software development
Component based software developmentComponent based software development
Component based software development
 
Case Study _Cloud Native Transformation Deploying Integration workloads to AK...
Case Study _Cloud Native Transformation Deploying Integration workloads to AK...Case Study _Cloud Native Transformation Deploying Integration workloads to AK...
Case Study _Cloud Native Transformation Deploying Integration workloads to AK...
 
Brane.Storm
Brane.StormBrane.Storm
Brane.Storm
 
Add on packages
Add on packagesAdd on packages
Add on packages
 
Pulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin Bost
Pulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin BostPulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin Bost
Pulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin Bost
 
Mainframe Technology Overview
Mainframe Technology OverviewMainframe Technology Overview
Mainframe Technology Overview
 
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019  Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
 
Introduction To Ant
Introduction To AntIntroduction To Ant
Introduction To Ant
 
Apache Ambari BOF - Blueprints + Azure - Hadoop Summit 2013
Apache Ambari BOF - Blueprints + Azure - Hadoop Summit 2013Apache Ambari BOF - Blueprints + Azure - Hadoop Summit 2013
Apache Ambari BOF - Blueprints + Azure - Hadoop Summit 2013
 
Asset modelimportconn devguide_5.2.1.6190.0
Asset modelimportconn devguide_5.2.1.6190.0Asset modelimportconn devguide_5.2.1.6190.0
Asset modelimportconn devguide_5.2.1.6190.0
 
Asset modelimportconn devguide_5.2.1.6190.0
Asset modelimportconn devguide_5.2.1.6190.0Asset modelimportconn devguide_5.2.1.6190.0
Asset modelimportconn devguide_5.2.1.6190.0
 
Application Model for Cloud Deployment
Application Model for Cloud DeploymentApplication Model for Cloud Deployment
Application Model for Cloud Deployment
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

OMG D&C Tutorial

  • 1. Tutorial on the OMG Deployment and Configuration (DnC) Specification Industrializing the Development Distributed Real-time & Embedded Systems Other contributors include Tao Lu, Gan Deng, Jai Balasubramanian, Kitty Balasubramanian, Bala Natarajan, William R. Otte, Jeff Parsons, Frank Pilhofer, Craig Rodrigues, Nanbor Wang, & Johnny Willemsen Dr. Douglas C. Schmidt [email_address] http://www.dre.vanderbilt.edu/~schmidt/ Professor of EECS Vanderbilt University Nashville, Tennessee
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 15. Component Packaging Goal: Associate component implementation(s) with metadata
  • 16.
  • 17. Application Assembly Goal: Group packages & metadata by specifying their interconnections
  • 18.
  • 19. Component Data Model Overview We’ll show XML snippets for each of these component data model elements
  • 20.
  • 22.
  • 23. Component Interface Descriptor for the 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/rate_control:1.0</specificType> <supportedType>IDL:HUDisplay/rate_control:1.0</supportedType> <provider>true</provider> <exclusiveProvider>false</exclusiveProvider> <exclusiveUser>false</exclusiveUser> <optional>true</optional> <kind>Facet</kind> </port> [...] </Deployment:ComponentInterfaceDescription> Rate Pulse RateGen
  • 24. Component Interface Descriptor for the 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
  • 25.
  • 26. Component Interface Descriptor for the 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>Global 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
  • 27. Component Interface Descriptor for the 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
  • 28. Component Interface Descriptor for the NavDisplay Component: NavDisplay.ccd (1/2) <Deployment:ComponentInterfaceDescription xmlns:Deployment='http://www.omg.org/Deployment' xmlns:xmi='http://www.omg.org/XMI' > <label>Navigation 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 NavDisplay Refresh
  • 29. Component Interface Descriptor for the 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 NavDisplay Refresh
  • 30. Component Implementation Description for a Monolithic Implementation
  • 31.
  • 32. Component Implementation Descriptor for the RateGen Component: RateGen.cid (1/2) <?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=&quot;RateGen.ccd&quot;/> <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
  • 33. Component Implementation Descriptor for the RateGen Component: RateGen.cid (2/2) <Deployment:ComponentImplementationDescription> <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
  • 34. <?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> Component Implementation Descriptor for the GPS Component: GPS.cid (excerpt) GPS_exec.dll MyLocation Ready GPS Refresh
  • 35.
  • 37.
  • 38. Component Package Descriptor for the NavDisplay Component: NavDisplay.cpd GPS_exec.dll NavDisplay_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>Navigation Display Device</label> <realizes href=&quot;NavDisplay.ccd&quot;/> <implementation> <name>Text-based Display</name> <referencedImplementation href=&quot;NavDisplay.cid&quot;/> </implementation> <implementation> < name>Graphical Display</name> <referencedImplementation href=&quot;NavDisplayGUI.cid&quot;/> </implementation> </Deployment:ComponentPackageDescription> GPSLocation NavDisplay Refresh GPS_exec.dll NavDisplayGUI_exec.dll
  • 39.
  • 40. Component Interface Descriptor for the 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> <port> <name>control</name> <specificType>IDL:HUDisplay/rate_control:1.0</specificType> <supportedType>IDL:HUDisplay/rate_control: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
  • 42.
  • 43. Component Implementation Descriptor for the 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=&quot;Display.ccd&quot;/> <assemblyImpl> <instance xmi:id=&quot;RateGen&quot;> <name>RateGen Subcomponent</name> <package href=&quot;RateGen.cpd&quot;/> </instance> <instance xmi:id=&quot;GPS&quot;> <name>GPS Subcomponent</name> <package href=&quot;GPS.cpd&quot;/> </instance> <instance xmi:id=&quot;NavDisplay&quot;> <name>NavDisplay Subcomponent</name> <package href=&quot;NavDisplay.cpd&quot;/> </instance> [...] </assemblyImpl> </Deployment:ComponentImplementationDescription> Rate Control Display component Define subcomponent instances
  • 44. Component Implementation Descriptor for the Display Component: Display.cid (2/4) <Deployment:ComponentImplementationDescription> <assemblyImpl> [...] <connection> <name>GPS Trigger</name> <internalEndpoint> <portName>Pulse</portName> <instance href=&quot;#RateGen&quot;/> </internalEndpoint> <internalEndpoint> <portName>Refresh</portName> <instance href=&quot;#GPS&quot;/> </internalEndpoint> </connection> <connection> <name>NavDisplay Trigger</name> <internalEndpoint> <portName>Ready</portName> <instance href=&quot;#GPS&quot;/> </internalEndpoint> <internalEndpoint> <portName>Refresh</portName> <instance href=&quot;#NavDisplay&quot;/> </internalEndpoint> </connection> [...] </assemblyImpl> </Deployment:ComponentImplementationDescription> Rate Control Display component Connections between subcomponent ports
  • 45. Component Implementation Descriptor for the 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=&quot;#RateGen&quot;/> </internalEndpoint> </connection> <connection> <name>Location</name> <internalEndpoint> <portName>MyLocation</portName> <instance href=&quot;#GPS&quot;/> </internalEndpoint> <internalEndpoint> <portName>GPSLocation</portName> <instance href=&quot;#NavDisplay&quot;/> </internalEndpoint> </connection> [...] </assemblyImpl> </Deployment:ComponentImplementationDescription> Rate Control Display component Connecting assembly (external) ports to subcomponent (internal) ports The external/internal mappings are virtual, i.e., there’s no extra indirection overhead
  • 46. Component Implementation Descriptor for the Display Component: Display.cid (4/4) <Deployment:ComponentImplementationDescription> <assemblyImpl> [...] <externalProperty> <name>Rate Mapping</name> <externalName>Rate</externalName> < delegatesTo> <propertyName>Rate</propertyName> <instance href=&quot;#RateGen&quot;/> </delegatesTo> </externalProperty> </assemblyImpl> </Deployment:ComponentImplementationDescription> Rate Control Display component Mapping an assembly’s (external) properties to subcomponent (internal) properties
  • 48.
  • 49. Package Configuration for the 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=&quot;Display.cpd&quot;/> </Deployment:PackageConfiguration> Rate Control Display component
  • 50. Deployment Planning Goal: Map application assembly onto target environment via deployment plan
  • 51.
  • 52.
  • 53.
  • 54.
  • 55. Example Domain My Network Alice Bob MyCable
  • 56. 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=&quot;Alice&quot;> <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
  • 57. 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
  • 58. Domain Descriptor: MyNetwork.cdd (3/3) <Deployment:Domain> [...] <node xmi:id='Bob'> <name>Bob</name> <connection href='#MyCable'/> [... &quot;Windows 2000&quot; OS resource ...] [... &quot;Graphical Display&quot; resource ...] </node> <interconnect xmi:id='MyCable'> <connect href='#Alice'/> <connect href='#Bob'/> </interconnect> </Deployment:Domain> Bob MyCable
  • 59. Deployment Goal: Deploy/execute application/components according to deployment plan
  • 60.
  • 61.
  • 63. Deployment Infrastructure Overview (2/2) Infrastructure (Services)
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76. Deployment Actors Actors  usually, humans aided by software tools
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96. Establishing Connections DomainApplicationManager startLaunch () NodeApplicationManager startLaunch () NodeApplication startLaunch() finishLaunch () DomainApplication finishLaunch () After component instances are installed, the NodeApplication gathers connection references and passes them back to the DomainApplication. The DomainApplication stores these references, finishes intialization, and startLaunch is completed. The Executor may then invoke finishLaunch, which distributes object references to the NodeApplications, which uses them in conjuction with connection operations on components to accomplish connections. LocalityManager finishLaunch ()
  • 97.
  • 98.
  • 99.
  • 100.