Presentation is loading. Please wait.

Presentation is loading. Please wait.

Franca+ Bernhard Hennlich and Manfred Bathelt

Similar presentations


Presentation on theme: "Franca+ Bernhard Hennlich and Manfred Bathelt"— Presentation transcript:

1 Franca+ Bernhard Hennlich and Manfred Bathelt
April 19, | introducing components Bernhard Hennlich and Manfred Bathelt Software Architects, GENIVI Alliance This work is licensed under a Creative Commons Attribution-Share Alike 4.0 (CC BY-SA 4.0) GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries. Copyright © GENIVI Alliance 2018.

2 Outline Motivation Architecture Language Family
Introduction by Example: HelloWorld Component Model Software Component Hardware Component Component Deployment Service, Instance, Device, … Deployment Example Packages for Deployment Deployment Language Refactoring Extensible Deployment for additional Property Hosts New DSL by Inheritance from IDL Deployment

3 Motivation for Components in Franca
Specify components with distinct responsibilities in architecture model. Use Franca interfaces. Define provided and required ports referencing interfaces. Aggregate components in order to encapsulate complex systems. Allow inheritance of components. Wire component ports by direct connect or delegation. Mark component as candidate for instances of IPC services. Support the partitioning of service instances to devices. Support multiple deployment specification in one service with different communication technologies.

4 Franca+ is a family of domain specific languages
Franca IDL Data Types Interfaces Contracts Component Composition Provided / Required Port Connectors Devices Adapters Franca Deployment Platform Technology Communication: e.g. SOME/IP, D-Bus, User Defined, CAN? Aspects of architecture are described by specialized languages for : Type system and Interfaces Software Components and Physical Devices Deployment on Platforms and Communication details Franca+ prototype including editor, examples and deployment is available from Languages are connected by import and referencing of declared artefacts Allows separation and step-wise refinement in development process

5 Introduction by Example: Helloworld Client-Server-Pair
Interface and Types in fidl Components are defined in a new file type fcdl Deployment is based on Franca deployment in fdepl

6 All standard Franca IDL
Types and Interface IDL Component Deployment All standard Franca IDL package org.example import org.example.* from "HelloWorldTypes.fidl" <** @description: simple hello world class **> interface HelloWorld { method sayHello { in { String name } out { org.example.Answer message

7 Component Component IDL Deployment Package defines namespace
Namespace aware import package org.example import org.example.* from "HelloWorld.fidl" /* * The Server Component for Hello World */ service component HelloWorldServer { provides HelloWorld as AskMePort } * A Client Component for Hello World service component HelloWorldClient { requires HelloWorld as AskMePort Component Provided port Required port Optional port name Interface reference Candidate for deployed IPC service

8 Composition Component IDL Deployment Import components
package org.example import org.example.* from "HelloWorldServer.fcdl" import org.example.* from "HelloWorldClient.fcdl" component MeetingPoint { contains HelloWorldServer as Service contains HelloWorldClient as Client1 contains HelloWorldClient as Client2 connect Client1.AnswerMePort to Service.AskMePort connect Client2.AnswerMePort to Service.AskMePort } Contains one HelloWorldServer And two clients Connect Clients to Server

9 Composition and Delegate
IDL Component Deployment package org.example import org.example.* from "HelloWorld.fidl" import org.example.* from "HelloWorldServer.fcdl" import org.example.* from "HelloWorldClient.fcdl" component MeetingPoint { provides HelloWorld as PublicHelloWorldService delegate provided PublicHelloWorldService to Service.AskMePort contains HelloWorldServer as Service contains HelloWorldClient as Client1 contains HelloWorldClient as Client2 connect Client1.AnswerMePort to Service.AskMePort connect Client2.AnswerMePort to Service.AskMePort } Composition provides port …analogous for required Delegate to contained providing component

10 Structured comments with custom tags
Root Composition IDL Component Deployment package org.example import org.example.* from "HelloWorld.fidl" import org.example.* from "MeetingPoint.fcdl" import org.example.* from "HelloWorldClient.fcdl" import model "../../../tags/Tags.fcdl" <** @system: root denotes the component for which a system is instantiated @GUID: <SDAS-FHSK-AHDS> **> root component World { contains HelloWorldClient as PublicClient contains MeetingPoint as Room1 contains MeetingPoint as Room2 connect PublicClient.AnswerMePort to Room1.PublicHelloWorldService } Structured comments with custom tags Root component describes the top most entity of the architecture. Root must not own ports.

11 Additional Concepts for Components
IDL Component Deployment Unconnected ports are no error component Fabric { optional requires Adapter } component FabricImplementation extends Fabric { provides HelloWorld as Adapter Inherit ports and prototypes (contained components) from other component

12 Devices Component IDL Deployment
package org.example device HelloClientECU { adapter EthernetCard } device HelloServerECU { device Core_1 { adapter EthernetCard1 device Core_2 { adapter EthernetCard2 Physical components are described in fcdl files Device is a piece of hardware, which may contain other devices Franca devices are not intended to replace a full fledged hardware model. Adapters are physical communication endpoints

13 Component Deployment Deployment is based on Franca Deployment New
Next major version of CommonAPI C++ shall be based on component deployment IDL Component Deployment Deployment is based on Franca Deployment Deployment of IDL types and interfaces remains the same Property hosts for providers and instances are replaced New Create instances from service components and deploy them Deploy devices Partition service instances to devices and bind ports to communication adapters Specify variants of system model Build a closed model, by enforcing correct “use”

14 Type and Interface Deployment
IDL Component Deployment package org.example.deployment import „../HelloWorld.fidl" import "../HelloWorldTypes.fidl„ import "platform:/plugin/org.franca.someip/deployment/network_SOMEIP_deployment_spec.fdepl" // deployment for types define network.someip for typeCollection org.example as HelloWorldTypesDeployment { enumeration Location { EnumBackingType = UInt32 } // deployment for the interface type define network.someip for interface org.example.HelloWorld as SomeIpDeployment4HelloWorld { use org.example.deployment.HelloWorldTypesDeployment SomeIpServiceID = 123 method sayHello { SomeIpMethodID = 4 Namespace support for deployment entities Deployments are named Explicit use

15 Correct Usage of „use deployment“
Type Deployment Use Service Instance Deployment Component Deployment Device Deployment Variant Adapter Deployment Port Instance Deployment Port Deployment Instance Deployment Named Deployment Anonymous Deployment Interface Deployment Type Collection Deployment Editor and validator supports the refined “use”

16 Service Deployment Deployment IDL Component
package org.example.deployment import "../HelloWorldServer.fcdl" import "../World.fcdl" import "Interface.fdepl" import "platform:/plugin/org.franca.someip/deployment/network_SOMEIP_deployment_spec.fdepl" import "platform:/plugin/org.franca.architecture/deployment/architecture_deployment_spec.fdepl" define system.architecture for service World.Room1.Service as Service { provide AskMePort on network.someip { use org.example.deployment.SomeIpDeployment4HelloWorld SomeIpInstanceID = 1 SomeIpReliableUnicastPort = 30506 SomeIpUnreliableUnicastPort = 0 } Instance of service component, fully qualified name (FQN) starts with root component Use interface deployment Alternate deployment spec for services and each port possible

17 Device Deployment Deployment IDL Component Partition service to device
package org.example.deployment import "Service.fdepl" import "../HelloWorldDevices.fcdl" import "platform:/plugin/org.franca.someip/deployment/network_SOMEIP_deployment_spec.fdepl" import "platform:/plugin/org.franca.architecture/deployment/architecture_deployment_spec.fdepl" define system.architecture for device org.example.HelloServerECU.Core_1 as HelloServerECU { use org.example.deployment.Service adapter EthernetCard1 on network.someip { use org.example.deployment.Service.AskMePort SomeIpUnicastAddress = „ “ AdapterIsDefault = true } Partition service to device Bind port to adapter Adapter might be denoted as default, then all ports are bound to it.

18 Variant Definition Deployment IDL Component
package org.example.deployment import "ServerECU.fdepl" import "ClientECU.fdepl" import "../World.fcdl" define variant AIO for root World { use org.example.deployment.HelloClientECU use org.example.deployment.HelloServerECU } Independent of a certain technology Applies to all deployed components „under“ a root Variant is a setup of complete system Assembly of deployed devices

19 Franca Extensible Deployment
April 19, | How Franca 0.13 supports component models Dr. Klaus Birken Principal engineer, itemis AG This work is licensed under a Creative Commons Attribution-Share Alike 4.0 (CC BY-SA 4.0) GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries. Copyright © GENIVI Alliance 2018.

20 Using Franca’s deployment language
Define interfaces Franca IDL refers to Deploy interfaces to target platform Franca Deployment Language

21 Deployment for components
Define components Component Modeling Language refers to Deploy components to target platform Component Deployment Language

22 Combining Franca and components
Franca IDL Component Modeling Language refers to refers to refers to Franca Deployment Language Component Deployment Language extends Component deployment should reuse basic feature of Franca Deployment language (e.g., optional/mandatory logic, types).

23 Franca 0.13.0: Extensible Deployment Models
Franca’s deployment model language can now be extended by new hosts new definition roots new data types provider/instance deployment is implemented by this extension capability now: it can be installed as a separate feature more elaborate extensions can additionally use language inheritance the cdepl component deployment language uses this

24 Franca 0.13.0: Other new features
IDL: improved formatter (issues 241, 252) IDL: noRead flag for attributes, revisited (issue 237) IDL: new validation checks for states in contracts (issue 254) Deployment: optional package concept (issue 247) Deployment: extensibility (issues 242 and 250) Tools: show structured comments as pop-up (issue 236) Tools: JS-codegen for WAMP/Autobahn-binding (issue 253)

25 Thank you! Visit GENIVI at or Contact us: This work is licensed under a Creative Commons Attribution-Share Alike 4.0 (CC BY-SA 4.0) GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries. Copyright © GENIVI Alliance 2018.


Download ppt "Franca+ Bernhard Hennlich and Manfred Bathelt"

Similar presentations


Ads by Google