<!DOCTYPE html>
<html class="no-js">
<head>
<!-- Basic Page Needs
        ================================================== -->
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="icon" type="image/png" href="images/favicon.ico">
<title>Capella MBSE Tool - Arcadia</title>
<meta name="description" content="Let yourself be guided with Arcadia, a comprehensive methodological and tool-supported model-based engineering guidance.">
<meta name="keywords" content="">
<meta name="author" content="">
<!-- Mobile Specific Metas
        ================================================== -->
<meta name="format-detection" content="telephone=no">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Template CSS Files
        ================================================== -->
<!-- Twitter Bootstrs CSS -->
<link rel="stylesheet" href="css/bootstrap.min.css">
<!-- animate css -->
<link rel="stylesheet" href="css/animate.css">
<link rel="stylesheet" href="css/jquery.fancybox.css">
<!-- template main css file -->
<link rel="stylesheet" href="css/main.css">
<!-- responsive css -->
<link rel="stylesheet" href="css/responsive.css">
<link rel="stylesheet" href="css/latofonts.css">
<script src="https://use.fontawesome.com/b51f77a16a.js"></script>
<!-- Cookie content -->
<link rel="stylesheet" type="text/css"
	href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" />
<script
	src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
<!-- Eclipse Foundation Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
		new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
		j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
		'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
		})(window,document,'script','dataLayer','GTM-5WLCZXC');</script>
<!-- End Google Tag Manager -->
<!-- Template Javascript Files
        ================================================== -->
<!-- Angular -->
<base href="/capella/">
<script src="js/angular-1.7.8.min.js"></script>
<script src="angular/capella.js"></script>
<!-- modernizr js -->
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
<!-- jquery -->
<script src="js/jquery-3.4.1.min.js"></script>
<!-- bootstrap js -->
<script src="js/bootstrap.min.js"></script>
<!-- wow js -->
<script src="js/wow.min.js"></script>
<script src="js/jquery.fancybox.js"></script>
<!-- template main js -->
<script src="js/main.js"></script>
<!-- display videos in fancybox -->
<script type="text/javascript">
            $(document).ready(function() {
                $(".various").fancybox({
                    maxWidth    : 800,
                    maxHeight   : 600,
                    fitToView   : false,
                    width       : '70%',
                    height      : '70%',
                    autoSize    : false,
                    closeClick  : false,
                    openEffect  : 'elastic',
                    closeEffect : 'none',
                    beforeLoad  : function(){
                        var url= $(this.element).attr("href");
                        url = url.replace(new RegExp("watch\\?v=", "i"), 'v/');
                        url += '?fs=1&autoplay=1';
                        this.href = url
                    }
                });
            });
        </script>
<script>
            $(document).ready(function(){
                $(".fancypdf").fancybox({
                    openEffect  : 'none',
                    closeEffect : 'none',
                    iframe : {
                        preload: false
                    }
                });
            });
        </script>
</head>
<body ng-app="capella" data-deferred-cloak>
	<!--
        ==================================================
        Header Section
        ================================================== -->
	<ng-include src="'angular/blocks/header.html'"></ng-include>
	<!--
        ==================================================
            Global Page Section Start
        ================================================== -->
	<section class="hero-area arcadia">
		<div class="container">
			<div class="row">
				<div class="col-md-12 text-center">
					<div class="block wow fadeInUp" data-wow-delay=".3s">
						<!-- Slider -->
						<section class="cd-intro">
							<h1 class="wow fadeInUp animated" data-wow-delay=".4s">Let
								yourself be guided with Arcadia</h1>
						</section>
						<!-- cd-intro -->
						<!-- /.slider -->
						<h2 class="wow fadeInUp animated" data-wow-delay=".6s">
							A comprehensive methodological and tool-supported<br>model-based
							engineering guidance<br>
						</h2>
					</div>
				</div>
			</div>
		</div>
	</section>
	<!--/#page-header-->
	<!--
        ==================================================
        Arcadia sheet
        ================================================== -->
		<ng-include src="'angular/blocks/arcadia_sheet.html'"></ng-include>
	<!-- #overview -->
 	<section id="book">
		<div class="container">
			<div class="row">
				<div class="col-md-9">
					<h2 class="title wow fadeInDown" data-wow-delay=".1s">Reference Book</h2>
					<h6 class="text-uppercase txt_lightest_grey txt_weight_300 wow fadeInLeft" data-wow-delay=".1s">Model-based System and Architecture Engineering with the Arcadia Method</h6>
					<br>
					<p class="wow fadeInDown" data-wow-delay=".1s">Arcadia is a system engineering method based on the use of
						models, with a focus on the collaborative definition, evaluation
						and exploitation of its architecture.</p>
					<p class="wow fadeInDown" data-wow-delay=".1s">This book describes the fundamentals of the method and its
						contribution to engineering issues such as requirements
						management, product line, system supervision, and integration,
						verification and validation (IVV). It provides a reference for the
						modeling language defined by Arcadia.</p>
					<p><a class="btn btn-default wow fadeInUp" data-wow-delay=".2s" href="https://www.elsevier.com/books/model-based-system-and-architecture-engineering-with-the-arcadia-method/voirin/978-1-78548-169-7" target="_blank">Read More</a></p>
				</div>
				<div class="col-md-3 wow fadeInLeft" data-wow-delay=".2s">
					<a href="https://www.elsevier.com/books/model-based-system-and-architecture-engineering-with-the-arcadia-method/voirin/978-1-78548-169-7" target="_blank"><img src="images/thumbs/thumb_book_jlvoirin.png"></a>
				</div>
			</div>
		</div>
	</section>
	<!--
        ==================================================
        All Diagrams - Intro Banner with Anchors
        ================================================== -->
	<section class="bg_indigo">
		<div class="container">
			<div class="row" id="anchors">
				<div class="col-md-12 text-center txt_white">
					<div class="block wow fadeInUp" data-wow-delay=".1s">
						<p>
							<a class="wow fadeInUp smooth-scroll" data-wow-delay=".1s"
								href="#arcadia-architecture" data-row="#arcadia-architecture">Architecture
								as prime engineering driver <i class="fa fa-arrow-circle-right"
								aria-hidden="true"></i>
							</a>
						</p>
						<p>
							<a class="wow fadeInUp smooth-scroll" data-wow-delay=".2s"
								href="#arcadia-mbse-method" data-row="#arcadia-mbse-method">Arcadia,
								a model-based engineering method <i
								class="fa fa-arrow-circle-right" aria-hidden="true"></i>
							</a>
						</p>
						<p>
							<a class="wow fadeInUp smooth-scroll" data-wow-delay=".3s"
								href="#arcadia-features" data-row="#arcadia-features">Noticeable
								features of Arcadia <i class="fa fa-arrow-circle-right"
								aria-hidden="true"></i>
							</a>
						</p>
						<p>
							<a class="wow fadeInUp smooth-scroll" data-wow-delay=".4s"
								href="#arcadia-customer-need-analysis"
								data-row="#arcadia-customer-need-analysis">Definition of the
								Problem - Customer Operational Need Analysis <i
								class="fa fa-arrow-circle-right" aria-hidden="true"></i>
							</a>
						</p>
						<p>
							<a class="wow fadeInUp smooth-scroll" data-wow-delay=".5s"
								href="#arcadia-system-need-analysis"
								data-row="#arcadia-system-need-analysis">Formalization of
								system requirements - System Need Analysis <i
								class="fa fa-arrow-circle-right" aria-hidden="true"></i>
							</a>
						</p>
						<p>
							<a class="wow fadeInUp smooth-scroll" data-wow-delay=".6s"
								href="#arcadia-logical-architecture"
								data-row="#arcadia-logical-architecture">Development of
								System Architectural Design - Logical Architecture (Notional
								Solution) <i class="fa fa-arrow-circle-right" aria-hidden="true"></i>
							</a>
						</p>
						<p>
							<a class="wow fadeInUp smooth-scroll" data-wow-delay=".7s"
								href="#arcadia-physical-architecture"
								data-row="#arcadia-physical-architecture">Development of
								System Architecture - Physical Architecture <i
								class="fa fa-arrow-circle-right" aria-hidden="true"></i>
							</a>
						</p>
						<p>
							<a class="wow fadeInUp smooth-scroll" data-wow-delay=".9s"
								href="#arcadia-components-requirements"
								data-row="#arcadia-components-requirements">Formalize
								Components Requirements - Contracts for Development and IVVQ <i
								class="fa fa-arrow-circle-right" aria-hidden="true"></i>
							</a>
						</p>
						<p>
							<a class="wow fadeInUp smooth-scroll" data-wow-delay=".9s"
								href="#arcadia-engineering" data-row="#arcadia-engineering">Co-Engineering,
								Sub-Contracting and Multi-Level Engineering <i
								class="fa fa-arrow-circle-right" aria-hidden="true"></i>
							</a>
						</p>
						<p>
							<a class="wow fadeInUp smooth-scroll" data-wow-delay=".9s"
								href="#arcadia-adoptation" data-row="#arcadia-adoptation">Adaptation
								of Arcadia to Dedicated Domains, Contexts, Etc. <i
								class="fa fa-arrow-circle-right" aria-hidden="true"></i>
							</a>
						</p>
						<p>
							<a class="wow fadeInUp" data-wow-delay=".9s"
								href="arcadia_capella_sysml_tool.html">Equivalences and
								Differences between SysML and Arcadia/Capella <i
								class="fa fa-arrow-circle-right" aria-hidden="true"></i>
							</a>
						</p>
					</div>
				</div>
			</div>
		</div>
	</section>
	<!--/#anchors-->
	<!--
        ==================================================
        Old content
        ================================================== -->
	<section id="service-page" class="arcadia-content">
		<div class="container">
			<div class="row">
				<p>Modern systems are subject to increasingly higher
					constraints regarding expected behavior and services, safety, security, performance, environment,
					human factors, etc. All these constraints are under the
					responsibility of different stakeholders, which need to be reconciled during the solution
					architectural design and development process.</p>
				<div id="arcadia-architecture"></div>
				<h3>Architecture as prime engineering driver</h3>
				<p>Architecture definition is a major part of engineering
					activities, and notably includes analyzing operational needs,
					structuring and decomposing the system, software, or hardware
					assets in order to</p>
				<ul>
					<li>Provide significant information for decision-makers and
						managers</li>
					<li>Ease the mastering of need, complexity, design and
						development</li>
					<li>Structure engineering in a well-defined, justified,
						technical frame</li>
					<li>Guide designers and developers to respect the product
						definition drivers.</li>
				</ul>
				<p class="text-center"><a rel="gallery" class="fancybox"
					href="images/arcadia/architecture_benefits.png"><img
					alt="Architecture benefits"
					src="images/arcadia/architecture_benefits.png" width="50%"></a></p><br>
				<br>
				<div id="arcadia-mbse-method"></div>
				<h3>Arcadia, a model-based engineering method</h3>
				<p></p>
				<p>
					Arcadia is a <b>model-based engineering method for systems,
						hardware and software architectural design</b>. It has been developed
					by Thales between 2005 and 2010 through an iterative process
					involving operational architects from all the Thales business
					domains. Since 2018, Arcadia is registered as <a href="https://norminfo.afnor.org/norme/XP%20Z67-140/technologies-de-linformation-arcadia-methode-pour-lingenierie-des-systemes-soutenue-par-son-langage-de-modelisation/123795" target = "_blank">Z67-140 standard</a> by AFNOR, the French national organization for standardization.
				</p>
				<p>Arcadia promotes a viewpoint-driven approach (as described in
					<a href="http://www.iso-architecture.org/42010" target="_blank">ISO/IEC 42010</a>) and emphasizes a clear distinction between need and
					solution.</p>
				<p class="text-center"><a rel="gallery" class="fancybox"
					href="images/arcadia/triptique.png"><img
					alt="Triptique" src="images/arcadia/triptique.png" width="50%"></a></p>
				<br> <br>
				<p>Perspectives and activities of the method have been defined in order to comply with a
					few Golden Rules:</p>
				<ul>
					<li>Besides requirement engineering, drive an <b>operational and functional/nonfunctional
							need analysis</b>, describing final user expectations, usage
						conditions, and realistic integration, verification and validation conditions
					</li>
					<li>Consider engineering through three mandatory interrelated
						activities, at the same level of importance:
						<ul>
							<li>Need analysis and modelling</li>
							<li>Architecture building and validation</li>
							<li>Requirements engineering</li>
						</ul>
					</li>
					<li>Check requirements against an <b>architectural design
							model</b> (early architecture) for robustness and feasibility
					</li>
					<li>Structure the system/hardware/software and build a <b>logical
							architecture</b>, by searching for the best <b>compromise between
							design drivers, (non-functional) constraints and viewpoints</b>. Each
						viewpoint deals with a specific concern such as functional
						consistency, interfaces, performances, real time, safety,
						security, integration, reuse, cost, risk, schedule, and the ease
						of adaptation (e.g. to changing requirements)
					</li>
					<li>Secure development and IVVQ through a <b>physical
							architecture</b> which deals with technical and development issues,
						favoring separation of concerns, efficient and safe component
						interaction (e.g. layered architecture, generic behavior and
						interaction patterns, component model, etc.)
					</li>
				</ul>
				<p class="text-center"><a rel="gallery" class="fancybox"
					href="images/arcadia/phases_arcadia.png"><img
					alt="Phases" src="images/arcadia/phases_arcadia.png" width="50%"></a></p><br>
				<br>
				<div id="arcadia-features"></div>
				<h3>Noticeable features of Arcadia</h3>
				<br>
				<ul>
					<li>Models supporting enterprise-wide collaboration and
						co-engineering
						<ul>
							<li>An Eclipse Capella&trade; model is built for each Arcadia engineering
								phase. All of these models are articulated through model
								transformation, and related by justification links; they are
								processed as a whole for impact analysis, notably in case of
								required evolutions.</li>
							<li>Collaboration with engineering specialties is supported
								by modelled engineering viewpoints to formalize constraints and
								to evaluate architecture adequacy with each of them</li>
							<li>Collaboration with customer and subsystems engineering
								relies on co-engineered models (e.g. physical architecture),
								automatic initialization of need model for sub-systems, and
								impact analysis means between requirements and models of
								different engineering levels.</li>
							<li>Integration, verification, validation and qualification
								(IVVQ) are driven by user capabilities, functional chains and
								scenarios in the model, rather than by textual requirements</li>
							<li>Elaboration of product line variabilities and
								configurations is optimized and assisted based on operational
								market segmentation, commercial portfolio contents and
								architecture constraints/adaptations to product policy, all
								described in the model.</li>
						</ul>
					</li>
					<li>Tailored for architectural design
						<ul>
							<li>A domain-specific language (DSL) was preferred in order
								to ease appropriation by all stakeholders, usually not familiar
								with general-purpose, generic languages such as UML or SysML.</li>
						</ul>
					</li>
					<li>Dealing with complexity and size
						<ul>
							<li>Abstraction levels are in the DNA of Arcadia. Capella
								advanced mechanisms have been developed to mask and confine
								complexity, deal with model maintenance, large-scale modelling,
								model evolution and reuse.</li>
						</ul>
					</li>
					<li>Field-proven in real industrial situations
						<ul>
							<li>Arcadia is currently applied in various domains and organizations, in many countries, on very large or small projects, by
								thousands of users. A continuous challenging, improvement and
								adaptation of both the method and its supporting workbench has
								favored a very fast dissemination.</li>
						</ul>
					</li>
					<li>Open to domain-specific added value</li>
					<li>Adapted to several lifecycles and work sharing schemes</li>
				</ul>
				<p>Next paragraphs give a first description of major arcadia perspectives, for a given engineering level (system, sub-system, software or hardware part…).</p>
				<br>
				<div id="arcadia-customer-need-analysis"></div>
				<h3>Definition of the Problem - Customer Operational Need
					Analysis</h3>
				<p>
					The first perspective focuses on analyzing the customer needs and goals,
					expected missions and activities, far beyond system requirements.
					This analysis aims at ensuring <b>adequate system definition
						with regard to its real operational use and IVVQ conditions</b>.
				</p>
				<p>Outputs of this engineering phase mainly consist of an
					“operational architecture” which describes and structures the need
					in terms of actors/users, their operational capabilities and
					activities (including operational use scenarios with dimensioning
					parameters, and operational constraints such as safety, security,
					lifecycle, etc.).</p>
				<p>Watch the video below, illustrating this architecture level with a commented example: the level-crossing traffic control.</p>
				<div class="row">
	                <div class="col-md-12 text-center">
						<p><a class="fancybox" href="https://www.youtube.com/embed/TawT_G9DNNc" data-fancybox-type="iframe"><img src="images/arcadia/mockups/arcadia-customer-operational-need-analysis.png" alt="" /></a></p>
					</div>
                </div>
				<div id="arcadia-system-need-analysis"></div>
				<h3>Formalization of system requirements - System Need Analysis</h3>
				<p>
					The second perspective focuses on the <b>system itself</b>, in order to
					define <b>how it can satisfy the former operational need</b>, along
					with its expected behavior and qualities. The following elements
					are created during this step: Functions (or services) to be supported and related
					exchanges, non-functional constraints (safety, security, etc.);
					performance allocated to system boundary; role sharing and
					interactions between system and operators; scenarios of usage, etc.
				</p>
				<p>
					The main goal at this stage is to <b>check the feasibility of
						customer requirements</b> (cost, schedule, technology readiness, etc.)
					and if necessary, to provide means to renegotiate their content.
					The functional need analysis can be completed by an initial system
					architectural design model in order to examine requirements against
					this architecture and evaluate their cost and consistency.
				</p>
				<p>Outputs of this engineering phase mainly consist of system
					functional need descriptions (functions, functional chains,
					scenarios), interoperability and interaction with the users and
					external systems (functions, exchanges plus non-functional
					constraints), and system requirements.</p>
				<p>
					Note that these two phases, which constitute the first part of
					architecture building, <b>"specify" the subsequent design</b>, and
					therefore should be approved/validated with the Customer.
				</p>
				<p>Watch the video below, illustrating this architecture level with a commented example: the level-crossing traffic control.</p>
				<div class="row">
	                <div class="col-md-12 text-center">
						<p><a class="fancybox" href="https://www.youtube.com/embed/UESXFZFbi5Q" data-fancybox-type="iframe"><img src="images/arcadia/mockups/arcadia-system-need-analysis.png" alt="" /></a></p>
					</div>
                </div>
				<div id="arcadia-logical-architecture"></div>
				<h3>Definition of solution architecture - Logical
					Architecture (Notional Solution)</h3>
				<p>
					This third perspective aims at building a
					<b>coarse-grained component breakdown of the system</b> carrying
					most important engineering decisions, and which is unlikely to be
					challenged later in the development process. Starting from previous
					functional and non-functional need analysis, a first definition of
					the solution expected behavior is performed (using functions,
					interfaces, data flows, behaviors…). In order to embed these
					functions, one or several decompositions of the system into logical
					components are to be built, each function being allocated to one
					component. These logical components will later tend to be the basic
					decomposition for development/sub-contracting, integration, reuse,
					product and configuration management item definitions (but other
					criteria will be taken into account to define the boundaries for
					these items)
				</p>
				<p class="text-center"><a rel="gallery" class="fancybox"
					href="images/arcadia/composant-functions.png"><img
					alt="Functions"
					src="images/arcadia/composant-functions.png" width="50%"></a></p> <br>
				<br>
				<p>
					The building process has to take into account <b>architectural
						drivers and priorities, viewpoints and associated design rules</b>,
					etc. For the component breakdown to be stable in further engineering
					phases, all major (non-functional) constraints (safety, security,
					performance, IVV, cost, non-technical, Etc.) are taken into account
					and compared to each other so as to find the best trade-off. This
					method is described as "viewpoint-driven", where viewpoints
					formalize the way these constraints impact the system architecture.
				</p>
				<p>Outputs of this engineering phase consist of the selected
					logical architecture which is described by a functional
					description, components and justified interfaces definition,
					scenarios, modes and states, along with the formalization of all
					viewpoints and the way they are taken into account in the
					components design.</p>
				<p>Since the architecture has to be validated against the need
					analysis, links with requirements and operational scenarios are
					also to be produced.</p>
				<p class="text-center"><a rel="gallery" class="fancybox"
					href="images/arcadia/arcadia_viewpoints.png"><img
					alt="Viewpoints"
					src="images/arcadia/arcadia_viewpoints.png" width="50%"></a></p><br>
				<p>Watch the video below, illustrating this architecture level with a commented example: the level-crossing traffic control.</p>
				<div class="row">
	                <div class="col-md-12 text-center">
						<p><a class="fancybox" href="https://www.youtube.com/embed/4jSoVNb4gaQ" data-fancybox-type="iframe"><img src="images/arcadia/mockups/arcadia-logical-architecture.png" alt="" /></a></p>
					</div>
                </div>
				<br>
				<div id="arcadia-physical-architecture"></div>
				<h3>Definition of solution architecture - Physical Architecture</h3>
				<p>
					The fourth perspective has the same intent as the logical architecture
					building, except that it defines the “final” architecture of the
					system at this level of engineering. Once this is done the model is
					considered <b>ready to develop</b> (by "lower" engineering levels).
					Therefore, it introduces further details and design decisions,
					rationalization, architectural patterns, new technical services and
					behavioral components, and makes the logical architecture vision
					evolve according to implementation, technical and technological
					constraints and choices. It notably introduces resource components
					that will embed former behavioral components. The same
					viewpoint-driven approach as for logical architecture building is
					used.
				</p>
				<p>Outputs of this engineering phase consist of the selected
					physical architecture which includes components to be produced,
					formalization of all viewpoints and the way they are taken into
					account in the components design. Links with requirements and
					operational scenarios are also produced.</p>
				<p>Watch the video below, illustrating this architecture level with a commented example: the level-crossing traffic control.</p>
				<div class="row">
	                <div class="col-md-12 text-center">
						<p><a class="fancybox" href="https://www.youtube.com/embed/1EEcDtLAiXk" data-fancybox-type="iframe"><img src="images/arcadia/mockups/arcadia-physical-architecture.png" alt="" /></a></p>
					</div>
                </div>
				<div id="arcadia-components-requirements"></div>
				<h3>Building Strategy - Contracts for
					Development and IVVQ</h3>
				<p>The fifth and last perspective is a contribution to an EPBS
					(End-Product Breakdown Structure), and models describing
					specification of each sub-system, hardware or software component;
					it takes benefits from the former architectural work, to formalize
					the component requirements definition and prepare a secured IVVQ.</p>
				<p>All previous hypotheses and imposed constraints associated to
					the system architecture and components are summarized and checked
					here.</p>
				<p>
					Outputs from this engineering phase are mainly new models describing <b>component
						integration contracts</b>, collecting all necessary expected properties
					for each component to be developed.
				</p>
				<div id="arcadia-engineering"></div>
				<h3>Co-Engineering, Sub-Contracting and Multi-Level Engineering</h3>
				<p>
					The physical architecture is the preferred place for <b>co-engineering
						between systems, software, and hardware stakeholders</b>.
				</p>
				<p class="text-center"><a rel="gallery" class="fancybox"
					href="images/arcadia/coengineering-and-subcontracting.png"><img
					alt="Coengineering"
					src="images/arcadia/coengineering-and-subcontracting.png"
					width="50%"></a></p><br> <br>
				<p>
					Arcadia can be applied in a <b>recursive way at each level of
						system breakdown</b>, so that a subsystem of the current system of
					interest becomes the system at the next level of interest, until
					single discipline subsystems or procurement items or COTS are
					identified.
				</p>
				<p>The physical architecture at a given level of interest
					defines the components to be developed at the level above,
					according to the corresponding component integration contract.
					Level "n" need analysis is restricted to each component scope and
					neighborhood, in order to define its IVVQ context while preserving
					Intellectual Property constraints.</p>
				<p class="text-center"><a rel="gallery" class="fancybox"
					href="images/arcadia/multi-level.png"><img
					alt="Multi-level" src="images/arcadia/multi-level.png" width="50%" /></a></p>
				<br> <br>
				<div id="arcadia-adoptation"></div>
				<h3>Adaptation of Arcadia to Dedicated Domains, Contexts, Etc.</h3>
				<p>
					Beyond the transverse, common architectural design work, each
					organization, in the field of its own business, constraints and
					know-how, should <b>tailor the method steps by adapting them to
						their own domains, products and programs</b>. This includes:
				</p>
				<ul>
					<li>Definition of a reference architecture (including
						architecture drivers) for each key product and software element</li>
					<li>Definition of appropriate viewpoints adapted to the
						domain, product and architecture</li>
					<li>Definition of complementary dedicated engineering rules</li>
					<li>Selection of relevant architectural patterns for the
						domain, product, and technologies considered</li>
					<li>Setting up of models, based on the reference architecture
						and viewpoints, and basis for simulation, early validation,
						automation of the design process (key for productivity gains)</li>
					<li>Definition of adjustment rules for each of its contexts</li>
					<li>Dissemination in the engineering teams (training,
						coaching)...</li>
				</ul>
				<h3>Adaptation to different Lifecycles</h3>
				<p>
					The recommended method described in this document takes best
					benefit from a <b>top-down approach</b>:
				</p>
				<ul>
					<li>Starting from operational and system need to define and validate
						requirements</li>
					<li>Building a "technology neutral" logical architecture
						dealing with non-functional constraints</li>
					<li>Then specifying technical functions and services of a
						physical architecture to implement it in the best way</li>
				</ul>
				<p>Yet many constraints which need to be taken into account
					arise from the industrial context:</p>
				<ul>
					<li>Technical or technological limits</li>
					<li>Available technology, COTS</li>
					<li>Existing legacy to be reused</li>
					<li>Product policy imposing the use of given hardware boards,
						software components...</li>
					<li>Industrial constraints such as available skills, the
						necessity to sub-contract, and export control...</li>
				</ul>
				<p>
					This is the reason why Arcadia can be applied according to several
					lifecycles and work sharing schemes. Great care has been taken in
					the method, the language and the Capella workbench to not impose one
					single engineering path (e.g. top-down) but to be adaptable to many
					lifecycles: <b>Incremental, iterative, top-down, bottom-up,
						middle-out</b>, Etc.. The method is inherently <b>iterative</b>.
				</p>
				<p>Examples of iterations or non-linear courses are:</p>
				<ul>
					<li>Need analysis starting from requirements, due to a lack of
						operational knowledge (a kind of reverse engineering of
						operational need)</li>
					<li>Requirements analysis anticipating logical or even
						physical architecture, to check for feasibility by
						defining/confronting to an early architecture</li>
					<li>Logical architecture anticipating (part of) physical
						architecture, e.g. to check for performance issues</li>
					<li>Physical architecture adapting to subcontracting
						constraints, or built from assembling reusable, existing
						components</li>
					<li>Components contract definition iterating on physical
						architecture to secure integration and refine contract parameters</li>
				</ul>
			</div>
		</div>
	</section>
	<div id="back-to-top" data-spy="affix" data-offset-top="100"
		class="back-to-top hidden-xs hidden-sm affix-top">
		<button class="btn btn-default" title="Back to Top">
			<i class="fa fa-caret-up"></i>
		</button>
	</div>
	<script type="text/javascript">
	// Back to top
		jQuery('#back-to-top').on('click', function() {
			jQuery("html, body").animate({
				scrollTop : 0
			}, 500);
			return false;
		});
	</script>
	<!--
        ==================================================
        Call To Action Section Start
        ================================================== -->
	<ng-include src="'angular/blocks/call2action.html'"></ng-include>
	<!--
        ==================================================
        Footer Section
        ================================================== -->
	<ng-include src="'angular/blocks/footer.html'"></ng-include>
	<script async src="js/googleAnalytics.js"></script>
</body>
</html>