Download presentation
Presentation is loading. Please wait.
Published bySheena Brooks Modified over 9 years ago
1
JAVA Implementation of CCM Configuration Shufeng Li MSE final Project Presentation I
2
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
3
Boeing Bold Stroke Radar WeaponsNav Sensors Weapon Management Data Links Many Computers Multiple Buses Constrained Tactical Links O(10 6 ) Lines of Code Hard & Soft Real-Time Periodic & Aperiodic Multiple Safety Criticalities Information Security Focus Domain Mission Computer Vehicle Mgmt COTS
4
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 method 4. Airframe updates its position data and publishes DATA_AVAILABLE event 5. NavDisplay component fetches AirFrame data by calling AirFrame GetData method 6. NavDisplay updates the physical display
5
Larger Configuration …moving up to 1000+ components
6
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
7
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
8
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
9
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.
10
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
11
IDL 3.0 Example event 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 3 CCM IDL
12
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 3 CCM IDL event source
13
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 3 CCM IDL data source (facet) data source (facet)
14
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 points
15
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 declaration
16
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
17
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
18
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
19
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
20
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
21
Cadena Architecture
22
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.
23
CCM big picture IDL/CIDL Compiler IDL/CIDL File Stubs, Skeletons Packaging Tool Implementation Programming Language Tools User's Code Component Descriptor Default Properties Assembly Tool Component Assembly Package Home PropertiesComponent Properties Deployment Tool Assembly Descriptor CORBA Component Package softpkg Descriptor User written file Compiler Generated files CORBA Component Package CORBA Component Package designers implementer packagerassembler I will focus on
24
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.
25
Component Assembly Properties DeploymentT ool Assembly Archive.aar (ZIP) Assembly Tool Component Package Component Package Component Package Port Connections Instance Creation...
26
Deployment The deployment tool might interact with the user to assign homes and component instances to hosts and processes
27
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.
28
Requirement (use case) user Generate assembly code From AST: user Generate assembly code From XML configuration file:
29
Examples Input file: basicsp.scenario Input file Output file BasicspScenario.java Output file
30
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) ModalSP MediumSP (50 component instances, 10 component types) MediumSP
31
Tools OpenCCM -- the Open CORBA Component Model Platform: the first public available Open Source implementation of the Object Management Group's CORBA Component Model. OpenCCMpublic available Open SourceObject Management Group CORBA Component Model OpenORB – provides a Java implementation of the OMG CORBA 2.4.2 specification OpenORB OMG IBM Eclipse - designed for building integrated development environment IBM Eclipse Cadena Junit - a simple framework to write repeatable tests Junit
32
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)
33
Cost Estimation - Unadjusted Functional points SimpleAverageComplex Subtotal CountWeightsCountweightsCountweights Inputs2304063 Outputs34050712 Inquiries0405070 Files1701031552 Interfaces051711017 Total84
34
Cost Estimation - Adjusted Functional points Complexity Weighting FactorsRate (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
35
Cost Estimation - Adjusted Functional points (cont’) Adjusted FP = FP unadjusted *(.65+.01*sum of ratings) = 84 * (.65+.01*37) = 85.68
36
Project Plan
37
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 Cadena: An Integrated Development, Analysis, and Verification Environment for Component-based Systems 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
38
Acknowledgement Committee: Dr. Hatcliff Dr. Hankley Dr. Dwyer
39
Comments? Thank you!
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.