<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Domain-Specific Language Based Architecture Modeling Approach for Safety Critical Automotive Software Systems</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Stefan Schlichthaerle</string-name>
          <email>Stefan.Schlichthaerle@bmw.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Klaus Becker</string-name>
          <email>Klaus.Becker@bmw.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sebastian Sperber</string-name>
          <email>Sebastian.Sperber@bmw.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>BMW Group</institution>
          ,
          <addr-line>80788 Munich</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Modeling software architecture for software intensive systems like future automated driving vehicles becomes increasingly complex, compared to Advanced Driver Assistance Systems currently available on the market. The complexity and novelty of the customer functions and the hardware and software platforms demands for an agile development methodology. In this paper, we introduce why and how we at BMW apply a Treat Architecture like Code approach for the software development for automated driving. We introduce the requirements which lead us to this approach, the tools and artifact flows around the tools, and how we embed this into our agile development. We show examples from a real vehicle function. Index Terms-Software architecture, Agile software development, Service-oriented systems engineering</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        In the automotive domain, innovations are to a huge extend
driven by software, particularly in the last 15 years [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
Innovative vehicle features, like Advanced Driver Assistance
Systems (ADAS) and future highly, or fully automated driving
features (SAE levels 3-5), are mainly based on software.
Therefore the amount of software in vehicles has been and
will continue to increase dramatically.
      </p>
      <p>
        Additionally, especially in the context of automated driving,
the requirements for the engineering problems cannot be
completely predefined in the beginning and then afterwards
developed, like in classical development processes. This is
because many engineering problems are Volatile, Uncertain,
Complex and Ambiguous (often abbreviated with VUCA),
raising the demand for agile development models [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The
VUCA factors influence all stages of engineering, like
requirements engineering, software architecture design, software
implementation, testing at different integration levels, and also
the engineering and integration processes.
      </p>
      <p>
        Because of the complexity of the development of automated
driving, agile software development is required in a
largescale with many software development teams. Therefore BMW
adopted a large-scale scrum (LeSS) approach for the teams
involved in development of automated driving [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>
        In this paper, we present our requirements and our approach
for a methodology for software architecture design in a
largescale agile software development process of a
SoftwarePlatform for automated driving. The Software-Platform is
based on Adaptive AUTOSAR [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. 1 We also show how
Continuous Integration (CI) influences our methodology on
describing software architecture.
      </p>
    </sec>
    <sec id="sec-2">
      <title>II. REQUIREMENTS AND GOALS FOR SOFTWARE ARCHITECTURE DESIGN</title>
      <sec id="sec-2-1">
        <title>A. Software System and Development Process Overview</title>
        <p>
          The mixed safety-critical software platform for automated
driving, for which the architecture modeling approach
presented in this paper is used, consists of different CPUs that
use Adaptive AUTOSAR as middleware. The communication
between the CPUs is enabled by the SOME/IP protocol [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ],
an automotive standard for Ethernet communication,
specified and used as part of AUTOSAR. During the software
engineering process, different teams from multiple internal
departments and external contracted partners and suppliers
contribute software entities into the Continuous Integration
(CI) infrastructure. The agile development process is based
on the LeSS framework, which enables agile methodologies
for big project setups [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ].
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>B. Agile Working Model</title>
        <p>
          A fundamental aspect of agile methodologies is the ability
to react fast towards changed requirements [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. In classical
development processes like the waterfall approach, all product
development phases follow a well-defined sequence, which
starts with requirements engineering and ends with the product
release. Changes in this sequence are hard to deploy and
are often perceived like a failed project result. In contrast to
the waterfall approach, an agile software development process
always involves the full cycle to introduce a change, starting
from updated requirements, changed architecture, source code
and tests. The product development always iterates through
this cycle, resulting in small product increments which
eventually sum up to the final product.
        </p>
        <p>In an large scale agile software development project with
multiple distributed development teams, an essential success</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>1https://www.autosar.org/standards/adaptive-platform</title>
      <p>Copyright © 2020 for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).
factor is to have a stable basis in a master repository, in which
always a certain level of functional quality is ensured. For
instance, it shall compile and automated tests on different
levels shall be ok. This high quality stable master (sometimes
also called green master, because all tests are always green)
can only be established by avoiding that people directly
commit their changes into the master without any quality
check. Hence, we setup a staged development process with
semi-automated quality gates. Developers create small, short
living, development branches, do their changes in the branches,
and then create a pull request (PR) to request a takeover of
their changes into the master. Once the PR has been triggered,
two stages of automated quality gates are triggered.</p>
      <p>1) check
2) gate</p>
      <p>To pass the check, at least one manual review has to be done
by another developer, which either declines with comments
requesting improvements or fixes, or approves the changes.</p>
      <p>Only when the review and all automated tests done during
the check are ok, the gate is triggered and performs additional
deeper tests based on a virtual merge with the master (and
with all changes of the master that have been added after the
development branch has been created). If the automated tests
of the gate are also ok, the change will be merged into the
master, see Fig. 1.
create branch to develop
new feature or fix problem
push
changes
Pull Request:
Developer requests
quality check
(incl. manual reviews)
branch</p>
      <p>Check:
Quality Feedback
about change
push
improvement</p>
      <p>Gate:
Assess quality of change,
integrated with recent
master
quality
not ok
quality
ok</p>
      <p>Automatic</p>
      <p>Merge
Git Repo master</p>
      <p>other branch</p>
      <p>But what does this staged continuous integration process
mean for the development of the software architecture?</p>
      <sec id="sec-3-1">
        <title>C. Treat Architecture like Code</title>
        <p>A key enabler for an agile development process is the
ability to change all parts of the product in an agile way.
Source code repositories and scalable CI infrastructure enable
an agile development of source code. But other parts, like
architecture models or on-board network descriptions, which
are also crucial building blocks of the overall product, are often
still treated in a different way, preventing fast iteration cycles.
Reasons for this are legacy tools, or a development process
which emphasizes on big releases on fixed dates, instead of
fast and small incremental updates. To address this challenge,
the architecture description shall be kept as close to the code as
possible, to avoid architecture erosion by deviations between
architecture and code. This leads us to the requirement that
ideally, the architecture description is treated in the same
way like the source code, homogeneously in the same CI
infrastructure. A textual architecture description is best suited
for this, as automated merges can be done for the architecture
description in exactly the same way as for source code.</p>
        <p>This is why we decided to choose a textual Domain Specific
Language (DSL) like Franca+ to describe those parts of the
architecture from which code is going to be generated (see
section V). The architecture model is stored in text files
within the same repository as the corresponding source code,
accompanied by a tool chain running in the CI infrastructure in
the cloud. Thereby we ensure that always, with each delivery,
the architecture models match the code and to the build system
configuration files. Hence, we integrate the development of
architectures with Franca+ and the development of software
code into the same CI process.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>III. RELATED WORK</title>
      <p>Agile methodologies and development workflows are widely
used within software engineering among different industries. A
key aspect of software development is the related architectural
design. In this section, we briefly describe related work in agile
software architecture development.</p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], the author talks about the alignment of architecture
work with agile teams. Based on his experience as software
architect, there are often difficulties when software architects
and agile development teams work together, because their
priorities and scope may vary. For example architects tend to
work on a comprehensive design upfront, which shall cover all
aspects, whereas agile teams following the agile manifest work
continuously on their product and regularly deal with changed
requirements, which may impact their overall product.
      </p>
      <p>To address these differences, the author derives a set of
architecture practices, which helps software architects and
agile teams to collaborate and benefit from each other. Among
others, he emphasizes that sharing information over simple
tools is key to bring both parties together. Additionally, he
describes that incremental deliveries and Deliver something
that runs are key to match with the development workflow
of the agile team. The author does not introduce concrete
technical solutions to enable these practices in a project setup,
though. In our project, these architecture practices have been
clearly identified as well and we address them with our
DSLbased approach for architecture modeling.</p>
      <p>
        The work in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] introduces research questions and study
results about the requirements to apply Service Oriented
Architectures (SOA) in safety-critical automotive software. For
the modeling of service architectures, they propose to use
techniques such as UML or SoaML. SoaML enables formal
modeling of service interfaces on syntactic and semantic level. They
propose to develop service interfaces with service description
languages. Typically those service description languages are
also text-based, like WSDL. The presented study result was
that the vast majority of interviewed persons agreed that a
model based approach for SOA development is needed, and
that services should be designed independently from a target
hardware platform. The Franca+ approach which we apply
supports this. The textual modeling approach with Franca+ is
motivated by the Treat Architecture like Code idea to enable
the homogeneous handling of architecture and code in the
same CI process, to avoid deviations between architecture
and code. As service middleware, we use SOME/IP in our
project. Due to the usage of platform-independent models
and the platform-specific deployment models (see section IV),
different service middleware could be used, like for instance
also Data Distribution Service (DDS) [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], which can be
applied as alternative to SOME/IP in the AUTOSAR Adaptive
Platform. 2
      </p>
    </sec>
    <sec id="sec-5">
      <title>IV. MODELING APPROACH</title>
      <p>In section II-C, we described the philosophy of Treat
Architecture like Code and the expected benefits and
improvements for product development in our domain. To transfer
this overall approach into an automotive software project, we
developed a modeling approach which is based on latest tools
and processes for agile software development and fulfills all
requirements necessary for the development of safety critical
systems. The current status of our tool chain’s qualification
regarding these requirements is discussed in V-D.</p>
      <p>In this section, we will first describe the key entities of our
model and their representation. Afterwards, we introduce the
language which is used to describe the entities.</p>
      <sec id="sec-5-1">
        <title>A. Model Fundamentals</title>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Our model consists of two horizontal layers.</title>
      <p>The model layer contains platform-independent definition
of interfaces, data types and components.</p>
      <p>The deployment layer maps the platform-independent
model to concrete technologies and instances on CPUs
available in the system. This layer also contains dedicated
properties and settings, which are required during code
generation or at runtime of the system.</p>
      <p>A component defined on the model layer may include
provided and required communication ports, which are typed
by the used Interface. An Interface itself can contain an
arbitrary number of methods, events or fields, which are typed
by the data types.</p>
      <p>For every entity on the model layer, a deployment is added
on the deployment layer, which adds properties towards the
technical realization on the concrete platform. For example
an technological independent interface defined on the model
layer can be extended with properties required for SOME/IP
deployment on the deployment layer, so that the interface can
be used for SOME/IP communication in the vehicle network.
With this layered approach, the same software component
and interface description on model layer can be mapped to
different platforms by using different deployment models.</p>
    </sec>
    <sec id="sec-7">
      <title>2https://www.autosar.org/standards/adaptive-platform</title>
      <p>Besides the layered view described, a different view of the
model starts from the individual component and introduces
a vertical column spanning from model layer on top to the
deployment layer at the bottom. This view expresses the
technological-independent model of a component, its
interfaces and data types together with a technology-dependent
deployment on a concrete CPU. At the same time, the vertical
column reduces dependencies to the shared usage of interfaces
and data types, which is a crucial prerequisite for the design
of a performant tool chain, as we will see in section (V-A).</p>
      <p>
        To express all entities and to store them in text files within
a repository, the Franca IDL, which is part of the Franca
framework [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], is used. In the following section, the Franca
IDL and the extensions introduced in our project are described.
      </p>
      <sec id="sec-7-1">
        <title>B. Franca</title>
        <p>
          Franca is a framework for defining and transforming
software interfaces. The core of it is the Franca IDL (Interface
Definition Language), which is a textual language for
specification of APIs [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. Franca is a domain-specific language
based on the Eclipse Xtext framework [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. Due to its Xtext
nature, Franca already provides an editing tool with built-in
basic validations and a software development kit (SDK) to
work with Franca files in other tools, at almost no cost. Within
our project, we use the Franca IDL for defining entities on the
model layer and an extension of it called Franca+, which we
use to define software components and their deployment on
the deployment layer.
        </p>
        <p>
          1) Franca IDL: Franca IDL is an interface definition
language which allows defining interfaces, and corresponding
data types. It is part of the Franca framework, which is
published in [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] and described in detail in [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. As we
use most of Franca IDL without any changes, except its
concept of service instances as service deployments, we won’t
describe the language features in detail here and refer to the
sources available. Instead we emphasize on the extensions
we introduced towards the definition of software components,
ECUs and their deployment in the next section.
        </p>
        <p>2) Franca+: Franca+ was developed at BMW to enable
a language-based modeling approach for AUTOSAR
environments, where software architecture is described in terms of
software components and communication via ports. As an
extension of Franca IDL, Franca+ reuses Franca’s definitions
of interfaces and datatypes. A software component’s port is
an instantiation of such an interface. The above mentioned
model is split into two layers and is also applied to Franca+,
which consists of two domain specific languages, the Franca</p>
      </sec>
      <sec id="sec-7-2">
        <title>Component Description Language (FCDL) and the Franca</title>
      </sec>
      <sec id="sec-7-3">
        <title>Component Deployment Language (CDEPL). The Component</title>
        <p>Description Language allows defining software components
with ports that provide or require services. The service’s
content is described in terms of Franca interfaces. Furthermore
in Franca+, model elements called devices can be used to
model CPUs and their network interfaces. In case that the
communication relations between software components shall
be stated in the model view already, connectors can be used
to connect the corresponding component ports.</p>
        <p>Within the Component Deployment Language it is defined
which of these new model elements act as deployment targets
and how these deployments have to be specified. The actual
deployment properties that can be applied for each type are
defined in so called deployment specification files, a
mechanism reused from Franca. Using this approach deployment
properties can be edited later on by simply adding them to the
specifications without the need of changing the actual tool. To
enable our tool chain we introduced deployment specifications
to describe SOME/IP and IPC communication, as well as
runtime parameters of Adaptive AUTOSAR applications and
diagnostic communication. In Franca+, service instances are
defined as the deployment of service components, with all
corresponding deployment information, e.g. for their
communication ports.</p>
        <p>In this section, we first introduced the fundamentals of our
modeling approach, which supports modeling of
platformindependent and platform-dependent entities on different
layers. Additionally, we described the domain-specific language
that is used as modeling language and the extensions for
component description developed at BMW.</p>
        <p>In the next section, we describe the tool chain used to
translate the model towards the platform and to connect the
software architecture model to other tools applied in our
software and systems engineering.</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>V. TOOL CHAIN</title>
      <p>To embed the described architecture model into the software
development process and fulfill the requirements regarding
working mode as stated in section II, a comprehensive tool
chain is required.</p>
      <p>The tool chain consists of two major parts influencing the
actual target code generation and one additional part, which
is used for documentation purposes.</p>
      <p>1) First, the model stored in the repository has to be
translated into executable code, which is eventually
running on the target hardware in the vehicle. Besides
translation into different languages, this part of the chain
also contains validation steps, to ensure that errors in the
model are discovered as early as possible.
2) Second, there is a part of the tool chain which
produces Franca+ model artifacts mainly from existing data
sources like on-board network or diagnosis description.</p>
      <p>Figure 2 shows an overview of the parts of the tool chain,
contributing to and starting from the Franca+ model
respectively. In addition there is another part that generates Unified
Modeling Language (UML) elements for graphical modeling
tools. In the following sections, the parts of the tool chain are
described in more detail.</p>
      <sec id="sec-8-1">
        <title>A. Code Generation towards the platform</title>
        <p>The component model is described with Franca+ and stored
in text files within a git repository. Whenever a developer
Bordnet Signal
Catalogue
Diagnostic
Request
Catalogue
...</p>
        <p>Franca
+ Interface Description (FIDL)
+ Interface Deployment (FDEPL)
+ Component Description (FCDL)
+ Component Deployment (CDEPL)</p>
        <p>Autosar
Models and
ManCiofedests
(*.arxml)
UML Data
gen</p>
        <p>Source
CoCoddee
introduces a change request as a pull request, the tool chain is
started and tries to compile the change together with the rest
of the model.</p>
        <p>The first part of the tool chain is a python-based compiler,
which reads the Franca+ model affected by the pull request
and translates it into an Adaptive AUTOSAR compatible XML
representation. In subsequent steps, the Adaptive AUTOSAR
model is further translated into C++ source code and binaries,
which are then executed on the hardware. Whenever an error
occurs during execution of these steps, no matter if it is related
to validation, quality assurance or regression in test cases, the
pull request is rejected, resulting in a negative feedback to the
developer. To integrate the change, the developer has to first
resolve the problems discovered.</p>
        <p>In section IV-A, the importance of dependencies between
parts of the model has been discussed already. To design a
performant tool chain that scales to huge projects, it is very
important that a run triggered by a pull request only translates
these parts of the model that are directly affected by the
change. It shall not be required to consider the whole model
to check a partial change.</p>
        <p>In a first development iteration of our tool chain, a pull
request affecting a single component always caused a rebuilt
of the whole CPU to which the corresponding instance was
allocated to. With growing number of developers contributing
to the model, build times increased significantly, resulting in
long waiting times and overall decrease of productivity. Only
considering changed model entities in the check of a pull
request eliminated these problems.</p>
      </sec>
      <sec id="sec-8-2">
        <title>B. Incorporating legacy systems</title>
        <p>Some data required to generate a complete system
description is located into other data sources. For example,
at BMW, the ethernet-based vehicle network description is
managed in a separate database system, which is involved
in a variety of processes and projects. The tool does not
allow agile workflows, therefore we decided to import its
data into our model on a regular basis. Whenever a release
takes place for the ethernet-based vehicle network, we convert
the artifacts into a Franca+ model description and add them
to our repository. With this approach, we decouple the code
generation as described in V-A from the legacy system, so
that its contents can be changed with our workflow. We did
not implement a round trip within our tools, though. In this
example, changes introduced in the Franca+ model have to
be aligned with the other system by following their change
processes on a regular basis.</p>
        <p>The same approach applies for diagnosis description for
Unified Diagnostic Services (UDS, ISO 14229). The origin
of the data is a database system with a separate change
process. We extended our tool chain to read an export of
the diagnosis database on a regular basis and to convert it
into the Franca+ model. This was necessary because at many
interfaces diagnostic data and requests have to be handled.</p>
      </sec>
      <sec id="sec-8-3">
        <title>C. Tracing to other tools</title>
        <p>Since graphical representations may help to understand the
software architecture better and allow advanced
documentation, we introduced another tool for the generation of
Unified Modeling Language (UML) elements from our Franca+
model.</p>
        <p>We generate UML elements (data-types, components and
interfaces) from the Franca+ models and import them into
an UML tool, in which other aspects of the software and
system architecture are described. By this, we enable seamless
tracing and referencing from other system aspects with are not
defined in Franca+, towards the entities defined in Franca+.
At the same time, this enables tracing from our Requirements
Engineering tool to the entities defined in Franca+.</p>
        <p>
          As the exchange format with these graphical UML tools we
use Eclipse UML2, which is part of the Eclipse Model
Development Tools (MDT) [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] framework. The Franca+
metamodel can be mapped straight-forward to UML2, because most
elements are defined in both representations.
        </p>
      </sec>
      <sec id="sec-8-4">
        <title>D. Tool qualification</title>
        <p>software which is part of the Software-Platform for Automated
Driving and explain how it is developed with the tools and
processes described.</p>
      </sec>
      <sec id="sec-8-5">
        <title>A. Regulatory software identification numbers</title>
        <p>
          To comply with statutory specifications and type approval
regulations, the software platform shall provide regulatory
software identification numbers (short: RxSWINs) [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ].
These numbers are used to identify the software version used
during approval of the product and to establish a process to
handle software updates and their impact on existing
typeapproved systems or functions. To comply with these
requirements, a software shall be developed as part of the
SoftwarePlatform for Automated Driving, which handles RxSWINs and
the relevant communication needs.
        </p>
        <p>For the sake of simplicity in this illustration, our exemplary
model below focuses on a single requirement derived out of the
type approval regulations: The software shall offer an interface
to query the RxSWIN of the whole platform.</p>
      </sec>
      <sec id="sec-8-6">
        <title>B. Architecture Model of RxSwinApp</title>
        <p>To fulfill the requirements derived for the software
identification number feature of the platform, a service component
called RxSwinApp is modeled, which offers a single interface
containing a method. If the method is called, the RxSWIN of
the platform is returned.</p>
        <p>Thus, the Franca+ model for this software contains a
service component definition, including a provided port which
offers interface RxSwinData. The interface contains one method
definition with one out parameter. If the method is called by
the client, the out parameter contains the RxSWIN. Listing 1
shows the model in Franca+ language.</p>
        <p>
          As we use the introduced architecture modeling approach 1 i n t e r f a c e RxSwinData
for the development of mixed safety critical systems, an 2 f
additional factor to consider is the tool qualification according 3 m et h o d g e t R x S w i n
to functional safety standards, particularly the ISO 26262 4 f
[
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] for the automotive domain. The necessary actions, like 5 o u t f
determination of the tool confidence level (TCL) and software 6 U I n t 3 2 r x s w i n
tool qualification, are currently ongoing.
7 g
8 g
In this section, we described the tool chain used to embed the 9 g
Franca+ model into the Continuous Integration (CI) infras- 10
tructure, to enable agile workflows and change processes. We 11 s e r v i c e c o m p o n e n t RxSwinApp f
described the translation from the model all the way to the 12 p r o v i d e s RxSwinData a s R x S w i n D a t a P P o r t
binary running on the hardware. Additionally, we introduced 13 g
tools used to incorporate legacy systems and generate UML Listing 1. Definition of interface and service component in Franca+
model elements.
        </p>
        <p>In the next section, we will introduce a concrete example,
which illustrates our architecture development approach in
daily practice.</p>
      </sec>
    </sec>
    <sec id="sec-9">
      <title>VI. DEVELOPMENT EXAMPLE In the previous sections, we described modeling with Franca+ and how agile teams and workflows can benefit from this approach. In this section, we take a dedicated piece of</title>
      <p>To deploy RxSwinApp on a CPU and the interface
RxSwinData towards a communication protocol, e.g. SOME/IP,
additional parts of the model define the deployment of the
entities defined in listing 1. For example the deployment on a
CPU may include additional parameters which are required
to configure the Adaptive AUTOSAR middleware for this
application, e.g. regarding startup parameters or dependencies
towards other applications.</p>
      <sec id="sec-9-1">
        <title>C. Tool chain and software development for RxSwinApp</title>
        <p>
          The Franca+ model of RxSwinApp is stored in the overall
project git repository. We use Bazel [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] as build system and
to define a set of rules to compile the model into ARXML
and C++ as described in section V. The corresponding C++
source code, which implements method getRxSwin, is stored
in the same git repository, as well as all unit and component
tests to ensure quality of the software.
        </p>
        <p>Due to co-location of architecture model and source code
and embedding everything into the Bazel build system and
continuous integration, the agile workflows as described in
section II-B can now be pursued whenever requirements
are changing. Imagine for example a new requirement that
requests returning the RxSWIN as character string, to be
compatible with legacy testing environment. A feature team
breaking down the new requirement may come up with the
solution that introducing a second method returning a byte
array instead of UInt32 is the most feasible solution for this
use case. Due to model and code located in the same git
repository and following the same change process, they can
adapt the Franca+ model, extend C++ implementation and
add corresponding tests, all in a single pull request to be
validated by the continuous integration system.</p>
        <p>In this section, we have seen how Franca+ based
architecture modeling is pursued on a real-life example within our
project. Describing the software architecture with Franca+
enables feature teams to change the model in the same way
as the corresponding source code, which is a key prerequisite
to apply agile processes, workflows and tools.</p>
      </sec>
    </sec>
    <sec id="sec-10">
      <title>VII. CONCLUSION AND FUTURE WORK</title>
      <p>In this paper, we presented the requirements and a solution
for a software architecture description approach in an agile
development project. The solution included a Treat Architecture
like Code philosophy and our architecture tool chain, based on
an extended version of the publicly available Franca modeling
framework.</p>
      <p>Our Treat Architecture like Code approach facilitates feature
teams to perform their end-to-end responsibility, from writing
requirements, architecture descriptions, code, tests and
eventually bring the changes into the master of the repository, such
that the changes can be delivered. The approach enables a lean
and efficient way to model modular independent parts of the
architecture, by independent feature teams.</p>
      <p>As success story, we can see already in the repository
that our Franca+ based modeling approach has been directly
adopted in the development. More than 200 developers from
4 companies contributed to the Franca+ models in quite a
short time after releasing this approach. This is already a big
improvement compared to traditional centralized UML based
architecture modeling tools, where only some experts can edit
the models (due to impediments in knowledge, rights or
toollicenses), and a simple change request sometimes takes weeks
to introduce.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Broy</surname>
          </string-name>
          , “Challenges in automotive software engineering,”
          <source>in Proceedings of the 28th international conference on Software engineering. ACM</source>
          ,
          <year>2006</year>
          , pp.
          <fpage>33</fpage>
          -
          <lpage>42</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Fu</surname>
          </string-name>
          <article-title>¨rst, “Challenges in the design of automotive software</article-title>
          ,”
          <source>in Proceedings of the Conference on Design, Automation and Test in Europe. European Design and Automation Association</source>
          ,
          <year>2010</year>
          , pp.
          <fpage>256</fpage>
          -
          <lpage>258</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>W.</given-names>
            <surname>Vieweg</surname>
          </string-name>
          , Management in Komplexita¨t und Unsicherheit - Fu¨r agile Manager. Berlin Heidelberg New York: Springer-Verlag,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>K.</given-names>
            <surname>Ribel</surname>
          </string-name>
          and
          <string-name>
            <given-names>C.</given-names>
            <surname>Larman</surname>
          </string-name>
          , “LeSS Huge at BMW Group,” https://www.scrumalliance.org/ScrumRedesignDEVSite/media/pdfs/ Konstantin-Ribel-181008 - LeSS Adoption at BMW Group.pdf,
          <year>October 2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>S.</given-names>
            <surname>Fu</surname>
          </string-name>
          <article-title>¨rst, “Autosar the next generation-the Adaptive Platform,”</article-title>
          <source>in 3rd Workshop on Critical Automotive applications - Robustness and Safety (CARS@EDCC)</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>L.</given-names>
            <surname>Vo</surname>
          </string-name>
          <article-title>¨lker, “Some/ip-die middleware fu¨r ethernetbasierte kommunikation,” Hanser automotive networks</article-title>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M.</given-names>
            <surname>Bregenzer</surname>
          </string-name>
          , “
          <article-title>LeSS adoption at a bavarian car manufacturer</article-title>
          ,” https: //less.works/case-studies/bmw-group.html,
          <year>2018</year>
          , [Online; accessed 04- October-2019].
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>K.</given-names>
            <surname>Beck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Beedle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. Van</given-names>
            <surname>Bennekum</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Cockburn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Cunningham</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Fowler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Grenning</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Highsmith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Hunt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Jeffries</surname>
          </string-name>
          et al.,
          <article-title>“Manifesto for agile software development</article-title>
          ,”
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>E.</given-names>
            <surname>Woods</surname>
          </string-name>
          , “
          <article-title>Aligning architecture work with agile teams</article-title>
          ,
          <source>” IEEE Software</source>
          , vol.
          <volume>32</volume>
          , no.
          <issue>5</issue>
          , pp.
          <fpage>24</fpage>
          -
          <lpage>26</lpage>
          , Sep.
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Kugele</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Obergfell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Broy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Creighton</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Traub</surname>
          </string-name>
          , and W. Hopfensitz, “
          <article-title>On service-orientation for automotive software</article-title>
          ,
          <source>” in Software Architecture (ICSA)</source>
          ,
          <source>2017 IEEE International Conference on. IEEE</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>193</fpage>
          -
          <lpage>202</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>Object</given-names>
            <surname>Management</surname>
          </string-name>
          <article-title>Group (OMG), “Data-distribution-</article-title>
          <string-name>
            <surname>service</surname>
          </string-name>
          ,” http:// www.omg.org/spec/DDS.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Genivi</surname>
          </string-name>
          , “Franca framework,” https://github.com/franca/franca,
          <year>2019</year>
          , [Online; accessed 04-October-2019].
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>E.</given-names>
            <surname>Foundation</surname>
          </string-name>
          , “Eclipse Xtext,” https://www.eclipse.org/Xtext/,
          <year>2019</year>
          , [Online; accessed 03-November-2019].
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>itemis</surname>
            <given-names>AG</given-names>
          </string-name>
          , “Franca User Guide,” https://info.itemis.com/en/ franca-user-guide,
          <year>2018</year>
          , [Online; accessed 04-October-2019].
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>E.</given-names>
            <surname>Foundation</surname>
          </string-name>
          , “Eclipse Model Development Tools,” https://www. eclipse.org/modeling/mdt/?project=uml2/,
          <year>2019</year>
          , [Online; accessed 15- November-2019].
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <article-title>International Organization for Standardization (ISO</article-title>
          ),
          <source>“ISO 26262-8 - Road vehicles - Functional safety, Part</source>
          <volume>8</volume>
          :
          <string-name>
            <surname>Supporting</surname>
            <given-names>processes</given-names>
          </string-name>
          ,
          <source>” Technical Committee 22 (ISO/TC 22)</source>
          ,
          <source>Tech. Rep.</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17] “Regulation No 13
          <article-title>-H of the Economic Commission for Europe of the United Nations (UN/ECE) - Uniform provisions concerning the approval of passenger cars with regard to braking</article-title>
          ,” https://eur-lex. europa.eu/legal-content/EN/TXT/?uri=
          <source>CELEX:42015X1222(01)</source>
          ,
          <year>2015</year>
          , [Online; accessed 04-October-2019].
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <article-title>“Regulation No 79 of the Economic Commission for Europe of the United Nations (UN/ECE) - Uniform provisions concerning the approval of vehicles with regard to steering equipment</article-title>
          ,” https://eur-lex. europa.eu/legal-content/EN/TXT/?uri=
          <source>CELEX:42008X0527(01)</source>
          ,
          <year>2008</year>
          , [Online; accessed 04-October-2019].
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Google</surname>
          </string-name>
          , “
          <article-title>Bazel - a fast, scalable, multi-language and extensible build system</article-title>
          ,” https://bazel.build/,
          <year>2019</year>
          , [Online; accessed 04-October-2019].
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>