JAVA Implementation of CCM Configuration Shufeng Li MSE final Project Presentation I

Preview:

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!

Recommended