Cadena: An Integrated Environment for Developing High-Assurance Component-based Systems SAnToS Laboratory, Kansas State University,

Slides:



Advertisements
Similar presentations
Architecture Representation
Advertisements

Hydra (A General Framework for Formalizing UML with Formal Languages for Embedded Systems*) *from the Ph.D. thesis of William E. McUmber Software Engineering.
Software Model Checking for Embedded Systems PIs: Matthew Dwyer 1, John Hatcliff 1, and George Avrunin 2 Post-docs: Steven Seigel 2, Radu Iosif 1 Students:
18 October 2001 OOPSLA 2001 Workshop on Patterns for OO Distributed RT & Embedded Systems Wendy Roll - 1 Pattern Usage in an Avionics Product Line Wendy.
Software Engineering COMP 201
L4-1-S1 UML Overview © M.E. Fayad SJSU -- CmpE Software Architectures Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I.
CS 432 Object-Oriented Analysis and Design
CS 290C: Formal Models for Web Software Lecture 6: Model Driven Development for Web Software with WebML Instructor: Tevfik Bultan.
© Copyright Eliyahu Brutman Programming Techniques Course.
End-to-End Design of Embedded Real-Time Systems Kang G. Shin Real-Time Computing Laboratory EECS Department The University of Michigan Ann Arbor, MI
SAnToS Laboratory, Kansas State University, USA Cadena: Analyzing Component- based Embedded System Designs Matthew Dwyer.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Architectural Design.
JAVA Implementation of CCM Configuration Shufeng Li MSE final Project Presentation I.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
CORBA Component Model (CCM)-based Design, Analysis, and Infrastructure for DRE Systems Matt DwyerJohn HatcliffMasaaki.
An Introduction to Software Architecture
Introduction to MDA (Model Driven Architecture) CYT.
Assessing the Suitability of UML for Modeling Software Architectures Nenad Medvidovic Computer Science Department University of Southern California Los.
RTAS MDES Workshop May Model-Based Integration of Reusable Component-Based Avionics Systems David Sharp Technical Fellow Phantom Works, Open System.
Prepared by: Sanaz Helmi Hoda Akbari Zahra Ahmadi Sharif University of Tech. Summer 2006 An Introduction to.
Cadena: An Integrated Environment for Developing High-Assurance Component-based Systems Matt Dwyer John Hatcliff Principal.
Model-Driven Analysis Frameworks for Embedded Systems George Edwards USC Center for Systems and Software Engineering
1 UML Basic Training. UML Basic training2 Agenda  Definitions: requirements, design  Basics of Unified Modeling Language 1.4  SysML.
Component Assembly Description Compiler Sue (Shufeng) Li MSE Project Presentation 3.
Bandera Temporal Specification Patterns Matt Dwyer John Hatcliff Principal Investigators Support US National Science Foundation.
Reconciling the Boeing PCES OEP with CCM Component Structure John Hatcliff (slide maker and talk giver)
Model Checking Software Artifacts SAnToS Laboratory, Kansas State University, USA Matt Dwyer John Hatcliff Gurdip Singh Principal.
1 Introduction to Software Engineering Lecture 1.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
Unified Modeling Language* Keng Siau University of Nebraska-Lincoln *Adapted from “Software Architecture and the UML” by Grady Booch.
Modeling Component-based Software Systems with UML 2.0 George T. Edwards Jaiganesh Balasubramanian Arvind S. Krishna Vanderbilt University Nashville, TN.
Performance evaluation of component-based software systems Seminar of Component Engineering course Rofideh hadighi 7 Jan 2010.
Issues Autonomic operation (fault tolerance) Minimize interference to applications Hardware support for new operating systems Resource management (global.
L6-S1 UML Overview 2003 SJSU -- CmpE Advanced Object-Oriented Analysis & Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College.
Analyzing Component-based Designs: The Cadena Environment SAnToS Laboratory, Kansas State University, USA Matt Dwyer John.
1 Qualitative Reasoning of Distributed Object Design Nima Kaveh & Wolfgang Emmerich Software Systems Engineering Dept. Computer Science University College.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
CIM LAB MEETING Presentation on UML Rakesh Mopidevi Kwangyeol Ryu.
ProActive components and legacy code Matthieu MOREL.
Abstract A Structured Approach for Modular Design: A Plug and Play Middleware for Sensory Modules, Actuation Platforms, Task Descriptions and Implementations.
System Components ● There are three main protected modules of the System  The Hardware Abstraction Layer ● A virtual machine to configure all devices.
12 Chapter 12: Advanced Topics in Object-Oriented Design Systems Analysis and Design in a Changing World, 3 rd Edition.
OOPSLA Oct Towards a Pattern Language for NEST Middleware Venkita Subramonian & Chris Gill, Washington University, St.Louis David Sharp, The Boeing.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 BBN Technologies Quality Objects (QuO): Adaptive Management and Control Middleware for End-to-End QoS Craig Rodrigues, Joseph P. Loyall, Richard E. Schantz.
1 Technical & Business Writing (ENG-715) Muhammad Bilal Bashir UIIT, Rawalpindi.
Week 04 Object Oriented Analysis and Designing. What is a model? A model is quicker and easier to build A model can be used in simulations, to learn more.
AMQP, Message Broker Babu Ram Dawadi. overview Why MOM architecture? Messaging broker like RabbitMQ in brief RabbitMQ AMQP – What is it ?
Component Assembly Description Compiler Sue (Shufeng) Li MSE final Project Presentation II.
XASTRO-2 Presentation CCSDS SAWG th November 2004.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
UML - Development Process 1 Software Development Process Using UML.
OOD OO Design. OOD-2 OO Development Requirements Use case analysis OO Analysis –Models from the domain and application OO Design –Mapping of model.
1 Model-Checking of Component-Based Real-Time Embedded Software Based on CORBA Event Service Yuanfang Zhang for Seminar CSE7216 Presentation based on Zonghua.
Software Systems Division (TEC-SW) ASSERT process & toolchain Maxime Perrotin, ESA.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Supporting Model-driven Development of Component-based Embedded Systems with Cadena SAnToS Laboratory, Kansas State.
Introduction to Software Engineering 1. Software Engineering Failures – Complexity – Change 2. What is Software Engineering? – Using engineering approaches.
Data Sharing Service Kiran Devaram Samatha Gangapuram Harish Maringanti Prashant Shanti Kumar Pradeep Tallogu.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
CoSMIC: An MDA Tool Suite for Distributed Real-time and Embedded Systems Aniruddha Gokhale, Tao Lu, Emre Turkay, Balachandran Natarajan, Jeff Parsons,
1 SYS366 Week 2 - Lecture Visual Modeling and Process.
Component Development and System Configuration in Cadena with OpenCCM John Hatcliff Jesse Greenwald KSU CCM Workshop May.
Unified Modeling Language
Model-Driven Analysis Frameworks for Embedded Systems
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
A GUI Based Aid for Generation of Code-Frameworks of TMOs
Design Yaodong Bi.
From Use Cases to Implementation
Presentation transcript:

Cadena: An Integrated Environment for Developing High-Assurance Component-based Systems SAnToS Laboratory, Kansas State University, USA Matt Dwyer John Hatcliff Gurdip Singh Principal Investigators Support US National Science Foundation (NSF) US National Aeronautics and Space Agency (NASA) US Department of Defense Advanced Research Projects Agency (DARPA) US Army Research Office (ARO) Rockwell-Collins ATC Honeywell Technology Center and NASA Langley Sun Microsystems Intel Postdocs and Students Radu Iosif Hongjun Zheng Corina Pasareanu Georg Jung Robby Venkatesh Ranganath Oksana Tkachuk William Deng

Distributed Components Network

Distributed Components Middleware (e.g. CORBA) JavaC++ C JavaC Interface Definition Language (IDL) specifications for remote methods Automatically generated proxies

Distributed Components Middleware (e.g. CORBA) Event ServiceTransaction Service Naming ServiceSynchronization Service JavaC++ C JavaC Component Interface Definition Language (CCM IDL) substantial portion of code auto-generated

Checking CCM Systems Light-weight behavioral specifications Leverage abstractions that programmers already write Component IDL Scale static analysis techniques to handle remote connections Use emerging model-checking technology dedicated to OO structures and RT scheduling algorithms Middleware (e.g. CORBA) Event Service Transaction Service Naming ServiceSynchronization Service JavaC++ C JavaC Modern Software SystemsOur Themes These systems are huge! What are appropriate abstractions/specifications and how can we get programmers to write them?

Mission-control software for Boeing military aircraft, e.g., F-18 E/F, Harrier, UCAV Boeing’s Bold Stroke Avionics Middleware …built on top of ACE/TAO RT CORBA Our focus: developing a rigorous design process with formal design artifacts that can be automatically checked for common design flaws Analysis & Verification of Fighter Aircraft Mission Control Systems

Boeing Bold Stroke Platform 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

Control-Push Data-Pull Component A computes some data that is to be read by one or more components B i Typical situation Run-time Actions A B1B1 BkBk A publishes a dataAvailable event B i call the getData() method of A to fetch the data dataAvailable getData()

Control-Push Data-Pull Structure 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 Input Output

Larger Configuration …moving up to components

System Design Aspects Declare rates/priorities for intermediate event handlers Implement mode semantics for changing subsystem behavior Off AirFrame Intermediate components correlate incoming data and produce higher-level info Inputs different rates Sensor1 Mode Switch 60Hz 20Hz 5Hz 1Hz Map components to onboard network nodes Outputs different rates Display 1Hz 20Hz Control

Development Process Component Development Common Components Platform-specific Components Component Integration Connect components, assign priorities, locking schemes, distribute Analysis & Functional Testing Debuggers, call-graph analyzers, scheduling tools Real Board Testing Test real-time aspects, frame-overruns, etc developers

Research Context Provided with an Open Experimental Platform (OEP) from Boeing a sanitized version of the real system 100,000+ lines of C++ code (including RT CORBA middleware) Provided with 150+ page document that outline development process and describe challenge problems Must provide tool-based solutions that can be applied by Boeing research team to realistic systems Must propose solutions that fit within current development process, code base, etc. Must propose metrics for tool performance and ease of use evaluation by Boeing research team Must make significant progress in one year with regular evaluation milestones

Next… Short-comings in Bold Stroke development that we will attempt to address One could imagine doing a number of things. We first focused on items in Boeing’s “wish list”.

Lack of Modeling Informal natural language requirements C++ component library XML component connection information Process moves directly from informal textual requirements documents to C++ coding (!) No use of component-level (CCM) IDL for code generation Still resistance by “legacy developers” to higher-level descriptions (moving away from machine code has been difficult for some) development bypasses modeling

Unleveraged Artifacts Current design/model artifacts are used as informal documentation not connected to analysis/visualization tools not connected to “glue code” (deployment code) generation

Lack of Model Analysis 1. Forward & backward data and event dependencies 2. Dependency intersections 4. All components from a particular rate group 5. Cycle checks …15-20 others related to dependencies Boeing OEP Challenge Problems 3. Components with high data coupling …also mode-aware dependences

Lack of Model Analysis Boeing OEP Challenge Problems If component 1 is in mode A when component 2 produces event E, then component 3 will consume event F (Section ) A temporal property well-suited for model-checking!

No Unifying Mechanism C++ Component Code Bold Stroke XML Configurator Info ? High-level Specification Language Design Artifacts Analysis and QoS Aspect Synthesis Integrated Development Environment

Cadena Java/C++ Component Code Bold Stroke XML Configurator Info UML Design Artifacts Analysis and QoS Aspect Synthesis Integrated Development Environment CCM Interface Definition Language RT Aspect Specs State Transitions System Configuration Eclipse Plug-In High-level Specification Language Cadena

Next… Cadena functionality and capabilities…

Example System

Basic components seen earlier

Example System Navigation Steering Subsystem

Example System Tactical Steering Subsystem

Example System Display Control on/off

Outline 2. Component Connections 3. Dependence Information 4. Modal Behavior 1. Component Interface

CCM Component Interfaces CCM Component Interfaces are based on a notion of ports Event ports – asynchronous event delivery consumes port – input (event sink) publishes port – output (event source) Interface ports – synchronous method calls provides port – provide interface to clients (facet) uses port – use interface of other component (receptacle)

Component Ports CORBA 3 CCM IDL input event port eventtype TimeOut {} eventtype DataAvailable {} interface ReadData { readonly attribute any data; } component BMDevice { consumes TimeOut timeout publishes DataAvailable dataCurrent provides ReadData dataOut }

Component Ports eventtype TimeOut {} eventtype DataAvailable {} interface ReadData { readonly attribute any data; } component BMDevice { consumes TimeOut timeout publishes DataAvailable dataCurrent provides ReadData dataOut } CORBA 3 CCM IDL output event port

Component Ports eventtype TimeOut {} eventtype DataAvailable {} interface ReadData { any get_data(); } component BMDevice { consumes TimeOut timeout publishes DataAvailable dataCurrent provides ReadData dataOut } CORBA 3 CCM IDL provide interface to clients (facet) provide interface to clients (facet)

Component Code Generation tacticalSteering : BM__ModalComponent Push() GetData() Push() GetData() Currently in Bold Stroke = 8-12 classes drawn by hand in Rational Rose, then code templates generated from this (component structure must be re-specified each time). Using CCM IDL Compiler component BMModal { consumes DataAvailable dataInReady; uses ReadData dataIn; publishes DataAvailable dataOutReady; provides ReadData dataOut; provides Toggle switch; } Completely auto-generated code templates + component logic User only fills in body of methods for event-handlers, interfaces

Outline 2. Component Connections

Component Connections Three ways in Cadena A textual language for allocating component instances and describing port connections A graphical representation of the same analogous to UML collaboration diagram useful for visualizing dependency information A form-based (spreadsheet-like) view useful for component integrator from pull-down menus pick ports to connect to pick QoS attributes (rates, locations, etc.)

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 } … abstract distribution nodes

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 } … rate 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 } … 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 } … 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 } … 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 } … 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 } … connect event INPUT port of current component to event OUTPUT port of EventChannel

Cadena Component Assembly

Cadena Visualization

Code Generation Overview Component Code Generation component BMModal { consumes DataAvailable dataInReady; uses ReadData dataIn; publishes DataAvailable dataOutReady; provides ReadData dataOut; provides Toggle switch; } component BMModal { consumes DataAvailable dataInReady; uses ReadData dataIn; publishes DataAvailable dataOutReady; provides ReadData dataOut; provides Toggle switch; } … component BMModal { consumes DataAvailable dataInReady; uses ReadData dataIn; publishes DataAvailable dataOutReady; provides ReadData dataOut; provides Toggle switch; } BM.Device BM.LazyActive BM.Modal “Glue Code” Generation Execution gives allocation and deployment of component instances and connections (complete system) Glue Code

Outline 3. Dependence Information

Dependency Specifications Inter-component dependences are given by connection information (already seen) We now give notation for specifying intra- component dependencies An example of Meyer’s “something intelligent/useful” that a developer or manager might want to know In this case, component integrator leverages this info in a variety of ways to specify aspects such as rates/priorities, distribution, scheduling, etc. Used to visualize system behavior in different modes

outDataAvailable port action triggers call on set_data() dependencydefault == none; dependencies { dataWriteOut.set_data() -> outDataAvailable; } behavior {... } Light-weight Dependency Specs

triggers no other actions Light-weight Dependency Specs dependencydefault == all; dependencies { modeChange() ->; case modeChange.modeVar of { enabled: inDataAvailable -> dataIn.get_data(), outDataAvailable; disabled: inDataAvailable ->; } behavior {... }

in enabled mode, shows actions triggered by receipt of event on inDataAvailable port Light-weight Dependency Specs dependencydefault == all; dependencies { modeChange() ->; case modeChange.modeVar of { enabled: inDataAvailable -> dataIn.get_data(), outDataAvailable; disabled: inDataAvailable ->; } behavior {... }

in disabled mode, inDataAvailable triggers no other port actions Light-weight Dependency Specs dependencydefault == all; dependencies { modeChange() ->; case modeChange.modeVar of { enabled: inDataAvailable -> dataIn.get_data(), outDataAvailable; disabled: inDataAvailable ->; } behavior {... }

Aspect Synthesis Dependency-driven rate assignment to event handlers 5Hz 20Hz 1Hz 20Hz

Cadena User Interface

Aspect Synthesis Synthesis of distribution information 5Hz 20Hz 1Hz 20Hz Look at coupling and traffic as indicated by rates Loc L3 Loc L1 Loc L2

Aspect Synthesis Automatic detection of optimization opportunties 5Hz 20Hz 1Hz 20Hz Asynchronous message delivery to synchronous method calls (must be co- located and run at same rate) Loc L3 Loc L1 Loc L2

Outline 4. Modal Behavior

Transition System Semantics Boeing engineers want to reason about system/component modes at design time Ideal for model-checking because… component modes are finite mode-transitions are triggered by event/data-port actions only tiny portion of system’s state space needs to be exposed Mode-related requirements can be naturally captured in TL or tools like Bell Labs Timeline Editor

Ultimate Modeling View CCM IDL Model Layer Check mode behaviors, temporal properties, timing constraints Code Layer Check that implementations satisfy/refinement high-level specs – leverage the fact that code skeletons are automatically generated Generate code, fill- in skeletons, check for refinement We don’t do all of this yet!

Component Behavior component BMModal { uses ReadData dataIn; consumes DataAvailable inDataAvailable; publishes DataAvailable outDataAvailable; provides ReadData dataOut; provides ChangeMode modeChange; enum Modes {enabled,disabled}; Modes m; behavior { handles dataInReady (DataAvailable e) { case m of enabled { dataOut::data <- dataIn.getData(); push {} dataOutReady; } disabled {} } … input ports

Component Behavior component BMModal { uses ReadData dataIn; consumes DataAvailable inDataAvailable; publishes DataAvailable outDataAvailable; provides ReadData dataOut; provides ChangeMode modeChange; enum Modes (enabled,disabled); Modes m; behavior { handles dataInReady (DataAvailable e) { case m of enabled { dataOut::data <- dataIn.getData(); push {} dataOutReady; } disabled {} } … output ports

Component Behavior component BMModal { uses ReadData dataIn; consumes DataAvailable inDataAvailable; publishes DataAvailable outDataAvailable; provides ReadData dataOut; provides ChangeMode modeChange; enum Modes (enabled,disabled); Modes m; behavior { handles dataInReady (DataAvailable e) { case m of enabled { dataOut::data <- dataIn.getData(); push {} dataOutReady; } disabled {} } … mode declaration using CORBA IDL

Component Behavior component BMModal { uses ReadData dataIn; consumes DataAvailable inDataAvailable; publishes DataAvailable outDataAvailable; provides ReadData dataOut; provides ChangeMode modeChange; enum Modes (enabled,disabled); Modes m; behavior { handles dataInReady (DataAvailable e) { case m of enabled { dataOut::data <- dataIn.getData(); push {} dataOutReady; } disabled {} } … behavior for events on dataInReady port

Component Behavior component BMModal { uses ReadData dataIn; consumes DataAvailable inDataAvailable; publishes DataAvailable outDataAvailable; provides ReadData dataOut; provides ChangeMode modeChange; enum Modes (enabled,disabled); Modes m; behavior { handles dataInReady (DataAvailable e) { case m of enabled { dataOut::data <- dataIn.getData(); push {} dataOutReady; } disabled {} } … behavior mode cases

Component Behavior component BMModal { uses ReadData dataIn; consumes DataAvailable inDataAvailable; publishes DataAvailable outDataAvailable; provides ReadData dataOut; provides ChangeMode modeChange; enum Modes (enabled,disabled); Modes m; behavior { handles dataInReady (DataAvailable e) { case m of enabled { dataOut::data <- dataIn.getData(); push {} dataOutReady; } disabled {} } … data flow specification

Component Behavior component BMModal { uses ReadData dataIn; consumes DataAvailable inDataAvailable; publishes DataAvailable outDataAvailable; provides ReadData dataOut; provides ChangeMode modeChange; enum Modes (enabled,disabled); Modes m; behavior { handles dataInReady (DataAvailable e) { case m of enabled { dataOut::data <- dataIn.getData(); push {} dataOutReady; } disabled {} } … publish event

Towards a Complete Model We have transition semantics for intra-component behavior. How should we model communication layer? ?

Outline of Real System Event channel with internal thread pool … Thread Pool … 60Hz20Hz5Hz1Hz ……… … passive components proxy consumer holds list of consumer references dispatch queues for each rate group publish correlation & filtering consumer refs Threads run call-backs associated with event consumer ports

Modeling with Direct OO Support dSpin model-checker supports references, dynamic allocation, garbage collection, heap symmetries built by Radu Iosif (KSU, now Verimag) Model generation strategy automatically generate component models hand-craft event-channel model (only once) Explicitly encode priorities/scheduling/thread- periods into transition system this dramatically reduces interleavings No modeling of RT/clocks for now still allows interesting functional properties as suggested by Boeing to be checked

Modeling Strategy Event channel with internal thread pool … Thread Pool … 60Hz20Hz5Hz1Hz ……… … correlation & filtering

Modeling Strategy Component Models Event Channel Model Component Models Connections thru dSpin References

DSpin Modeling of Components any NavSteering_internalData; mode NavSteering_componentState; ftype Ref_NavSteering_dataIn1_getData, Ref_NavSteering_dataIn2_getData; ftype Ref_NavSteering_update; function Fun_NavSteering_source1 (mtype t) { printf("NavSteering: source1 handler invoked.\n"); if :: NavSteering_componentState == enabled -> NavSteering_internalData = Ref_NavSteering_dataIn1_getData (); printf("NavSteering: publishing update.\n"); Ref_NavSteering_update (NavSteering_DataAvailable) :: else fi } Structure follows component behavior spec and connection representation closely handles dataInReady (DataAvailable e) { case m of enabled { dataOut::data <- dataIn.getData(); push {} dataOutReady; } disabled {} } handles dataInReady (DataAvailable e) { case m of enabled { dataOut::data <- dataIn.getData(); push {} dataOutReady; } disabled {} }

DSpin Modeling of Connections Ref_GPS_dataCurrent = Proxy_GPS_dataCurrent; GPS_dataCurrent_NumberSubscribers = 1; GPS_dataCurrent_SubscriberList = new functionField[1]; GPS_dataCurrent_SubscriberList[0].Entry = Fun_AirFrame_dataAvailable; instance AirFrame of BMLazyActive on l2 { connect dataAvailable to GPS.dataCurrent atRate 20 connect dataIn to GPS.dataOut Modeled very directly in DSpin

Functional Properties Property II: If navSteering is enabled when 20Hz timeout occurs, then airFrame should fetch navSteering data [before end of frame] Property II: If navSteering is enabled when 20Hz timeout occurs, then airFrame should fetch navSteering data [before end of frame] Property I: System never reaches a state where TacticalSteering and NavSteering are both disabled Property I: System never reaches a state where TacticalSteering and NavSteering are both disabled

Temporal Property Specs Trigger event …with condition Required event “Monitoring” automaton Timeline Editor from Bell Labs Timeline Editor from Bell Labs

Conclusions Could imagine providing a variety of forms of automated checking of lightweight specs for component-based systems Cadena provides currently provides a few – as requested by Boeing engineers Component IDL is a natural level for attaching lightweight specs Spec forms are naturally incremental Cadena continues the line of work by Garlan et. al. on model-checking pub/sub systems model-checkers that support OO structures directly make it much easier to model such systems basing model-checker scheduling on scheduling policy of actual system dramatically reduces state-space

Future Work… Focus on using static analysis techniques to check other properties escape/confinement analysis Building model-checking infrastructure dedicated to CORBA-like distributed systems flexible scheduling, flexible inclusion of dedicated models of middleware services (e.g., data service) Refinement checking checking that code conforms to component behavior specs (cf. Microsoft Research BEHAVE project) modify IDL code generation process to include “cookie-crumbs” that make it easier for analysis tools to check code conformance Case studies with Boeing and Rockwell-Collins

Project Web Site