© fraunhofer iese fraunhofer iese multi-language development of embedded systems dr. thomas kuhn...
DESCRIPTION
© Fraunhofer IESE Motivation – multi language design Complex systems consist of multiple components Components are defined through views Interface, Behavior, Safety requirements Specification / realization Views represent concerns of Roles Architect Domain expert Safety engineer Interface Behavior SafetyTRANSCRIPT
© Fraunhofer IESE
Fraunhofer IESE
Multi-Language Development of Embedded Systems
Dr. Thomas Kuhn
[email protected].: 0049 631-6800 2177
© Fraunhofer IESE
Outline
Motivation
Multi-language development with CompoSE
CompoSE language components
CompoSE Infrastructure and Runtime framework
Conclusion
© Fraunhofer IESE
Motivation – multi language design
Complex systems consist of multiple components
Components are defined through views Interface, Behavior, Safety requirements Specification / realization
Views represent concerns of Roles Architect Domain expert Safety engineer
InterfaceBehavior
Safety
© Fraunhofer IESE
Motivation – multi language design
Each viewpoint/role has its own concepts Fault trees UML Data flow
Languages express role-specific concepts Generic modeling languages (Domain) specific languages
Properties store view-specific data & models
Interface
Behavior
Safety
© Fraunhofer IESE
Motivation – multi language design
Domain specific languages / generic languages
Domain specific languages Tailored, Intuitive
Generic languages Complex, not well focused
Holistic component definitions require multiple modeling languages
Interface
Behavior
Safety
© Fraunhofer IESE
Motivation – multi language design
Components defined through mixture Domain specific languages Proven off the shelf languages
Challenges Language integration Consistency Tool integration Runtime environments
© Fraunhofer IESE
Multi-language development with CompoSE
CompoSE supports multi language development Host language Predefined views Language components
Host language Components, Properties Defines components through views
Language components Integrate new languages, views, tool chains, and runtime support
© Fraunhofer IESE
Multi-language development with CompoSE
CompoSE host language Components Properties Views Types Transformations Checks
© Fraunhofer IESE
Multi-language development with CompoSE
Component Defines an entity of the system
Defined by properties Component name Component substructure Interface Domain specific properties Behavior
© Fraunhofer IESE
Multi-language development with CompoSE
Component views
Represent one viewpoint
Define data structures for view specific data Simple properties Black box models (unknown / native
structure) White box models (with meta models)
Integrate tool chains for manipulating data Industrial strength tool chains Domain specific editors
[Editor]
[Simulink realization]
© Fraunhofer IESE
Multi-language development with CompoSE
Types Define property contents
Transformations Data exchange between
views Synchronization between
views Uni-/Bidirectional
© Fraunhofer IESE
Multi-language development with CompoSE
Checks
Operate on Basic properties White-box models
Ensure Constraints Consistency
?
?
© Fraunhofer IESE
CompoSE language components
CompoSE language components
Language level Modeling languages and views
Infrastructure Editors & Generators Simulators / Analysis tools
Runtime Support libraries
Runtime
Runtime
© Fraunhofer IESE
CompoSE language components
Language Infrastructure Runtime
© Fraunhofer IESE
CompoSE infrastructure and runtime framework
Infrastructure and runtime framework
Integrates tool chains Editors Code generators
Runtime support Support libraries Schedulers Runtime models
Runtime
Runtime
© Fraunhofer IESE
CompoSE Infrastructure and Runtime framework
Infrastructure Editors provide common interface
Editor proxies
Basic interface Open model Report changed model
Simplistic implementation
[Editor]
© Fraunhofer IESE
CompoSE Infrastructure and Runtime framework
• Instance of generator metaclass
• Interface to Simulink code generator
• Adapter code implements runtime interface
© Fraunhofer IESE
Conclusion
CompoSE Component-based light-weight language coupling
Host language defines components Language components integrate modeling languages Language, infrastructure, runtime
Concepts Components with properties Black box / white box models Synchronization Checks
Rationale Rapid integration of tool chains and languages Rapid development of domain specific modeling approaches