Upload
sheena-brooks
View
219
Download
1
Tags:
Embed Size (px)
Citation preview
JAVA Implementation of CCM Configuration
Shufeng Li
MSE final Project Presentation I
Outline Overview
Boeing Bold Stroke, Cadena, CORBA, CCM Requirements
Extending Cadena to produce Java implementations of component assembly
Tools IBM Eclipse, Cadena, OpenCCM
Cost estimation Project plan References
Boeing Bold Stroke
Radar
Weapons
Nav Sensors
WeaponManagement
Data Links
Many Computers
Many Computers
Multiple BusesMultiple Buses
Constrained Tactical LinksConstrained
Tactical Links
O(106) Lines of Code
O(106) Lines of CodeHard & Soft
Real-TimeHard & Soft Real-Time
Periodic & Aperiodic
Periodic & Aperiodic
Multiple Safety Criticalities
Multiple Safety Criticalities
Information Security
Information Security
Focus Domain
MissionComputer
VehicleMgmt
COTSCOTS
Control-push Data-pull Architecture 1. Logical GPS
component receives a periodic event indicating that it should read the physical GPS device.2. Logical GPS publishes DATA_AVAILABLE event
3. Airframe component fetches GPS data by calling GPS GetData method4. Airframe updates its position data and publishes DATA_AVAILABLE event5. NavDisplay component fetches AirFrame data by calling AirFrame GetData method6. NavDisplay updates the physical display
Larger Configuration
…moving up to 1000+ components
Current Challenges Systems with 1000+ components Development team of 100+ developers Process moves directly from informal textual
requirements documents to C++ coding (!) UML artifacts (e.g., collaboration diagrams) are usually
produced only as documentation not automatically analyzed not leveraged in any way to e.g., generate configuration
information usually show partial descriptions and are not maintained
Systems are built following the basic structure of the CORBA Component Model (CCM) but are not CCM compliant nor do they take advantage of CCM tools
Cadena An integrated environment for
development analysis verification
…of CCM systems Designed to address some of the challenges of
current Bold Stroke development Cadena
is an Eclipse plug-in IBM’s Eclipse is a robust, full-featured, Java-oriented IDE
encapsulates OpenCCM OpenCCM is an open-source Java-based CCM
implementation under development by KSU SAnToS and Systems Groups
Overview – COBRA architecture
The Object Request Broker (ORB), the distributed service, implements the request to the server object. It locates the server object on the network, delivers the request to the object, and returns those results back to the client object.
Client Object Server Object
ORB
CORBA Component Model
CCM - CORBA Component Model, (COBRA standard 3.0) A distributed component-oriented
model OpenCCM – the first public available
implementation of the CCM Automatically generate “stubs” and
“skeletons” classes associated with objects in IDL file.
Overview – IDL IDL – Interface definition languages
Defined by OMG (Object Management Group) Describes the interfaces of software objects
OMG IDL3.x Component-oriented collaboration Still has data types, value types, and
interfaces from IDL2.x, which is Object-oriented collaboration
Plus component types, homes, and event types
IDL 3.0 Example
event sinkevent sink
eventtype TimeOut {}eventtype DataAvailable {}
interface ReadData { readonly attribute any data;}
component BMDevice { consumes TimeOut timeout publishes DataAvailable dataCurrent provides ReadData dataOut}
GPS : BM__DeviceComponent
20Hz High Priority
1. Push() 4. GetData()
CORBA 3CCM IDL
IDL 3.0 Example
eventtype TimeOut {}eventtype DataAvailable {}
interface ReadData { readonly attribute any data;}
component BMDevice { consumes TimeOut timeout publishes DataAvailable dataCurrent provides ReadData dataOut}
GPS : BM__DeviceComponent
20Hz High Priority
1. Push() 4. GetData()
CORBA 3CCM IDL
event sourceevent source
IDL 3.0 Example
eventtype TimeOut {}eventtype DataAvailable {}
interface ReadData { readonly attribute any data;}
component BMDevice { consumes TimeOut timeout publishes DataAvailable dataCurrent provides ReadData dataOut}
: BM__DeviceComponent
TimeOut Priority
1. Push() 4. GetData()
CORBA 3CCM IDL
data source(facet)
data source(facet)
Cadena Component Assembly
system ModalSP {
locations l1,l2,l3; rates 1,5,20,60;
instance AirFrame of BMLazyActive on l2 { connect dataAvailable to GPS.dataCurrent atRate 20 connect dataIn to GPS.dataOut
instance GPS of BMDevice on l2 { connect timeout to EventChannel.timeout20 } …
GPS : BM__DeviceComponent
20Hz High Priority
1. Push() 4. GetData()
airframe : BM__LazyActiveComponent
abstract distribution pointsabstract distribution points
Cadena Component Assembly
system ModalSP {
locations l1,l2,l3; rates 1,5,20,60;
instance AirFrame of BMLazyActive on l2 { connect dataAvailable to GPS.dataCurrent atRate 20 connect dataIn to GPS.dataOut
instance GPS of BMDevice on l2 { connect timeout to EventChannel.timeout20 } …
GPS : BM__DeviceComponent
20Hz High Priority
1. Push() 4. GetData()
airframe : BM__LazyActiveComponent
rate group declarationrate group declaration
Cadena Component Assembly
system ModalSP {
locations l1,l2,l3; rates 1,5,20,60;
instance AirFrame of BMLazyActive on l2 { connect dataAvailable to GPS.dataCurrent atRate 20 connect dataIn to GPS.dataOut
instance GPS of BMDevice on l2 { connect timeout to EventChannel.timeout20 } …
GPS : BM__DeviceComponent
20Hz High Priority
1. Push() 4. GetData()
airframe : BM__LazyActiveComponent
create instance of LazyActive component
called AirFrame
create instance of LazyActive component
called AirFrame
Cadena Component Assembly
system ModalSP {
locations l1,l2,l3; rates 1,5,20,60;
instance AirFrame of BMLazyActive on l2 { connect dataAvailable to GPS.dataCurrent atRate 20 connect dataIn to GPS.dataOut
instance GPS of BMDevice on l2 { connect timeout to EventChannel.timeout20 } …
GPS : BM__DeviceComponent
20Hz High Priority
1. Push() 4. GetData()
airframe : BM__LazyActiveComponent
connect event INPUT port of current component
to event OUTPUT port of GPS component
connect event INPUT port of current component
to event OUTPUT port of GPS component
Cadena Component Assembly
system ModalSP {
locations l1,l2,l3; rates 1,5,20,60;
instance AirFrame of BMLazyActive on l2 { connect dataAvailable to GPS.dataCurrent atRate 20 connect dataIn to GPS.dataOut
instance GPS of BMDevice on l2 { connect timeout to EventChannel.timeout20 } …
GPS : BM__DeviceComponent
20Hz High Priority
1. Push() 4. GetData()
airframe : BM__LazyActiveComponent
connect data INPUT port of current component
to data OUTPUT port of GPS component
connect data INPUT port of current component
to data OUTPUT port of GPS component
Cadena Component Assembly
system ModalSP {
locations l1,l2,l3; rates 1,5,20,60;
instance AirFrame of BMLazyActive on l2 { connect dataAvailable to GPS.dataCurrent atRate 20 connect dataIn to GPS.dataOut
instance GPS of BMDevice on l2 { connect timeout to EventChannel.timeout20 } …
GPS : BM__DeviceComponent
20Hz High Priority
1. Push() 4. GetData()
airframe : BM__LazyActiveComponent
create instance of DeviceComponent called
GPS
create instance of DeviceComponent called
GPS
Cadena Component Assembly
system ModalSP {
locations l1,l2,l3; rates 1,5,20,60;
instance AirFrame of BMLazyActive on l2 { connect dataAvailable to GPS.dataCurrent atRate 20 connect dataIn to GPS.dataOut
instance GPS of BMDevice on l2 { connect timeout to EventChannel.timeout20 } …
GPS : BM__DeviceComponent
20Hz High Priority
1. Push() 4. GetData()
airframe : BM__LazyActiveComponent
connect event INPUT port of current component
to event OUTPUT port of EventChannel
connect event INPUT port of current component
to event OUTPUT port of EventChannel
Cadena Architecture
Overview – goals, constraints, direction Goals: Automate the CCM assembly and
deployment processes Constraints:
reliability requirements should be satisfied safety and security should be considered
Directions: demonstrate the validity by running multiple example scenarios, such as BasicSP and ModalSP, from Boeing Bold Stroke OEP.
CCM big picture
IDL/CIDL
Compiler
IDL/CIDL File
Stubs, Skeletons
PackagingTool
Implementation
Programming
Language
Tools
User's Code
ComponentDescriptor
Default Properties
Assembly
ToolComponentAssemblyPackage
Home Properties Component Properties
Deployment
Tool
AssemblyDescriptor
CORBAComponent
Package
softpkgDescriptor
User written file
Compiler
Generated files
CORBAComponent
Package
CORBAComponent
Package
designers implementer
packager assembler
I will focus on
Component Assembly Package
Described by a assembly descriptor in XML format
Component assembly package focuses on the component files, what instances of component types are used in the system, and how these instances connect together.
Component Assembly
PropertiesDeploymen
tTool
AssemblyArchive
.aar (ZIP)
Assembly Tool
ComponentPackage
ComponentPackage
ComponentPackage
PortConnections
InstanceCreation
...
Deployment
The deployment tool might interact with the user to assign homes and component instances to hosts and processes
Requirements Take a scenario file in AST/XML
format Extract component configuration
information Generate JAVA component assembly
code that includes component instance creation, port connection, and home assignment functions.
Could be used by user directly.
Requirement (use case)
user
Generate assembly
code
From AST:
user
Generate assembly
code
From XML configuration file:
Examples
Input file: basicsp.scenario Output file BasicspScenario.java
Testing/Validation Plan – Unit test and Integrated test
Unit testing: use JUnit as the main testing tool Test each method call that initializes ORB, servers, installs
homes, and creates component instances, get variable properties
Test on different connections(data, basic event, and correlated event)
Error tolerance – detects parameter input errors, instance name not defined or duplicated errors, file can’t find errors…
Integration testing Run the program with IDL stubs, skeletons, and component
implementation files. Test scenarios: (taken from Bold Stroke Open Experimental
Platform) BasicSP (4 component instances, 4 component types) ModalSP (10 component instances, 10 component types) MediumSP (50 component instances, 10 component types)
Tools OpenCCM -- the Open CORBA Component Model
Platform: the first public available Open Source implementation of the Object Management Group's CORBA Component Model.
OpenORB – provides a Java implementation of the OMG CORBA 2.4.2 specification
IBM Eclipse - designed for building integrated development environment
Cadena Junit - a simple framework to write repeatable
tests
Cost Estimation Based on line of code:
AST visitor About 500 lines (does not support event correlation yet) Event correlation – estimated about 100 lines
Read information from XML configuration file 4000 lines (based on other people’s experience from our
group) Total about 4.5 K Effort = 2.4 * (4.5)1.05 = 11.6 Development time = 2.5 * (11.6)0.38 = 6.35 (months)
Cost Estimation - Unadjusted Functional points
Simple Average ComplexSubtotal
Count Weights
Count weights
Count weights
Inputs 2 3 0 4 0 6 3
Outputs 3 4 0 5 0 7 12
Inquiries 0 4 0 5 0 7 0
Files 1 7 0 10 3 15 52
Interfaces
0 5 1 7 1 10 17
Total 84
Cost Estimation - Adjusted Functional points
Complexity Weighting Factors Rate (1-5)
Does the system require reliable backup and recovery 1
Are data communications required? 2
Are there distributed processing functions 3
Is performance critical 1
Will the system run in an existing, heavily utilized operational environment 3
Does the system require on-line data entry? 1
Does the on-line data entry require the input transaction to be built over multiple screens or operations
0
Are the master files updated on-line 0
Are the inputs, outputs, files, or inquiries complex 5
Is the internal processing complex 5
Is the code designed to be reusable 3
Are conversion and installation included in the design 3
Is the system designed for multiple installations in different organizations 5
Is the application designed to facilitate change and ease of use by the user 5
Sum 37
Cost Estimation - Adjusted Functional points (cont’)
Adjusted FP = FPunadjusted*(.65+.01*sum of ratings)= 84 * (.65+.01*37)= 85.68
Project Plan
References CORBA & CCM OMG CORBA 3.0 new Components Chapters CORBA Component Model: Discussion and Use with OpenCCM
(Raphaël Marvie, Philippe Merle ) OpenORB Cadena: An Integrated Development, Analysis, and Verification
Environment for Component-based Systems, John Hatcliff, William Deng, Matthew Dwyer, Georg Jung, Venkatesh Prasad (submitted for publication -- SAnToS Laboratory Technical Report 2002-02): www.cis.ksu.edu/cadean
CORBA Component Model Tutorial Gerald Brose, Andreas Vogel, Keith Duddy, Java Programming with
CORBA, Third Edition, ISBN: 0-471-37681-7, 2001 Pressman, Software Engineering, 5th Edition, ISBN: 0-07-365578-3 Royce, Software Project Management: A Unified Framework, ISBN:
0201309580
Acknowledgement
Committee: Dr. Hatcliff Dr. Hankley Dr. Dwyer
Comments?
Thank you!