<!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 - Thales</title>
        <meta name="description" content="">
        <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 bg_indigo">
            <div class="container">
                <div class="row">
                    <div class="col-md-12 text-center">
                    	<div class="block wow fadeInUp" data-wow-delay=".3s">
                            <p><img src="images/logos/logo_thales_white.png" alt="Thales"></p>
                        </div>
                    </div>
                </div>
            </div>   
        </section><!--/#page-header-->
  
     	<section id="services">
            <div class="container">
            	<div class="row">
                    <div class="col-sm-12">
                        <p>Benefit from the experience of Thales on driving the <b>digital transformation of your engineering</b>, through implementing Model-Based Systems Engineering (MBSE) in your own organization.</p>
                        <p><a href="https://www.thalesgroup.com">Thales</a> is a world leader in mission-critical information systems for defense and security, aerospace and transportation. Thales is the creator of both Capella workbench and Arcadia methodology.</p>
                        <p>All the following services can be provided both in-site or in remote mode.</p>
                    </div>
                </div>
                
                <h3>Training</h3>
                    <div class="row">
                        <div class="col-sm-8">
                        <p>The 3-day Arcadia & Capella MBSE training sessions provide your engineers all the means to start developing their own models. </p>
                        <p>At the end of the training, participants are able to acknowledge the key points and the benefits of the Arcadia engineering method, and have put them in practice in a practical use case in Capella.</p> 
                        <p>The training covers:
                            <ul>
                                <li>Presentation of key principles and examples of application of the Arcadia MBSE method</li>
                                <li>Development of an architectural design model in Capella from scratch, covering Operational Analysis, System Needs, Logical and Physical Architectures and Product Breakdown Structures</li>
                                <li>Advanced topics according to participants’ interests</li>
                            </ul>
                        </p>
                        </div>
                        <div class="col-sm-4">
                            <img src="/capella/images/industry_consortium/thales-1.png" width="300px"/>
                        </div>
                </div>
                    
                <h3>Consulting</h3>
                <div class="row">
                    <div class="col-sm-8">
                    <p>The consulting services provided by Thales allows you to orient your digital transformation and ensure that it provides the most added value for your organization, by providing guidance and returns of experience on MBSE implementation.</p>
                    <p>Consulting covers all the support aiming at helping engineers implement MBSE practices in their own projects. This includes the definition of MBSE objectives and guidelines, support to the implementation of modelling in their own context, review of model-based architectures, among others.</p>
                    </div>
                    <div class="col-sm-4">
                        <img src="/capella/images/industry_consortium/thales-2.png" width="300px"/>
                    </div>
                </div>

                <h3>Support, Evolution & Maintenance</h3>
                <div class="row">
                    <div class="col-sm-8">
                    <p>Thales offers expertise on how to adapt Capella to your technical environment and on extending Capella to suit your own needs. This includes answering technical queries, fixing findings, and developing change requests on Capella.</p>
                    </div>
                    <div class="col-sm-4">
                        <img src="/capella/images/industry_consortium/thales-3.png" width="300px"/>
                    </div>
                </div>

                <div class="row text-center">
                    <h3>Contact us</h3>
                    <p><a href="mailto:capella-contact@thalesgroup.com"><span class="fa fa-envelope orange_txt"> </span> capella-contact@thalesgroup.com</a></p>
                    <p><a href="mailto:arcadia-contact@thalesgroup.com"><span class="fa fa-envelope orange_txt"> </span> arcadia-contact@thalesgroup.com</a></p>
                </div>
            </div>
        </section> <!-- #services -->
      
      	<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>
      
        <!--
        ==================================================
        Footer Section
        ================================================== -->
        <ng-include src="'angular/blocks/footer.html'"></ng-include>
        <script async src="js/googleAnalytics.js" ></script>
    </body>
</html>