Executable Translatable UML Stephen J. Mellor Chief Scientist.

Slides:



Advertisements
Similar presentations
Model-Based Testing with Smartesting Jean-Pierre Schoch Sogetis Second Testing Academy 29 April 2009.
Advertisements

Component-Based Software Engineering Main issues: assemble systems out of (reusable) components compatibility of components.
Model Driven Generative Programming Reza Azimi February 6, 2003 ECE1770: Trends in Middleware Systems.
ECOE 560 Design Methodologies and Tools for Software/Hardware Systems Spring 2004 Serdar Taşıran.
Architecture Representation
1 Translation Validation: From Simulink to C Michael RyabtsevOfer Strichman Technion, Haifa, Israel Acknowledgement: sponsored by a grant from General.
Automated Test Design ™ © 2011 Conformiq, Inc. CONFORMIQ DESIGNER On ES v1.2.1 Stephan Schulz MBT Working Meeting/MTS#56, Göttingen.
Chapter 22 UML Tooks and UML as Blueprint Model-Driven Architecture (MDA) Object-Constraint Language (OCL)
Data Model driven applications using CASE Data Models as the nucleus of software development in a Computer Aided Software Engineering environment.
Software Requirements Engineering
Job No/ 1 © British Crown Copyright 2008/MOD Developing a High Integrity Code Generator Using iUML/iCCG Sam Moody AWE plc, Aldermaston, Berkshire, United.
Filling the Gap Between System Design & Performance Verification Rafik HENIA, Laurent RIOUX, Nicolas SORDON Thales Research & Technology.
Formal Techniques in Software Engineering Universiteit AntwerpenIntroduction 1.1 Formal Techniques in Software Engineering 3de BAC Informatica Chapter.
Model-Based Programming: Executable UML with Sequence Diagrams By Ruben Campos Cal State L.A. Computer Science Thesis Work Spring 2007.
Page 1 Building Reliable Component-based Systems Chapter 16 - Component based embedded systems Chapter 16 Component based embedded systems.
Automated Analysis and Code Generation for Domain-Specific Models George Edwards Center for Systems and Software Engineering University of Southern California.
L4-1-S1 UML Overview © M.E. Fayad SJSU -- CmpE Software Architectures Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I.
ISBN Chapter 1 Preliminaries. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Chapter 1 Topics Motivation Programming Domains.
Institute For Software Integrated Systems Vanderbilt University Applications of Model Integrated Computing to The Synchronous Language Signal Ethan Jackson.
UML CASE Tool. ABSTRACT Domain analysis enables identifying families of applications and capturing their terminology in order to assist and guide system.
Copyright  1999 Daniel D. Gajski IP – Based Design Methodology Daniel D. Gajski University of California
Executable UML By Luca Pellicoro. Definitions Acronym: xtUML or xUML Technology where models (such as state diagrams and class diagrams) are automatically.
HAS. Patterns The use of patterns is essentially the reuse of well established good ideas. A pattern is a named well understood good solution to a common.
November 18, 2004 Embedded System Design Flow Arkadeb Ghosal Alessandro Pinto Daniele Gasperini Alberto Sangiovanni-Vincentelli
On the Correctness of Model Transformations Gabor Karsai ISIS/Vanderbilt University.
Testing Components in the Context of a System CMSC 737 Fall 2006 Sharath Srinivas.
Supplement 02CASE Tools1 Supplement 02 - Case Tools And Franchise Colleges By MANSHA NAWAZ.
1 Software Development Using Executable UML (xUML) Anoop Mathew
ISBN Chapter 1 Topics Motivation Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language.
© 2008 IBM Corporation Behavioral Models for Software Development Andrei Kirshin, Dolev Dotan, Alan Hartman January 2008.
Software Development Concepts ITEC Software Development Software Development refers to all that is involved between the conception of the desired.
P51UST: Unix and Software Tools Unix and Software Tools (P51UST) Compilers, Interpreters and Debuggers Ruibin Bai (Room AB326) Division of Computer Science.
1 IBM Software Group ® Mastering Object-Oriented Analysis and Design with UML 2.0 Module 1: Best Practices of Software Engineering.
Executable UML The Models are the Code - Executable UML CS387 Paul Krause.
Workshop on Integrated Application of Formal Languages, Geneva J.Fischer Mappings, Use of MOF for Language Families Joachim Fischer Workshop on.
MDA and QVT  Tom Gullion, Director of Product Management, Together Products.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Introduction to MDA (Model Driven Architecture) CYT.
University of Southern California Center for Systems and Software Engineering Model-Based Software Engineering Supannika Koolmanojwong Spring 2013.
© 2012 xtUML.org Bill Chown – Mentor Graphics Model Driven Engineering.
A Static Approach to Consistency Verification of UML Models Andrea Baruzzo Department of Computer Science University of Udine MoDeV.
1 5 Nov 2002 Risto Pohjonen, Juha-Pekka Tolvanen MetaCase Consulting AUTOMATED PRODUCTION OF FAMILY MEMBERS: LESSONS LEARNED.
Unified Modeling Language* Keng Siau University of Nebraska-Lincoln *Adapted from “Software Architecture and the UML” by Grady Booch.
Recursive Design for Embedded Real-Time Systems Minoru Yamaguchi Software Process Development section MSBC ・ CNC Sony Corporation Copyright 2001 Sony Corporation.
Requirements Specification. Welcome to Software Engineering: “Requirements Specification” “Requirements Specification”  Verb?  Noun?  “Specification”
FDT Foil no 1 On Methodology from Domain to System Descriptions by Rolv Bræk NTNU Workshop on Philosophy and Applicablitiy of Formal Languages Geneve 15.
Nucleus BridgePoint Roadmap Bill Tanner Engineering Manager.
BridgePoint Integration John Wolfe / Robert Day Accelerated Technology.
CSC480 Software Engineering Lecture 8-9 September 20, 2002.
Formal Specification: a Roadmap Axel van Lamsweerde published on ICSE (International Conference on Software Engineering) Jing Ai 10/28/2003.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
® IBM Software Group © 2009 IBM Corporation Essentials of Modeling with IBM Rational Software Architect, V7.5 Module 18: Applying Patterns and Transformations.
Requirement Analysis SOFTWARE ENGINEERING. What are Requirements? Expression of desired behavior Deals with objects or entities, the states they can be.
The Dagstuhl Middle Model: An Overview Timothy C. Lethbridge SITE, University. of Ottawa
XtUML in Embedded Systems Evel Knievel versus Incremental Always Advancing.
1 Budapest University of Technology and Economics Department of Measurement and Information Systems Budapest University of Technology and Economics Fault.
Embedded Software and UML Three Meanings of "Model" A sketch –not precise or complete; not maintained –communicates a rough idea A blueprint –like plans.
© 2009 Artisan Software Tools. All rights reserved. Testing Solutions with UML/SysML Andrew Stuart, Matthew Hause.
CMIT100 Chapter 14 - Programming.
Definition CASE tools are software systems that are intended to provide automated support for routine activities in the software process such as editing.
Software Design Methodology
IP – Based Design Methodology
Behavioral Models for Software Development
Is “Higher Level” Better?
Component-Based Software Engineering
Automatic Derivation, Integration and Verification
Chapter 1 Introduction(1.1)
Chapter 7 –Implementation Issues
Automated Analysis and Code Generation for Domain-Specific Models
Presentation transcript:

Executable Translatable UML Stephen J. Mellor Chief Scientist

System Complexity Price Performance The Evolution of Software Development Assembly CompilerAssembler Machine Code High Level Language UML Models Model Compiler 1990s1980s 2000s Assembly High Level Language Increased Productivity

UML – The Next Language n Moving to higher levels of abstraction can improve: — Time to market — Productivity — Understandability — Maintainability — Quality — Reuse — etc... n UML is the industry-standard n Executable UML is: — Streamlined — Tractable — Subset of UML n Achieved by having defined execution rules

xtUML n (X) Execute models — Allows for early verification — Pre-code interpretive execution — Integration of legacy code n (T) Translate models — Complete code generation from models — Customizable compilation rules — Optimized code Testing the model early bridges the verification gap

Systems Development Flow

Until now, design translation has been: n carried out on a case-by-case basis, n over and over and over and over. This approach fails to: n leverage expertise of best designers, n capture that expertise. Design Translation as a Process Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); DetermineExposureTime( Checking Che cking Che Ckin Che cking g Analysis Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); DetermineExposureTime( Checking Che cking Che Ckin Che cking g Design Checking Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); Code // Shutter Class Class Shutter_c {... } // Exposure Class Class Exposure_c {... }

Separation Design can be split between: n Subject matter experts who understand the application, and n Embedded experts who understand the architecture Each evolves at its own pace. Architecture Checking Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); DetermineExposureTime( Checking Che cking Che Ckin Che cking g Application

Design Translation as a Product Architecture Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); DetermineExposureTime( Checking Che cking Che Ckin Che cking g Application Now design translation is a product. n constructed once, and n executed automatically over and over. This approach…. n leverages expertise of best architects, n captures that expertise. Code // Shutter Class Class Shutter_c {... } // Exposure Class Class Exposure_c {... } Automated Translation.select many classes from instances of Class;.for each class in classes Class ${class.name}_c { …

. select many classes from instances of Class;.for each class in classes Class ${class.name}_c { … We Have a Choice Code // Shutter Class Class Shutter_c {... } // Exposure Class Class Exposure_c {... } Model Compiler Checking Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); DetermineExposureTime( Che cking Che Ckin Che cking g Application Architecture Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); DetermineExposureTime( Checking Che cking Che Ckin Che cking g Analysis Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); DetermineExposureTime( Checking Che cking Che Ckin Che cking g Design Checking Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); Code // Shutter Class Class Shutter_c {... } // Exposure Class Class Exposure_c {... }

Comprehensive software design flow Model Debugging Model Debugging Legacy Code VerificationTranslation Compilation Application Definition Application Definition Architecture Definition Architecture Definition Source Level Debugging Source Level Debugging Deployment System Prototyping System Prototyping Architecture Development Application Development Architecture Rules Application Model Application Model Rule Execution Model Execution Compiled Embedded Code (C, C++, Java ….) Model Compilation Model Compilation Native code Application Software Middle ware RTOS HW IP CPU Models Rules Instrumented native code Design Legacy Code

Application development n Build a model for each domain n Legacy and COTS code can also be integrated n Execute the models Legacy Code Application Model Application Model Execution Models Architecture Rules Rule Execution Rules Application Model Application Model Legacy Code Model Execution Legacy Code

Application Models n Class Diagram n Statechart Diagram n Action Language Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight( ); DetermineExposureTime( Mode ); Defines Lifecycle for Shutter Action for Checking Settings Shutter Shutter ID {I} Aperture Zoom OpenTime Status Exposure Exposure # {I} Shutter ID {R4} NumberOfBytes FileFolder {R5} Status R4 Closed Checking Settings Open Half ( ShutterID ) Released( Shutter ID ) Full( ShutterID ) Application Model Application Model

Intelligent Model Capture State Name {I} Class {R7} isFinal Class Number {I} Name KeyLetters Description Application Shutter Shutter ID {I} Aperture Zoom OpenTime Status Closed Checking Open Class NumberName 101Shutter 102Exposure State NameClassNumberisFinal Closed101973No Checking101974No Open101975No Metamodel Repository Intelligent model capture verifies models: — syntactically — semantically Application Model Application Model

Model Execution Execute models with an interpreter to verify behavior. Vs. Application Model Execution

Actions n Standard part of UML n Provide for complete code generation n 7-10 lines of generated code per line of action language n Allows “difficult”code to be generated reliably n Independence from Software platform n Ability to reorganize data and control structures

Comprehensive software design flow Model Debugging Model Debugging Legacy Code VerificationTranslation Compilation Application Definition Application Definition Architecture Definition Architecture Definition Source Level Debugging Source Level Debugging Deployment System Prototyping System Prototyping Architecture Development Application Development Architecture Rules Application Model Application Model Rule Execution Model Execution Compiled Embedded Code (C, C++, Java ….) Model Compilation Model Compilation Native code Application Software Middle ware RTOS HW IP CPU Models Rules Instrumented native code Design Legacy Code

Architecture Development n Select a set of rules that meet the requirements of the architecture n Legacy and COTS code can be integrated n Execute the rules Architecture Rules Rule Execution Rules Legacy Code Application Model Execution Models Legacy Code

Select Architecture Rules n Different architecture rules target different software platforms n You may buy Architecture Rules n You may reuse Architecture Rules n You may modify Architecture Rules Architecture Rules Target embedded systems using C Target embedded systems using C++ Architecture Rules Target embedded systems using C with special properties

Architecture rules Application State Name {I} Class {R7} isFinal.select many classes from instances of Class;.for each class in classes Class ${class.name}_c { ….select many states related by class->State[R7] where isFinal ==FALSE;.for each state in states void ${state.name}Action( ) { … Class Number {I} Name KeyLetters Description Shutter Shutter ID {I} Aperture Zoom OpenTime Status Closed Checking Open Class NumberName 101Shutter 102Exposure State NameClassNumberisFinal Closed101973No Checking101974No Open101975No Metamodel Repository Rules

Architecture rules.select many classes from instances of Class;.for each class in classes Class ${class.name}_c { ….select many states related by class->State[R7] where isFinal == FALSE;.for each state in states void ${state.name}Action( ) { … Class Shutter_c { … Class Exposure_c { … void OpenAction() { … void CheckingAction() { … void ClosedAction() { … From application Clear text Closed Checking Open Variable name R4 Shutter Exposure

Legacy Code and COTS n Legacy code, libraries, COTS, hand-written code etc can all be incorporated by building a wrapper in the architecture rules.select many invocations related by activity->Invocation[R17] where markDigitalOutput == True;.select many parameters related by invocation -> Parameter[R18].for each invocation in invocations DigitalOutputFunction(.for each parameter in parameters.if (not Last) ${ parameter.Name },.else ${ parameter.Name } ) ;.end for Name of function in library Mark

Rule Execution n If you change a rule, it needs to be verified by execution n On execution, the rules should continue to yield correct code n Verify using a Test Executable UML program Legacy Code Application Model Execution Models Architecture Rules Rule Execution Rules Legacy Code

Architecture Rules Model compilation Application Models Compiled Embedded Code (C, C++, Java ….) Model Compilation Model Compilation Native code Models Rules Instrumented native code Compiled Embedded Code (C, C++, Java ….) n Model compilation is the execution of the architecture rules over the application to produce text n (That is, code in any language the rules specify.)

Performance n If any dimension of system performance is inadequate, modify the rules n Each modification will improve to fit n Do not change the application models! Architecture Rules Rule Execution Rules Legacy Code Application Model Application Model Execution Models Legacy Code

Model Debugging n Allows you to verify the compiled model n Set model-level breakpoints n Halt execution n View model-level trace n Hyper-link to related instances for inspection Compiled Embedded Code (C, C++, Java ….) Model Debugging Model Debugging Source Level Debugging Source Level Debugging System Prototyping System Prototyping Compiled Embedded Code (C, C++, Java ….) Model Compilation Model Compilation Native code Instrumented native code

Model debugging 1. Set model-level breakpoint Halt execution and view model-level trace 3. Hyper-link to related instances for inspection Model-level debugging

Comprehensive software design flow Model Debugging Model Debugging Legacy Code VerificationTranslation Compilation Application Definition Application Definition Architecture Definition Architecture Definition Source Level Debugging Source Level Debugging Deployment System Prototyping System Prototyping Architecture Development Application Development Architecture Rules Application Model Application Model Rule Execution Model Execution Compiled Embedded Code (C, C++, Java ….) Model Compilation Model Compilation Native code Application Software Middle ware RTOS HW IP CPU Models Rules Instrumented native code Design Legacy Code

Nucleus BridgePoint Product Model Construction Model Execution Model Compilation Model Debugging

4 requirements for effective code generation Every system is different, so we need complete control over the generated code. Not all code is equal, so we need specific and precise control over the generated code. No code is an island, so we need integration of legacy and generated code. Partial generation requires synchronization, so we need completeness of code generation. These requirements are met by open Model Compilers.

. select many classes from instances of Class;.for each class in classes Class ${class.name}_c { … We Have a Choice Code // Shutter Class Class Shutter_c {... } // Exposure Class Class Exposure_c {... } Model Compiler Checking Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); DetermineExposureTime( Che cking Che Ckin Che cking g Application Architecture Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); DetermineExposureTime( Checking Che cking Che Ckin Che cking g Analysis Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); DetermineExposureTime( Checking Che cking Che Ckin Che cking g Design Checking Checking Settings Entry/ OpenShutter( 0.5 ); MeasureLight(); Code // Shutter Class Class Shutter_c {... } // Exposure Class Class Exposure_c {... }

Thank you Questions?