Franca+ Bernhard Hennlich and Manfred Bathelt

Slides:



Advertisements
Similar presentations
Modelling Class T05 Conceptual Modelling – Domain References: –Conceptual Modeling of Information Systems (Chapters 1.2.1, 2, 3) –A practical Guide to.
Advertisements

® IBM Software Group © 2006 IBM Corporation Rational Software France Object-Oriented Analysis and Design with UML2 and Rational Software Modeler 04. Other.
COMPONENT DIAGRAM in UML 2.0 Veronica Carrega
C OMPONENT & D EPLOYMENT D IAGRAMS Hoang Huu Hanh, Hue University hanh-at-hueuni.edu.vn.
UML – Class Diagrams.
1 © Wolfgang Pelz UML3 UML 3 Notations describe how to use reusable software. Package Component Deployment Node.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 7 Data Modeling Using the Entity- Relationship (ER) Model.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 2 – Components.
Lecture a: Additional UML Models: Package, Activity, Deployment Lecture b: Generalization, Aggregation and Additional Domain Model Notation Copyright W.
CSE314 Database Systems Data Modeling Using the Entity- Relationship (ER) Model Doç. Dr. Mehmet Göktürk src: Elmasri & Navanthe 6E Pearson Ed Slide Set.
The Design Discipline.
Component Software: A New Software Engineering Course H. Conrad Cunningham, Yi Liu, Pallavi Tadepalli, and Mingxian Fu Software Architecture Research Group.
An Object-Oriented Approach to Programming Logic and Design
An Introduction to Software Architecture
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
UML Diagrams: Class Diagrams The Static Analysis Model Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Smith’s Aerospace © P. Bailey & K. Vander Linden, 2005 Architecture: Component and Deployment Diagrams Patrick Bailey Keith Vander Linden Calvin College.
Object-Oriented Modeling Chapter 10 CSCI CSCI 1302 – Object-Oriented Modeling2 Outline The Software Development Process Discovering Relationships.
IBM Software Group ® Overview of SA and RSA Integration John Jessup June 1, 2012 Slides from Kevin Cornell December 2008 Have been reused in this presentation.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
1 Chapter 8 – Classes and Object: A Deeper Look Outline 1 Introduction 2 Implementing a Time Abstract Data Type with a Class 3 Class Scope 4 Controlling.
Modeling Component-based Software Systems with UML 2.0 George T. Edwards Jaiganesh Balasubramanian Arvind S. Krishna Vanderbilt University Nashville, TN.
Unified Modeling Language © 2002 by Dietrich and Urban1 ADVANCED DATABASE CONCEPTS Unified Modeling Language Susan D. Urban and Suzanne W. Dietrich Department.
The Static Analysis Model Class Diagrams Prof. Hany H. Ammar, CSEE, WVU, and Dept. of Computer Science, Faculty of Computers and Information, Cairo University.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
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.
Introduction to c++ programming - object oriented programming concepts - Structured Vs OOP. Classes and objects - class definition - Objects - class scope.
Kemal Baykal Rasim Ismayilov
UML / UML 2.0 Diagrams (Part I) 1. Overview of the 13 diagrams of UML Structure diagrams 1.Class diagram 2.Composite structure diagram (*) 3.Component.
COMPONENT DIAGRAM in UML 2.0 Veronica Carrega. PLAN OF TALK  Introduction about components  Components and component diagrams in uml 2.0  Case study.
1 Technical & Business Writing (ENG-715) Muhammad Bilal Bashir UIIT, Rawalpindi.
Copyright © GENIVI Alliance 2015
Component Design Elaborating the Design Model. Component Design Translation of the architectural design into a detailed (class-based or module- based)
SwE 455 Tutorial. What is Evolve? Evolve is a tool for defining components and connecting them together to form new components. Also provides a runtime.
Basic Concepts and Definitions
April 19, 2016 This work is licensed under a Creative Commons Attribution-Share Alike 4.0 (CC BY-SA 4.0)CC BY-SA 4.0 GENIVI is a registered trademark of.
UML (Unified Modeling Language)
ISC321 Database Systems I Chapter 2: Overview of Database Languages and Architectures Fall 2015 Dr. Abdullah Almutairi.
CHESS Methodology and Tool Federico Ciccozzi MBEES Meeting Sälen, January 2011 January 2011.
Dr. Ir. Yeffry Handoko Putra
Data Modeling Using the Entity- Relationship (ER) Model
Deployment Diagram.
Design Patterns: MORE Examples
UML Diagrams: Class Diagrams The Static Analysis Model
UML Diagrams By Daniel Damaris Novarianto S..
Copyright © GENIVI Alliance 2016
Deployment Diagram.
The Development Process of Web Applications
COMPONENT & DEPLOYMENT DIAGRAMS
Chapter ? Quality Assessment
Systems Analysis and Design With UML 2
CDL Project Status Update
Software Quality Engineering
UML Diagrams Jung Woo.
Data Modeling II XML Schema & JAXB Marc Dumontier May 4, 2004
Deployment Diagram.
Krishnakumar Balasubramanian
Applying Domain-Specific Modeling Languages to Develop DRE Systems
CBSE 2014 Modeling Components with UML
Component-Based Software Engineering
Chapter 20 Object-Oriented Analysis and Design
Starting Design: Logical Architecture and UML Package Diagrams
Analysis models and design models
An Introduction to Software Architecture
Copyright 2007 Oxford Consulting, Ltd
Design Yaodong Bi.
Chapter 22 Object-Oriented Systems Analysis and Design and UML
UML  UML stands for Unified Modeling Language. It is a standard which is mainly used for creating object- oriented, meaningful documentation models for.
Presentation transcript:

Franca+ Bernhard Hennlich and Manfred Bathelt April 19, 2018 | 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.

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

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.

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 https://github.com/GENIVI/franca_plus Languages are connected by import and referencing of declared artefacts Allows separation and step-wise refinement in development process

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

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

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

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

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

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.

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

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

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”

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

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”

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

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 = „10.10.104.1“ AdapterIsDefault = true } Partition service to device Bind port to adapter Adapter might be denoted as default, then all ports are bound to it.

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

Franca Extensible Deployment April 19, 2018 | 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.

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

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

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).

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

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)

Thank you! Visit GENIVI at http://www.genivi.org or http://projects.genivi.org Contact us: help@genivi.org 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.