T1 Hayes SCAOverview
T1 Hayes SCAOverview
Architecture
Applications
Core Framework (CF)
OE Commercial Off-the-Shelf
(COTS)
Non-CORBA
Modem
Components
Physical
Non-CORBA
Security
Components
Non-CORBA
I/O
Components Neli Hayes
RF API
Modem Modem Link, Network Security Security Security Link, Network I/O I/O
Principal Software Architect
Components Adapter Adapter Components Adapter
SCA Core Framework Team
Components Components Adapter Components
MAC API LLC/Network API Security API LLC/Network API I/O API
CF CF
[email protected]
Operating System Operating System
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 3
Outline (cont.)
Page 4
Outline (cont.)
SW Architecture Overview 27
– What does the SCA Enable for Communication Systems? 28
– How does the SCA Enable Such Things? 29
– SCA Layering 30
– SCA Application Instantiation 31
– SCA Operating Environment 32
– SCA Core Framework and Domain Profile 33
– SCA Operating Environment Mandates 34
Page 5
Outline (cont.)
Page 6
Outline (cont.)
Page 7
Outline (cont.)
Page 8
Why was the SCA
Created?
Tactical Communication
Systems Limitations
Page 10
JTRS Program – Why?
DOD Complaints to JTRS Program
Radio Manufacturers:
A DOD Joint Program for an
information warfare communication
“We can’t support all your
system built on a family of HF-to-L-
discrete radios”
band radios with a common open
architecture with these…
“We can’t fight the way we E
want to with your discrete AR
Requirements F TW D
radios” S O E
• Software controlled and
FIN
reprogrammable DE I O
“We can’t introduce new D
technology at the pace of
• Modular and scaleable RA
• Extensive use of COTS technology
commercial industry” • Simplified applications engineering
• Rapid deployment of system
improvements
Page 11
What is a Software Defined
Radio?
Collection of hardware and software technologies that enable
reconfigurable system architectures for wireless networks and user
terminals.
Page 14
What is the SCA?
The SCA is…
An Open Architecture Series of Mandated
Framework Interfaces, Behavioral
Based on Specifications and
• CORBA Requirements
• CORBAservices Promote component portability,
• CORBA Component Model interchangeability, and interoperability,
• POSIX software reuse, and architecture scalability.
Expressed in
• CORBA IDL
Standard
For communication platform hardware &
• UML
software design engineers to ensure a
• XML system’s SCA-compliancy just as a building
architect or planner uses a local building
code to design and build homes to ensure
sound construction and safety.
Page 16
The SCA Is Not…
Is not a system specification.
• It is a set of rules that constrain the design of systems, to
achieve SCA objectives.
Is not a design specification.
• Does not tell hardware and software designers how to design
their equipment and programs.
• SCA requirements limited to those necessary to meet SCA-
compliant system criteria, w/o restricting innovation or domain-
specific requirements.
Is not an implementation architecture.
• There are many valid definitions of an SCA architecture.
• A particular SCA implementation architecture is a result of
joining between the SCA, the particular domain and project
technical specifications, and other procurement requirements.
Page 17
SCA Maturity
Where is it Today?
Phased Development to Prove
the Architecture Works
JTRS Step 1 – Architecture Development
– MSRC members develop initial architecture
JTRS Step 2a – Architecture Feasibility
– MSRC members deliver prototype radios -- SCA Core Framework and waveform
implementations
– Specification maturation
– Pursue commercial acceptance (OMG/SDR Forum)
JTRS Step 2b – Independent Architecture Validation
– Non-MSRC members deliver prototype radios
Harris/General Dynamics deliver prototype radios
Boeing – Delivers SCA Core Framework
Thales/Vanu provides handheld radios
Rockwell-Collins provides prototype waveform software
JTRS Step 2c – Ruggedized Fieldable Radio
– BAE SYSTEMS chosen to deliver SCA compliant radios for field evaluation
Page 19
SCA Compliance Mandatory on
JTRS Clusters ell as any DoD Propgeraramtiionns (NCO)
vo lv ed with
As w k C en t ric O
Networ and CW)
ar e ( N
C e n t ri c Warf
Cluster 1 Networ
k
– Multi-channel software programmable, hardware-configurable digital
radio networking system for the Army.
Cluster 2
– Handheld and man-pack radios for the Army, Navy Marine Corps and
Air Force.
AMF (JTRS Airborne and Maritime/Fixed Station, Mergers of Clusters 3 & 4)
– Acquisition of JTR sets for Air Force and Navy platforms.
Cluster 5
– JTRS hand-held and man pack units for embedded platforms suitable
for Small Form Fit (SFF) radios.
Future Clusters
– Will respond to interests from the Homeland and Security operational
communities and evolving DoD requirements
Public Domain Detail at http://jtrs.army.mil/
Page 20
Standardization Efforts
JTRS SCA Technical Architecture Group (TAG)
– An SCA discussion forum, invites the JTRS community members to propose and develop
change proposals to the SCA and its related appendices and supplements. Oversees
submitted changes and leads effort to research, accept or reject each change proposal.
– https://jtel-sca.spawar.navy.mil/
Software Defined Radio Forum (SDRF)
– Working with JTRS JPO, adopted the SCA in 2000 as a body of work mature enough to
move out to a formal standards body, the Object Management Group (OMG). Involved with
development of SCA-based software radio standards.
– http://www.sdrforum.org/
OMG Software-Based Communication Domain Task Force (DTF)
– Former OMG Software Radio Domain Special Interest Group (DSIG)
– With JPO sponsorship, works toward building an international commercial standard based
on the SCA. Most recent efforts include the PIM & PSM for Software Radio Components
Joint Revised Submission.
– http://sbc.omg.org
International Acceptance
– Individual nations, such as France and Sweden have adopted or are considering adopting
forms of the SCA.
– The US and others are also working within NATO to have the SCA adopted.
Page 21
SCA Specifications,
Supporting Documents,
Training, Emerging SCA-
Based Standards
SCA Specifications
04
Specialized
s t 20
HW
g u
Au
Supplement to
the SCA
CB
V3.0
A C
S C
Portability for specialized hardware such as
b y
• Field Programmable Gate Arrays (FPGA)
d
• Digital Signal Processors (DSP)
e
ov
• Application Specific Integrated Circuits (ASIC))
p r
In particular, it specifies
Ap
• a Hardware Abstraction Layer Connectivity (HAL-C) specification
• a reduced POSIX AEP for DSP environments,
• Waveform functional blocks to be provided as part of each radio set
• an Application Interface for antenna interfaces.
Available at http://jtrs.army.mil/
Page 25
Emerging SCA-Based
Standards
Based on the SCA. Defines platform independent
Highly recommended reading PIM & PSM model and a UML Software
for SCA software radio system for Software Profile for software radios,
and software engineers and describing in great detail, all
Radio
architects, specially on JTRS common aspects of a software
and related programs.
Components radio (i.e. the entire radio
Sheds a lot of light on the SCA April 2004 management infrastructure,
CF infrastructure, how it relates radio devices and services, and
to software radio concepts. …), explaining concepts such as
communication channels, and
how these concepts map to the
SCA infrastructure (for example
exactly what is a communication
channel and how does it map to
the SCA infrastructure for CF,
devices, services, and the
operating environment).
Available at http://www.omg.org/cgi-bin/doc?sbc/2004-04-01
Page 26
Software Architecture
Overview
What does the SCA Enable for
Communication Systems?
– Maximum independence of software from specific hardware
solutions.
– Portability of applications software across diverse SCA-compliant
platforms in the same domain.
– Interoperability of applications software.
– Reuse of common software across these platforms
– Scalability across platforms – same architecture from handheld to
base station.
SCA
Domain Hardware
Page 29
SCA Layering
Limited to use OS services designated mandatory in SCA AEP
Developed using
CF
Core Base Application Core
Subset of
POSIX Framework Control Framework
Provides Interfaces Services
Minimum AEP
OS
Capability CORBA CORBA
Software Bus Software Bus
&
Application
OS Operating System
Portability Must Support the Application Environment Profile (AEP)
Device Drivers
Page 30
SCA Application Instantiation
Application
load/execute
Instance
Reads Installed
m
Files
ai
n
Pr
Application
of
ile
Instance
Connects
components
Page 31
SCA Operating Environment
Operating Environment (OE) – forms domain platform
– Core Framework
– Domain Profile
– CORBA middleware (software bus)
– Application Environment Profile
Defined by SCA to provide minimum operating system functionality
– Operating System
– Device Drivers
OE’s Job
– Impose design constraints on applications to provide increased
portability of applications from one SCA-compliant platform to another
– Specified interfaces between the CF and application software.
– Restrictions on applications’ usage of OS and CORBA middleware
APIs.
Page 32
CF and Domain Profile
Core Framework (CF)
– Set of software interfaces and profiles that provide for the deployment,
management, interconnection, and intercommunication of software
application components in embedded communication systems, using
CORBA to communicate between entities.
Domain Profile
– XML files that describe:
Individual components of a software application.
How the components are interconnected.
Component properties.
Properties of hardware device abstractions.
Page 33
SCA OE Mandates
RTOS
– RTOS must Support SCA Application Environment Profile (AEP).
– The SCA AEP is a subset of the POSIX.13 Real-time Controller System
Profile (PSE52).
– Applications are limited to using the RTOS services that are designated
as mandatory in the SCA AEP.
CORBA
– No extensions and/or services beyond Minimum CORBA can be used
except as specified in the SCA.
CORBA Naming Service
CORBA Event Service
OMG Light Weight Log Service (SCA V2.2.1)
– Desired extensions listed as optional, pending commercial availability
Interoperable Naming Service
Real-Time CORBA
CORBA Messaging
Page 34
SCA Partitioning
Birds Eye View
Application Layer Software
Components
Page 35
SCA Partitioning
Detailed View
APPLICATION LAYER Applications
Core Framework (CF)
INFRASTRUCTURE
Commercial Off-the-Shelf
LAYER (COTS)
App A
MAC API LLC/Network API Security API LLC/Network API I/O API
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 36
SCA Partitioning
Major Divisions
APPLICATION LAYER Applications
Core Framework (CF)
INFRASTRUCTURE
Commercial Off-the-Shelf
LAYER (COTS)
Non-CORBA
App B
Application Non-CORBA
App D
Non-CORBA
App F
Components Layer Components Components
App A
App B API App C API App D API App E API App F API
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Page 37
Infrastructure
Bus Layer INFRASTRUCTURE
LAYER
Commercial Off-the-Shelf
(COTS)
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 38
Infrastructure
Network & Serial
Interface Services
INFRASTRUCTURE
Commercial Off-the-Shelf
LAYER (COTS)
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 39
Infrastructure
OS Layer INFRASTRUCTURE
LAYER
Commercial Off-the-Shelf
(COTS)
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 40
Infrastructure
OS Layer (cont.) INFRASTRUCTURE
LAYER
Commercial Off-the-Shelf
(COTS)
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 41
Infrastructure
OS Layer (cont.) INFRASTRUCTURE
LAYER
Commercial Off-the-Shelf
(COTS)
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 42
Infrastructure
CORBA Middleware INFRASTRUCTURE
LAYER
Commercial Off-the-Shelf
(COTS)
Why CORBA?
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 43
Infrastructure CORBA
Middleware (cont.) INFRASTRUCTURE
LAYER
Commercial Off-the-Shelf
(COTS)
OMG’s CORBA specification: a specification for a “software bus” or “software back plane”.
The “software bus” and the middleware for the
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 44
Infrastructure
Core Framework INFRASTRUCTURE
LAYER
Core Framework (CF)
Commercial Off-the-Shelf
(COTS)
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 45
Application Layer
CORBA Capable APPLICATION LAYER Applications
Core Framework (CF)
Components
INFRASTRUCTURE
Commercial Off-the-Shelf
LAYER (COTS)
App B API App C API App DAPI App E API App F API
interfaces & services.
le
file
ro f i
Profile.
Core Framework IDL (“Logical Software Bus” via CORBA)
Pro
P
IX
IX
POS
POS
A
SCA
C
Services Services & Services Services &
S
(Middleware) Applications (Middleware) Applications
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 46
Adapters Allowing Use of Non-CORBA
Capable Components APPLICATION LAYER Applications
• Based on Adapter
Non-CORBA
Design Pattern Non-CORBA • Implement CF Interface Non-CORBA
App B • Translate between App D • Translation transparent to App E
Components “Legacy” & CORBA- Components
CORBA-capable components Components
capable components
App A
MAC API LLC/Network API Security API LLC/Network API I/O API
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 47
SCA Partitioning Benefits
Page 48
Infrastructure Layer
Operating Environment
Operating
Environment
INFTRASTRUCTURE Applications
LAYER Core Framework (CF)
OPERATING Commercial Off-the-Shelf
ENVIRONMENT (COTS)
Non-CORBA
ORB Non-CORBA CF Non-CORBA
App B Naming Service App D App F
Components Components Components
Event Service
LW Log Service V2.2.1
App A
App B API App C API App D API App E API App F API
Operating Environment
Network Stacks & Serial Interface Services Network Stacks & Serial Interface Services
Board Support Package (Bus Layer) Board Support Package (Bus Layer)
Page 50
Operating Environment’s
Job
INFTRASTRUCTURE Applications
LAYER Core Framework (CF)
OPERATING Commercial Off-the-Shelf
ENVIRONMENT (COTS)
Page 51
Operating Environment
Operating System
OE
OS Usage Restrictions
Operating System
Commercial Off-the-Shelf
(COTS)
a p p li c a ti o n s u s e C F f o r L o g ic a l D e v ic e is a n A d a p te r fo r
CO RBA A PI a l l F il e a c c e s s H W - s p e c i fic d e v ic e s
M o r e o n L o g i c a l D e v i c e la t e r
A l l A p p li c a t i o n C o m p o n e n t s
CO RBA O RB n on -C O R B A c om p on e n ts
or
d e v ic e d r iv e r s
O S a ccess O S a ccess (n on -C O R B A
O S a ccess
lim ite d to co m p o n en ts p r o v id e
u n l im it e d u n l im it e d
SCA AEP a c c ess to h ar d w ar e
d e v i c e s / f u n c ti o n a l it y
O S (fu n c tio n ) th a t su p p o r ts S C A A E P . n o t a v a i la b l e o n a
C O R B A -ca p a b le
( u n l im it e d p r o p r i e ta r y A P I s f o r s y s t e m p rocessor)
d e v e lo p m e n t).
A n y v en d o r -p r o v id e d O S
f u n c t i o n c a ll s
Page 53
Operating Environment
Object Request Broker
OE
CORBA Middleware
Commercial Off-the-Shelf
(COTS)
Components “plug” into
to other components.
Client&
Client &
Client
Client Server
Server Server
Server
Page 55
Operating Environment
CORBA Naming Service
OE
CORBA Middleware
Naming Service
Naming Service
Commercial Off-the-Shelf
(COTS)
3: Request Services
Client
Client Server
Server
2: Clients find object references distributed 1: Servers bind their objects
throughout the system by their assigned name to names so that clients can find them
• A CORBA server that
associates human
• Centralized
readable names with Naming
Naming repository of
CORBA object references.
• Based on OMG Naming Service
Service object
references in
Service Specification
the CORBA
OMG Document
environment.
formal/00-11/01.
• Must support bind(), • Server
bind_new_context(), Bindings
unbind(), destroy(), organized in
resolve(). Naming
Contexts.
Page 57
Naming Service Usage OE
CORBA Middleware
in the OE
Naming Service
Commercial Off-the-Shelf
(COTS)
Page 58
Operating Environment
CORBA Event Service
OE
CORBA Middleware
Event Service
Event Service
Commercial Off-the-Shelf
(COTS)
Page 60
OE
CORBA Middleware
Event Service
Event Service
S u p p l i e r
push push
Supplier22
Supplier Consumer22
Consumer
push Event Channel push
Supplier…
Supplier … Consumer…
Consumer …
push push
SupplierNN
Supplier ConsumerNN
Consumer
Page 61
Event Service Usage OE
CORBA Middleware
in the OE
Event Service
Commercial Off-the-Shelf
(COTS)
Used by CF for
• Connection of CF domain components to required event channels, and
• Connection/disconnection of application components to required event channels in
the CF domain, during instantiation/tear down of an application in the CF domain.
• Logging SCA-specified events to SCA-specified event channels.
push push
Consumer11
C o n s u m e r
Supplier11
Supplier Consumer
S u p p l i e r
push push
Supplier22
Supplier Consumer22
Consumer
push Event Channel push
Supplier…
Supplier … Consumer…
Consumer …
push push
SupplierNN
Supplier ConsumerNN
Consumer
Page 62
Event Service Usage OE
CORBA Middleware
in the OE (cont.)
Event Service
Commercial Off-the-Shelf
(COTS)
Page 63
Operating Environment
Log Service
e i g ht
igh t W
L
Log Service ced with O M G
A V 2 .2 . 1 …
Repla ervice in S C
L og S
SCA V2.2 provides one interface (Log) and types
for log producers, consumers, and
administrators to generate standard SCA log
records, consume them, get status from the clog,
e into
in t e r fa
and control the logging output of e Laolog
g
producer. d e s t h e s f o r …
h ich d iv i interf a c
… w p a ra te
o ur s e
Log producers are F
required to implement
configure properties that configure the c e r s ,
producer’s log record output. P ro d u
s ur s,
m e
g C o n r s , a n d
…Lo m in is t r a t o
r s
Ad R e t rie v e
Statu s Page 65
Log Interface
INFTRASTRUCTURE
LAYER Log Service
OPERATING Commercial Off-the-Shelf
ENVIRONMENT (COTS)
<<Interface>>
Log
clearLog() : void
destroy() : void SCA V2.2.1
setAdministrativeState(state : in AdministrativeStateType) : void CosLwLog::LogAdministrator
setLogFullAction(action : in LogFullActionType) : void
setMaxSize(size : in unsigned long long) : void
getAdministrativeState() : AdministrativeStateType
getAvailabilityStatus() : AvailabilityStatusType
getCurrentSize() : unsigned long long SCA V2.2.1
getLogFullAction() : LogFullActionType
getMaxSize() : unsigned long long
CosLwLog::LogStatus
getNumRecords() : unsigned long long SCA V2.2.1
getOperationalState() : OperationalStateType CosLwLog::LogConsumer
getRecordIdFromTime(fromTime : in LogTimeType) : RecordIdType
retrieveById(currentId : inout RecordIdType, howMany : in unsigned long) : LogRecordSequence
writeRecords(records : in ProducerLogRecordSequence) : void SCA V2.2.1
CosLwLog::LogProducer
Page 66
Log Service Usage
by CF
INFTRASTRUCTURE
LAYER Log Service
OPERATING Commercial Off-the-Shelf
ENVIRONMENT (COTS)
c e d with
Repl a
r o d ucer
o g :: L og P
L
CosLw SCA V2.2.1
in
Page 67
Log Service Implementation and
Deployment Optional INFTRASTRUCTURE
in the OE
LAYER Log Service
OPERATING Commercial Off-the-Shelf
ENVIRONMENT (COTS)
Page 68
Operating Environment
Core Framework
Core Framework
INFTRASTRUCTURE
LAYER Core Framework (CF)
OPERATING Commercial Off-the-Shelf
ENVIRONMENT (COTS)
Page 70
CF Interfaces
Top-Level View
Page 71
CF Interface
Groupings
Base Application
Interfaces
File Service
Interfaces
Framework
Control Interfaces
Page 72
CF Interfaces and Services
Page 73
CF Component Packaging
and Deployment
The Domain Profile, is a series of eXtensible Markup
Language (XML) files, based on…
Page 74
CF Base Application
Interfaces
CF Base Application
Interfaces
Defined by CF requirements, implemented by application developers.
Testing component Configuring/retrieving
Managing associations Obtaining a selected Initializing and
implementations component
between logical com. consumer or producer releasing component-
properties/attributes
channels for Port specific data for
transferring data/control instantiated SCA-
between SCA-compliant compliant software
software components components
Creating/destroying
Resources, obtaining a
resource without
Common API for knowing its identity
control and
configuration of a
software component
<<Interface>>
Port
Page 77
A Component can have a Set
of Ports
Page 78
A Component Defines a
Component-Specific Port by…
Creating a specific port type by defining an interface that
inherits from Port.
– Port Types
Command and Control, Data, Status.
Basic push and pull Ports defined in the SCA.
Establishing the operations for transferring data and
control.
Establishing the meaning of data and control values.
Specifying whether the port is a “uses” or a “provides”
port.
Page 79
“Uses” and “Provides”
Ports
Uses Port
– A port that uses some set of services provided by a
provider component.
– All uses ports implement the Port interface.
Provides Port
– A port that provides some set of services at an
interface.
Page 80
How do Component Ports
get Connected?
Connection Definitions
– Definition of how the component ports get connected is
described in the following Domain Profile files:
(An application’s) Software Assembly Descriptor
(A CF domain node’s) Device Configuration Descriptor
Covered later when we go over the Domain Profile.
By Whom?
– Ports are connected by CF’s Framework Control Interfaces in
charge of deploying and managing components in the CF
domain (i.e. DomainManager), and instantiating applications in
the CF domain (i.e. ApplicationFactory).
How?
– Covered later when we cover CF’s Framework Control Interfaces
(DomainManager and ApplicationFactory).
Page 81
Port Interface Advantages
Page 82
PortSupplier Interface
Provides the means for a component that has a Port to make the Port available to
those who need it. Mainly, those in charge of connecting the Port to other(s).
<<Interface>>
PortSuppli er
Page 83
Use of PortSupplier
Interface in CF
Page 84
LifeCycle Interface
Provides a generic means for initializing and releasing a resource, application, or
device in the CF domain.
<<Interface>>
LifeCycle
initialize() : void
releaseObject() : void
Page 85
LifeCycle Users
Page 86
TestableObject Interface
Provides a generic means for black box testing a resource, application, or device
in the CF domain.
<<Interface>>
TestableObject
Page 87
TestableObject Interface
Uses and Advantages
Page 88
PropertySet Interface
Provides a generic means of configuring and retrieving a component’s properties.
<<Interface>>
PropertySet
Page 89
Properties Sequence
Properties or id
(name)/value pairs, is a <<CORBATypedef>>
concept from the Properties
CORBA Components,
Telecommunications
Information
Networking
Architecture (TINA),
and CORBA property <<CORBAStruct>>
service specifications. DataType
id : string
value : any
Page 90
Use of PropertySet
Interface in CF
Page 91
PropertySet Interface
Advantages
Page 92
Resource Interface
<<Interface>> <<Interface>> <<Interface>> <<Int erface>>
PortSupplier LifeCycle PropertySet TestableObject
<<Interface>>
Resource
Unique identifier, so that Specialization of a minimal
identifier : string set of interfaces needed to
each component logging
messages can be identified initialize, configure, control,
start() : void and tear-down a component
as the producer of the log stop() : void
message. (e.g. an application’s
resources, a Device, or an
Application).
Page 93
Resource Interface
Advantages
Page 94
ResourceFactory Interface
Modeled after the Factory design pattern
Provides a generic framework of operations for creating and destroying
Resources and obtaining a resource without knowing its identity
<<Interface>>
Reso urceFactory
identifier : string
Page 95
ResourceFactory Resource
Creation and Destruction
Creation
– If the Resource has not yet been created, it is created in the
same process space as the ResouceFactory.
– If the Resource has already been created, its reference count is
incremented and a copy of it is returned.
Destruction
– If the specified Resource’s reference count is greater than one,
it is decremented.
– Otherwise, the specified Resource is torn down.
Page 96
ResourceFactory Interface
Advantages
Page 97
Implementation of a
ResourceFactory is Optional
An application is not required to use ResourceFactories to
obtain, create, or tear down resources.
The application’s Software Profile specifies which
application components require ResourceFactories.
– That is,
for which application’s components does the CF ApplicationFactory
create and use a ResourceFactory (instead of directly executing the
application’s component’s entry point) during instantiation of the
application, and correspondingly,
for which application components does the CF Application interface
use a ResourceFactory to destroy the application component,
(instead of directly terminating the component’s running task or
process).
Page 98
Base Application Interfaces Model A
Component’s Maturity Cycle
Started
start stop
Page 99
CF Framework Control
Interfaces
Definition of “Domain” in the
CF Problem Space
Abstraction of a computing node that
• Allows the control and monitoring of node
resources (i.e. CPU, processes, memory, file systems),
• Implements the OE,
• Executes a DeviceManager, and
• Executes installed OE and CF services (CORBA
Provides instances of aggregated objects
Naming Service, Event Service, FileSystem, Log
(get X, add X, remove X)
Service, etc.).
Page 101
How does the CF Domain
Get “Created”?
Each node and its resources are created (i.e. OS booted, file
systems created, installed OE and CF services started
(CORBA Naming Service, Event Service, FileSystem, Log
Service), DeviceManager representing the Node created,
DeviceManager components (devices, services, additional The entity in charge of
file systems, etc.) created and deployed on the Node. managing the domain is created.
Node Domain
+2..n
1
Event Channel FileManager
Page 102
Services Provided by the
CF Domain
Deploying and removing a node’s components to/from Retrieving the domain’s nodes
the domain (i.e. registering and un-registering a (DeviceManagers), software
DeviceManager along with its devices and services applications, and software application
to/from the domain) instances.
Creating/controlling/terminating
sw application instances.
+2..n
1 0..n
Event Channel FileManager SW Application
Registering/un-registering Installing/uninstalling
to/from the domain event application software to/from
channels. the domain.
Page 103
CF Domain Services are Provided by the
following Framework Control Interface
Groupings
Base Device
Interfaces
Domain Management
Device Management Interfaces
Interfaces
Page 104
CF Domain Services are Mapped to the
following Framework
Application
Control Interfaces Instantiation Interface
Application
Configuration/
Control/
Termination
Interface
Base Device
Interfaces
Domain Component
Node Component Deployment/Removal &
Deployment/Removal Application
Interface Installation/Uninstallation
Interface
Page 105
CF Framework Control
Base Device Interfaces
CF Base Device Interfaces
Defined by CF requirements, implemented by application developers.
Framework for a device’s software
profile attribute, state management Framework of operations for
and status attributes, and capacity adding/removing devices to/from a
allocation/deallocation operations device capable of an aggregate
relationship
Framework of operations for
loading/unloading software modules
onto a device processor’s memory
Page 107
Device Interface
<<Interface>> <<Interface>> <<Interface>> <<Interface>>
PortSupplier LifeCycle PropertySet TestableObject
<<Interface>>
– Devices have states as they are viewed
Page 109
LoadableDevice Interface
• Extends the Device interface by The load module file name and load
type are located in the device
adding software loading and component’s Software Package
unloading behavior for a particular Descriptor in the Domain Profile.
device.
• Implementation is OS-dependent. <<Interface>> Possible Load Types
Device KERNEL_MODULE
DRIVER – Device Driver
SHARED_LIBRARY – Dynamic
Examples: Linking
modem, FPGA EXECUTABLE – Main POSIX Process
<<Interface>>
LoadableDevice
Page 110
ExecutableDevice
Interface
• Extends the LoadableDevice
interface by adding execute and
terminate behavior for a device.
• Used for devices with an OS (e.g.
VxWorks, LynxWorks, Linux,
Integrity, etc.) that supports <<Interface>>
creation of threads/processes. LoadableDevice Examples:
• Implementation is OS- General Purpose Processors
dependent. (Intel, PowerPC)
<<Interface>>
ExecutableDevice
Page 111
ExecutableDevice
Interface (cont.)
Name of a function (thread) or • Id/value pairs converted to (argc,
file (process), depending on the argv) format.
OS. • Some are SCA-defined required
parameters (e.g.
DEVICE_MANAGER_IOR,
• Optional stack size and NAMING_SERVICE_IOR, etc.).
priority <<Interface>> • Some are optional user-specified
• Specified in the LoadableDevice parameters specific to the executable
executable component’s component’s implementation.
SPD in Domain Profile (Specified in the component’s SPD in
the Domain Profile.)
<<Interface>>
ExecutableDevice
Page 112
AggregateDevice Interface
<<Interface>> An aggregated logical Device adds
itself to a composite Device. An
Device
aggregate Device uses this
This Interface is provided by a interface to add or remove itself
Device through a "provides port" from the composite Device when it
0..n
named “CompositeDevice” for any is being created or torn-down.
Device that is capable of an
aggregate relationship. 0..1
List of Devices that <<Interface>>
have been added to AggregateDevice
this Device through
the addDevice( ) devices : DeviceSequence
Examples:
operation and have
not yet been addDevice(associatedDevice : in Device) : void y INFOSEC
removed through removeDevice(associatedDevice : in Device) : void Device with “n”
the removeDevice( ) crypto channel
operation. Devices
y I/O Device with
“n” ports
Page 113
CF Framework Control
Interface for
Node Component
Deployment and Removal
Node Component Deployment
and Removal Interface
Responsible for
creation of logical
Devices, and
launching service
applications on
these logical
Devices during a
CF Node startup,
and deploying and
removing these
logical Devices and
services to/from
the CF Domain,
during CF startup,
shutdown, or
dynamically at run-
time.
Page 115
What the DeviceManager
Represents in the CF Domain
A given system is composed of a set of nodes (CORBA-
capable boards) with persistent components deployed and
running on them.
+2..n
1 0..n
Event Channel FileManager SW Application
Page 116
DeviceManager’s Job
Page 117
DeviceManager’s Job (cont.)
Page 118
DeviceManager Interface
<<Interface>> <<Interface>>
PortSupplier PropertySet
<<Interface>>
DeviceManager
deviceConfigurationProfile : string
fileSys : FileSystem
identifier : string
label : string
registeredDevices : DeviceSequence
registeredServices : ServiceSequence
Page 119
Elements of a
DeviceManager Node
<<Interface>> <<Interface>>
PortSupplier PropertySet
<<Interface>>
DeviceManager
registeredDevices : DeviceSequence
registeredServices : ServiceSequence
Page 120
DeviceManager’s
FileSystem
<<Interface>> <<Interface>>
PortSupplier PropertySet
<<Interface>>
DeviceManager
fileSys : FileSystem
Page 121
Registration of Logical Devices
and Services with DeviceManager
<<Interface>> <<Interface>>
PortSupplier PropertySet
<<Interface>>
DeviceManager
Page 122
DeviceManager
Configure/Query Properties
<<Interface>> <<Interface>>
PortSupplier PropertySet
<<Interface>>
DeviceManager
Page 123
Services for
DeviceManager’s Use
<<Interface>> <<Interface>>
PortSupplier PropertySet
<<Interface>>
DeviceManager
Page 124
CF Framework Control
Interface for Domain
Component Deployment and
Removal
&
Application Installation and
Un-installation
DomainManager’s Job
To support the instantiation and tear-down of First, it provides the
means for
applications in the CF domain, the DomainManager
deployment,
provides 2 kinds of services: interconnection,
disconnection, and
removal of
persistent
components to/from
the CF domain
during
registration/unregis
tration of
DeviceManagers
and their devices,
services, with/from
DomainManager.
Page 126
DomainManager Provides
Operations for…
<<Interface>>
PropertySet Registration/unregistration
of DeviceManager’s, devices
and services to/from the CF
domain.
<<Interface>>
DomainManager
applicationFactories : ApplicationFactorySequence
applications : ApplicationSequence
deviceManagers : DeviceManagerSequence
domainManagerProfile : string
fileMgr : CF::FileManager
identifier : string
Page 127
DomainManager’s Job (cont.)
Page 129
DomainManager Provides
Operations for…
<<Interface>>
PropertySet Registration/unregistration
of producer(s)/consumer(s)
to/from domain event
channels.
<<Interface>>
DomainManager
applicationFactories : ApplicationFactorySequence
applications : ApplicationSequence
deviceManagers : DeviceManagerSequence
domainManagerProfile : string
fileMgr : CF::FileManager
identifier : string
Page 130
DomainManager Provides
Access to the Domain’s…
<<Interface>>
PropertySet
<<Interface>>
DomainManager • Installed Applications
applicationFactories : ApplicationFactorySequence • Instantiated Applications
applications : ApplicationSequence
deviceManagers : DeviceManagerSequence
• Registered DeviceManagers
domainManagerProfile : string (and their devices and services)
fileMgr : CF::FileManager
identifier : string
• FileSystem
installApplication(profileFileName : in string) : void
registerDevice(registeringDevice : in Device, registeredDeviceMgr : in DeviceManager) : void
registerDeviceManager(deviceMgr : in DeviceManager) : void
registerService(registeringService : in Object, registeredDeviceMgr : in DeviceManager, name : in string) : void
registerWithEventChannel(registeringObject : in Object, registeringId : in string, eventChannelName : in string) : void
uninstallApplication(applicationId : in string) : void
unregisterDevice(unregisteringDevice : in Device) : void
unregisterDeviceManager(deviceMgr : in DeviceManager) : void
unregisterFromEventChannel(unregisteringId : in string, eventChannelName : in string) : void
unregisterService(unregisteringService : in Object, name : in string) : void
Page 131
CF Framework Control
Application Creation Interface
Installation of an Application…
…results in creation of a
corresponding
ApplicationFactory for
that type of Application.
Page 133
Application Creation
Interface
Based on user’s request,
the ApplicationFactory
creates a CORBA object
implementing the
Application interface for
each Application created.
0 .. n
<<Interface>>
ApplicationFactory
identifier : string
name : string
softwareProfile : string
create(name : in string,
initConfiguration : in Properties,
deviceAssignments : in DeviceAssignmentSequence) : Application
Page 135
ApplicationFactory
Interface (cont.)
User-friendly name for the application type, identifier, and the software
profile (Domain Profile Software Assembly Descriptor (SAD)) used for
creating applications of that type.
<<Interface>>
ApplicationFactory
identifier : string SAD ID – Used to identify the corresponding
name : string ApplicationFactory when logging messages or
sending events to the Outgoing Domain
softwareProfile : string Management Event Channel.
create(name : in string,
initConfiguration : in Properties,
deviceAssignments : in DeviceAssignmentSequence) : Application
Page 136
How an Application Instance
is Brought into Existence
• UI asks for all installed Apps
(ApplicationFactories). Determines applicable Device(s)
• AppFactory is chosen & issued a create (). on which to load application code
defined in Domain Profile.
CF::Application is
returned – providing
proxy interface to the
Assembly Controller of
created Resources.
Page 137
ApplicationFactory
Interface Advantages
The ApplicationFactory provides an interface to request the creation of
a specific type of application in the domain.
– This abstraction allows a user interface to manipulate a group of
application types as objects.
There is one ApplicationFactory object for each type of application and
one implementation for all ApplicationFactory objects.
– Each ApplicationFactory object has its own instance variables based
upon the same servant class definition and therefore is its own unique
instance.
The ApplicationFactory interface provides a standard interface for
creating applications within the domain, and one common
implementation within the domain for creating applications.
– Each application developer doesn’t have to develop code to parse their
own software profiles and retrieve domain profile (devices, etc.) to
create their application within a domain.
Page 138
CF Framework Control
Application Configuration,
Control and Termination
Interface
CF Application
Instantiation Interfaces
…provides the means to
manage an instantiated
application’s lifecycle,
state, and behavior.
0 .. n
When the
ApplicationFactory
instantiates an Application,
it returns the proxy for its
implementation which…
Page 140
Application Interface – A
Specialized Resource
Since users need to control the
lifespan of applications,
configure them, and control
From an end-user perspective, <<Interface>> their behavior, the Application
software applications are the Resource interface is derived from the
primary functional element of a Resource interface, so that it
system. can provides the necessary
operations for managing
An Application has application lifecycle, state, and
characteristics very similar to a <<Interface>> behavior.
Resource. For example, an Application
application has properties and The implementation of an
communicates through ports. Application is comprised of a
set of Resource component
implementations and their
interconnections.
Page 141
Application Interface – A Proxy
for an Instantiated SW Assembly
The Application delegates its
inherited Resource
operations to a Resource
<<Interface>>
component that has been Resource
identified as the “assembly
controller for the software
assembly”.
Page 142
What is an Assembly
Controller?
<<Interface>> <<Interface>>
Port Resource
identifier : string • Acts like the POC for the
connectPort() CF to communicate with the
disconnectPort() start() Application.
stop()
• All applications are
required to have one
<<use>>
component that acts like an
assembly controller.
<<Implementation>>
AssemblyControl ler
• Identified in the
Application’s Software
Assembly Descriptor file in
the Domain Profile.
Page 143
Assembly Controller
Example
Connection of Assembly Controller and
other Application Components to each
other, and outside entities (e.g. UI,
Device(s), other application’s via ports.
More on this later.
Page 144
Providing Access to an
Application’s Ports
The Application’s ports provide the
capability of connecting the <<Interface>>
Application up to other components PortSupplier
such as an Application.
getPort()
The ports can also be used to provide
additional command/control and/or
status interfaces for an Application.
<<Interface>>
The ports for an Application are Resource
flexible allowing developers to
determine which of their
Application’s components’ ports
should be made visible via the
Application’s software profile <<Interface>>
definition. Appli cation
Page 145
Application Interface
<<Interface>>
Application
identifier : string
componentDevices : CF::DeviceAssignmentSequence
componentImplementations : CF::Application::ComponentElementSequence
componentNamingContexts : CF::Application::ComponentElementSequence
componentProcessIds : CF::Application::ComponentProcessIdSequence
name : string
profile : string
Page 146
Application Interface (cont.)
<<Interface>>
Application
identifier : string
componentDevices : CF::DeviceAssignmentSequence
componentImplementations : CF::Application::ComponentElementSequence
componentNamingContexts : CF::Application::ComponentElementSequence
componentProcessIds : CF::Application::ComponentProcessIdSequence
name : string
profile : string
<<Interface>>
Application
identifier : string
componentDevices : CF::DeviceAssignmentSequence
componentImplementations : CF::Application::ComponentElementSequence
componentNamingContexts : CF::Application::ComponentElementSequence
componentProcessIds : CF::Application::ComponentProcessIdSequence
name : string
profile : string
Page 148
Application Interface (cont.)
<<Interface>>
Application
identifier : string
componentDevices : CF::DeviceAssignmentSequence
componentImplementations : CF::Application::ComponentElementSequence
componentNamingContexts : CF::Application::ComponentElementSequence
componentProcessIds : CF::Application::ComponentProcessIdSequence
name : string
profile : string
<<Interface>>
Application
identifier : string
componentDevices : CF::DeviceAssignmentSequence
componentImplementations : CF::Application::ComponentElementSequence
componentNamingContexts : CF::Application::ComponentElementSequence
componentProcessIds : CF::Application::ComponentProcessIdSequence
name : string
profile : string
Page 150
Application Interface
Advantages
Page 151
CF File Service Interfaces
CF File Services Interfaces
Provides the ability to
read and write files
within a SCA-
compliant distributed Defines CORBA
file system. operations that
enable remote access
to a physical file
system.
Appearing as a single
FileSystem, provides
access to multiple
distributed file systems,
whose file storage may
span multiple physical
file systems (AKA a Used by CF clients for all file accesses.
federated file system).
Page 153
File Interface
• Provides access to files within the system
• Allows access across processor boundaries (distributed
FileSystems)
<<Interface>>
File
fileName : string
filePoint er : unsigned long
close() : void
read(data : out OctetSequence, length : in unsigned long) : void
setFilePoint er(filePoint er : in unsigned long) : void
sizeOf() : unsigned long
write(data : in OctetSequence) : void
Page 154
FileSystem Interface
Allows creation, deletion, copying of files
<<Interface>>
FileSystem
Page 155
FileManager Interface
getMounts() : MountSequence
mount(mountPoint : in string, file_System : in FileSystem) : void
unmount(mountPoint : in string) : void
Page 156
CF Domain Profile
Domain Profile
Page 158
Defined in XML and Based
on XML DTDs
Page 159
Based on OMG CORBA
Components Specification
Based upon the OMG's draft CORBA Components
specification (orbos/99-07-01).
Customized from the OMG CORBA Component
Specification.
– Addition, or customization of existing elements to better address
the needs of an SCA-compliant system.
– Elimination of unneeded elements in order to reduce the
associated XML parsing and aid in XML file content validation.
– Advantageous, as it builds upon work already completed by
OMG and does not duplicate effort.
Page 160
Domain Profile Files
Software Package Descriptor (SPD)
– Describes a component’s (CORBA and non-CORBA)
implementation(s).
Property File (PRF)
– Describes properties for a component.
Software Component Descriptor (SCD)
– Describes a CORBA component’s characteristics.
Software Assembly Descriptor (SAD)
– Describes an application’s deployment characteristics.
Device Configuration Descriptor (DCD)
– Describes configuration characteristics for a DeviceManager.
Page 161
Domain Profile Files (cont.)
Page 162
Domain Profile XML DTD
Relationships
0 or more DeviceManagers, Domain Profile
0 or more ApplicationFactories,
deploying persistent representing installed, to be
components to the CF instantiated, or already running
domain applications in the domain
0..n 1 DomainManager 0..n
1
<<DTDElement>> <<DTDElement>>
Device Configuration D escriptor DomainManager
Configuration Descriptor Software Assembly Descriptor
DCD SAD
DMD
1
1
1
SoftwareProfile
Software Profile
1..n
<<DTDElement>> A component’s 1..n 1
Profile Descriptor
(CORBA and non- <<DTDElement>> SoftwareProfile <<DTDElement>>
Software Package Descriptor 1 Profile Descriptor
CORBA)
implementations SPD
A component’s A CORBA component’s
properties characteristics (e.g. “use” &
0..1
0..n “provides” ports.
A hardware 0..n
Page 164
SPD Major Elements
<<DTDElement>>
A Software package softpkg Local file name of the SCD file
id : ID used to describe interface
may contain multiple name : CDATA
information for the component
type : (sca_compliant | sca_non_compliant) = sca_compliant
implementations (for version : CDATA being delivered to the system.
different hardware) using
the same properties and Any “uses” relationship this
Software Component <<DTDSequenceGroup>>
softpkg_grp component has with a device in
Descriptor (SCD). (from softpkg) the system. Will contain all
allocation properties for that
device, indicating capacities
needed from that Device by the
software component.
0..1 1..n 0..1 0..n
{4} {2} {5}
{7}
<<DTDElement>> <<DTDElement>> <<DTDElement>>
<<DTDElement>>
propertyfile author descriptor
usesdevice
type : CDATA name : CDATA
id : ID
type : CDATA
<<DT DEl em entEMPT Y>> <<DT DEl em entEMPT Y>> <<DT DEl em ent>>
os processor dependency
name : CDAT A name : CDAT A type : CDAT A
versi on : CDAT A
Page 166
Properties Descriptor
Page 167
Properties Descriptor
Property Types
<<DTDElement>>
properties
<<DTDSequenceGroup>>
properties_grp
(from properties)
0..1 1..n
{1} {2}
<<DTDElementPCDATA>> <<DTDChoiceGroup>>
description properties_grp_grp
(from properties_grp)
Page 168
Properties Descriptor
Property Kinds
<<DTDElement>>
Capacity type properties for simple
logical Devices id : ID
type : (boolean | char | double | float | short | long | objref | octet | string | ulong | ushort)
Configuration or query name : CDATA
mode : (readonly | readwrite | writeonly) = readwrite
properties for a
component
Test properties for a <<DTDSequenceGroup>>
ResourceFactory create
simple_grp
component (from simple) options parameters
User defined execute
parameters for main
0..1
{1} programs 0..1
{2}
<<DTDElementPCDATA>> <<DTDElementPCDATA>>
description value
0..1
0..1 {4}
0..1
{3} <<DTDElementEMPT Y>> {5}
<<DTDElementPCDATA>> range
<<DTDElement>>
units min : CDATA enumerations
0..n max : CDATA 0..1
{6} {7}
<<DTDElementEMPT Y>> <<DTDElementEMPT Y>>
kind action
kindtype : (allocation | configure | test | execparam | factoryparam) = configure type : (eq | ne | gt | lt | ge | le | external) = external
Page 169
Software Component
Descriptor (SCD)
Based on the CORBA Component Descriptor (CCD) file
definition.
– interfaces, uses port, provides port, supporting interfaces.
Provides the means for a component to describe its
interfaces in two ways.
– Supporting interfaces which are IDL interfaces inherited by the
component IDL interface.
– Provides interfaces or “facets” - Distinct CORBA interfaces that
a component implementation supports in addition to the
component’s interface.
Page 170
SCD Elements
The type of software component <<DTDElement>> The supported message ports
softwarecomponent for the component.
object, and hence, its
characteristics (e.g. resource,
device, resourcefactory, List of all interfaces that
<<DTDSequenceGroup>> the component, either
domainmanager, log, filesystem,
softwarecomponent_grp directly or through
filemanager, namingservice, (from softwarecomponent) inheritance, provides,
eventservice. uses, or supports.
{1} {6}
<<DTDElementPCDATA>> 0..1 <<DTDElement>>
corbaversion propertyfile
type : CDATA
Page 171
SCD Supported Message
Ports Element
<<DTDElement>>
componentfeatures
0..n
{1} {2}
<<DTDElementEMPTY>> <<DTDElement>> Interfaces
Refers to the supportsinterface ports
supported interface “provided” and/or
repid : CDATA
in the SCD supportsname : CDATA “used” by the
“interfaces” component.
element.
Page 172
SCD Ports Element
A “Facet” – An independent
interface from the <<DTDElement>>
component’s main interface, ports
A CF Port interface type that
providing a specialized is to be connected to a
connectivity to the “provides” or
component. 0..n “supportinterfaces”
<<DTDChoiceGroup>> interface.
ports_grp
Each “uses” and (from ports)
“provides” port Each “uses” and
references its “provides” port
corresponding <<DTDElement>> <<DTDElement>> references its
interface (i.e. the provides uses corresponding
corresponding repid : CDATA repid : CDATA interface (i.e. the
SCD interface providesname : CDATA usesname : CDATA corresponding
element) by its id. SCD interface
element) by its id.
Page 173
Device Package Descriptor
(DPD)
Page 174
DPD Elements
<<DTDElement>>
devicepkg
id : ID
name : CDATA
version : CDATA
<<DTDSequenceGroup>>
devicepkg_grp
(from devicepkg)
Page 175
DPD Elements (cont.)
<<DTDElement>>
Device identification hwdeviceregistration
information, including the id : ID
name : CDATA
device name, device class, version : CDATA
manufacture, and model
number.
<<DTDSequenceGroup>>
hwdeviceregistration_grp
(from hwdeviceregistration)
{5} {6}
0..n
<<DTDElement>> <<DTDElement>>
deviceclass childhwdevice
0..1
{2} {4}
{1} {3}
<<DTDElementPCDATA>> <<DTDElement>> <<DTDElementPCDATA>> <<DTDElementPCDATA>>
description propertyfile manufacturer modelnumber
type : CDATA
Page 176
DPD Elements (cont.)
<<DTDElement>> <<DTDElement>>
hwdeviceregistration devicepkgref
id : ID type : CDATA
name : CDATA
version : CDATA
Page 177
Software Assembly
Descriptor (SAD)
Page 178
SAD Contents
Page 179
SAD Contents (cont.)
Page 180
SAD Top-Level Elements
The local file names of the The main CF Resource for controlling
<<DTDElement>> the Assembly. The corresponding
SPDs of the 1..n software softwareassembly instantiated CF::Application delegates
components that make up the id : ID its Resource configure, query, start,
software assembly. name : CDATA stop, and runTest operations to this
Assembly Controller.
The deployment pattern of Provides the connection map between
the SAD components and the sw components in the assembly.
their components-to-hosts <<DTDSequenceGroup>>
relationships. softwareassembly_grp
Assembly’s visible
(from softwareassembly) Ports. Returned by
CF::Application
getPort ().
0..1 {6}
{1}
0..1
<<DTDElementPCDATA>> <<DTDElement>>
description externalports
0..1
{2} {3} {4} {5}
<<DTDElement>> <<DTDElement>> <<DTDElement>> <<DTDElement>>
componentfiles partitioning assemblycontroller connections
Page 181
SAD Component Deployment
Pattern
<<DTDElement>>
Comprised of a grouping of
componentplacement one or more
<<DTDElement>>
componentplacement
partitioning
<<DTDSequenceGroup>>
elements, describing a group
componentplacement_grp of component instances that
(from componentplacement)
0..n are to be deployed together
1..n
<<DTDChoiceGroup>> (i.e collocated) on a single
{1} partitioning_grp
<<DTDElementEMPTY>>
{2}
<<DTDElement>>
host.
(from partitioning)
componentfileref componentinstantiation
refid : CDATA id : ID
<<DTDElement>> <<DTDElement>>
… different ways of componentplacement hostcollocation
instantiating the same id : ID
component. What name : CDATA
different ways? Why
do this?
Defines one or more deployments of a
component. Meaning…
Page 182
SAD Component Deployment
Pattern (cont.)
Optional list of Optional means of finding
• Component-specific execute the component after it has
parameter properties used for <<DTDElement>>
been created:
component creation. componentinstantiation • Via a ResourceFactory, if
• ResourceFactory parameter id : ID it has been created by one.
properties used for creating the • Via the Naming Service, if
component via a ResourceFactory. the component is directed to
• Configuration properties used for <<DTDSequenceGroup>>
register itself with the
initial configuration of the componentinstantiation_grp Naming Service upon
component (from componentinstantiation) creation.
Page 183
Device Configuration
Descriptor (DCD)
Page 184
DCD Elements
DeviceManager SPD. Connections of
All components (logical Devices, <<DTDElement>> DeviceManager and/or DCD
services, others) to be started by the deviceconfiguration Logical Devices to domain
DeviceManager on the node id : ID services. Similar to SAD.
represented by DeviceManager. name : CDATA Processed by
Similar to SAD. DomainManager upon
Deployment pattern of DCD DeviceManager registration.
components and their
How the DeviceManager can
component-to-host <<DTDSequenceGroup>> obtain the DomainManager
relationships. Similar to deviceconfiguration_grp object reference.
SAD. (from deviceconfiguration)
{1} 0..1 {7}
<<DTDElementPCDATA>> <<DTDElement>>
description 0..1
filesystemnames
{2} {6}
<<DTDElement>> <<DTDElement>>
devicemanagersoftpkg 0..1 0..1 0..1 domainmanager
Page 186
DomainManager
Configuration Descriptor
• Not based on CORBA
Component Specification. <<DTDElement>>
domainmanagerconfiguration
• Describes the
id : ID
DomainManager’s SPD and name : CDATA
services to be connected to
DomainManager for
DomainManagement
functions (DomainManager, <<DTDSequenceGroup>>
domainmanagerconfiguration_grp
ApplicationFactory, (from domainmanagerconfigurati on)
Application) use.
• No other concept of
domain management. 0..1
{1} {2} {3}
<<DTDElementPCDATA>> <<DTDElement>> <<DTDElement>>
description devicemanagersoftpkg services
Page 187
SCA Concept of Components
& Domain Profile File Types
Core Framework objects
responsible for installing,
DomainManager starting up and tearing down An application is
applications an "assembly" of 1..n
software components Part of XML-based
1 "Domain Profile"
1
0..n
0..n
ApplicationFactory <<create>> Application described by SW Assembly
1 1 Descriptor
+Proxy 1
1..n
Properties described by Properties SW Component described by SW Package
Descriptor 1 1 1..n 1 1 1 Descriptor
Types
Types
Page 190
Node (DeviceManager)
Startup
DeviceManager Might Expect: 4: Register Default DCD Deploy-on Device
y DCD File System IOR 8: Start DCD Components
y DCD file name (Create and deploy DCD-specified components
y Default DCD Deploy-on Device IOR (devices and services) to the CF domain).
y DomainManager IOR
: FileManager
: Client
1. installApplication()
An application installation request is sent
to the DomainManager.
Page 194
Listing Installed Applications
For a user to start an application, : DomainManager
they must be aware of the types of
applications available in the system
and then be able to command the : Client
creation of a new instance of a
selected application type.
1: applicationFactories()
A request for getting a list of installed
applications is sent to DomainManager.
Page 195
Application Creation
1..* 1..* 0..* 0..* 0..* 0..*
appResFac :
: ResourceFactory : Port ODM Event
: Client : ApplicationFactory : LoadableDevice : ExecutableDevice : Resource : Log Channel
1. create()
An application creation request is
sent to ApplicationFactory. After
evaluating the application's The ApplicationFactory
SW profile, the ApplicationFactory
retrieves object references of
Allocates any required capacities 1.1. allocateCapacity()
on all applicable devices.
all Resource Factories from
1.2. allocateCapacity()
the Naming Service.
1.3. load()
Loads all required SW on all
1.4. load()
applicable devices. The ApplicationFactory
retrieves object references of
Creates all Resource Factories
and Resources on all applicable
1.5. execute() 1.5.1. <<create>> all Resources it directly
devices.
1.6. execute() creates from the Naming
1.6.1. <<create>>
Service. Object references of
1.7. createResource()
ResourceFactory-created
Commands all Resource Factories
to create their corresponding
1.7.1. <<create>> Resources are returned by the
resources.
ResourceFactory
1.8. initialize()
Initializes all app’s resources.
createResource operation.
Establishes all port connections 1.9. getPort()
for all app’s resources as 1.10. connectPort()
defined by the app’s SW profile.
Application
Device
3. spawn(EntryPointTask,
1. load (B.out) executeParams)
7. <<create>> 2. execute(EntryPointTask,
executeParams)
6. initialize()/getPort()/ Component
Return Created Application B
Application Factory connectPort()/configure()
5. resolve() 4. bind()
create(initConfiguration, Naming
deviceAssignments) Service
Domain
Profile
Page 197
Use of Configuration and Execute
Parameters during Application Component
creation
Page 198
Connecting Application
Components
Uses the service Provides a service
create(initConfiguration,
deviceAssignments)
Domain
Profile
Page 199
Listing Running Applications
: DomainManager
: Client
1: applications()
A request for list of running applications is
sent to the DomainManager.
Page 200
Invoking Operations on a
Single Application Component
: Application Assembly Controller : Component B
Resource
Page 201
Application Teardown
: Client : Application
12: writeRecords()
: Log
11: unbind()
: Port 2: disconnectPort()
Naming
3: releaseResouce() Service
4: shutdown() 5: releaseObject() 6: terminate() 7: unload()
8: unload() 10: deallocateCapacity()
9: deallocateCapacity()
: ResourceFactory
: Resource : LoadableDevice
: ExecutableDevice
Page 202
SCA IDL Modules
SCA IDL Modules
Replaced with OMG Light Weight
Log Service in SCA V2.2.1
OMG Naming
OMG Event
Service
Service
Page 204
CF IDL Module
CF
PortSupplier FileManager
FileSystem
Port
File
LifeCycle
Application
PropertySet
Application
Factory
TestableObject Domain
Resource Resource Device Loadable Executable Aggregate Device Manager
Device Manager
Factory Device Device
Page 205
Log Service The Log interface, types for a log
producer to generate standard SCA log
ice
e rv
gS
LogService t W
h .2.1 e
eig h t L o
< < C O R B A E num > >
g
L o g L e ve lT y p e
L i
<<CORBATypedef>>
2 l
F A IL U R E _ A L A R M
u
D E G R A D E D _A LR A M
G A V
LogLevelSequenceType
o d
E
F
X C E P T IO N _ E R R O R
LO W _C O N TR O L_E R R O R
O M S C gM
R
U
A N G E _E R R O R
e
S A G E _E R R O R
ith o
n L ruct> >tu
i<<CORBASt s f
A
a
S
cD M IN IS T R A T IV E _ E V E N T
T A T IS T IC _ R E P O R T
r
P R O G R A M M E R _D E B U G 1
d w L w Sta nte ce P
P
R O G R A M M E R _D E B U G 2
R O G R A M M E R _D E B U G 3
a ce os g
ProducerLogRecordType
o r I r
P
P
f a ce
R O G R A M M E R _D E B U G 4
R O G R A M M E R _D E B U G 5
p l C
producerId L
: string e
m In te te P
fa
R O G R A M M E R _D E B U G 6
r
Re
P R O G R A M M E R _D E B U G 7
u
P R O G R A M M E R _D E B U G 8
producerName : string
n s e r I
P
n
R O G R A M M E R _D E B U G 9
c
P R O G R A M M E R _D E B U G 10
logData : string
C o u t or P R O G R A M M E R _D E B U G 11
d
P R O G R A M M E R _D E B U G 12
o g ro tra
level : LogLevelType
P R O G R A M M E R _D E B U G 13
L gP
P R O G R A M M E R _D E B U G 14
n is P
P
R O G R A M M E R _D E B U G 15
R O G R A M M E R _D E B U G 16
Lo dmi
g A
Lo Log Page 206
StandardEvent Types necessary for an event
StandardEvent
<<CORBAEnum>>
St ateChangeCat egoryTy pe <<CORBAStruct>>
ADMINISTRATIVE_STATE_EVENT StateChangeEventType
OPERATIONAL_STATE_EVENT producerId : st ring
USAGE_STATE_EVENT sourceId : string
<<CORBAEnum>>
<<CORBASt ruct >> SourceCat egoryType
<<CORBAEnum>> DomainManagementObjectAddedEventType DEVICE_MANAGER
StateChangeType producerId : string DEVICE
LOCKED sourceId : string APPLICATION_FACTORY
UNLOCKED sourceName : string APPLICATION
SHUTTING_DOWN sourceIOR : Object SERVICE
ENABLED
DISABLED
<<CORBAStruct>>
IDLE
DomainManagement Object RemovedEventType
ACTIVE
BUSY producerId : string
sourceId : string
sourceName : string
Page 207
PortTypes
IDL Module Sequences of base CORBA types
for optional Port operations
PortTypes
<<CORBATypedef>> <<CORBATypedef>> <<CORBATypedef>>
CharSequence WcharS equence WstringSequence
<<CORBATypedef>>
BooleanSequence
Page 208
References
References
http://jtrs.army.mil/
– Joint Tactical Radio System Program Background
– Software Communications Architecture Overview, Goals, and
Standardization
– Software Communication Architecture Specification, V2.2
– Software Communications Architecture Support and Rationale
Document, V2.2
– Software Communications Architecture Developers Guide, V1.1
– Software Communications Architecture Application Program Interface
Supplement, V1.1
– Software Communications Architecture Security Supplement, V1.1
– Software Communications Architecture Training Course
http://www.omg.org
– PIM and PSM for Software Radio Joint Revised Submission
– Experience Report from Developing and Fielding the First SCA 2.0 JTRS
Radio, BAE Systems, OMG Real-Time & Embedded Workshop July 2003
http://www.sdrforum.org
– Software Defined Radio Definition
Page 210