<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>0717-5000</journal-id>
<journal-title><![CDATA[CLEI Electronic Journal]]></journal-title>
<abbrev-journal-title><![CDATA[CLEIej]]></abbrev-journal-title>
<issn>0717-5000</issn>
<publisher>
<publisher-name><![CDATA[Centro Latinoamericano de Estudios en Informática]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S0717-50002012000200009</article-id>
<title-group>
<article-title xml:lang="en"><![CDATA[The ProLiCES Approach to Develop Product Lines for Safety-Critical Embedded Systems and its Application to the Unmanned Aerial Vehicles Domain]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Vaccare Braga]]></surname>
<given-names><![CDATA[Rosana T]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Castelo Branco]]></surname>
<given-names><![CDATA[Kalinka R. L. J]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Trindade Júnior]]></surname>
<given-names><![CDATA[Onofre]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Masiero]]></surname>
<given-names><![CDATA[Paulo C]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Neris]]></surname>
<given-names><![CDATA[Luciano O]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Becker]]></surname>
<given-names><![CDATA[Martin]]></given-names>
</name>
<xref ref-type="aff" rid="A03"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidade de São Paulo  ]]></institution>
<addr-line><![CDATA[São Carlos ]]></addr-line>
<country>Brazil</country>
</aff>
<aff id="A02">
<institution><![CDATA[,AGX Tecnologia Ltda  ]]></institution>
<addr-line><![CDATA[São Carlos ]]></addr-line>
<country>Brazil</country>
</aff>
<aff id="A03">
<institution><![CDATA[,AGX Tecnologia Ltda  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
<country>Germany</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>08</month>
<year>2012</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>08</month>
<year>2012</year>
</pub-date>
<volume>15</volume>
<numero>2</numero>
<fpage>2</fpage>
<lpage>2</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.edu.uy/scielo.php?script=sci_arttext&amp;pid=S0717-50002012000200009&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.edu.uy/scielo.php?script=sci_abstract&amp;pid=S0717-50002012000200009&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.edu.uy/scielo.php?script=sci_pdf&amp;pid=S0717-50002012000200009&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="en"><p><![CDATA[Abstract This paper presents ProLiCES, an approach for the development of safety-critical embedded applications and its usage to develop a product line for unmanned aerial vehicles (UAV). The motivation of ProLiCES emerged after the development of Tiriba, a family of small, electric-powered unmanned aircraft. Most software artifacts produced for Tiriba required modifications to be reused in a more complex project, the SARVANT, which has to accommodate several new features that increase the variability of the end products. In the Tiriba project, a methodological approach, named SAFE-CRITES, was defined and used. Special care was taken about software reuse, based on Model Driven Development and automatic code generation. The certification process, based on the DO-178B standard, was also taken into account. ProLiCEs extends SAFE-CRITES to integrate Product Line Engineering into the development process, aiming better software reuse. This extension was done by creating a second parallel path to the process, dealing with the Product Line Domain Engineering. ProLiCES is being currently used in the SARVANT project, which will deliver a much more complex UAV and is estimated to be deployed in two years.]]></p></abstract>
<abstract abstract-type="short" xml:lang="pt"><p><![CDATA[Portuguese abstract: Este artigo apresenta a ProLiCES, uma abordagem para o desenvolvimento de sistemas embarcados críticos, bem como seu uso no desenvolvimento de uma linha de produtos para veículos aéreos não tripulados (VANT). A motivação para a ProLiCES surgiu em decorrência do desenvolvimento do Tiriba, que é uma família de aeronaves não tripuladas de pequeno porte, movidas a eletricidade. A maioria dos artefatos produzidos para o Tiriba exigiram modificações para torná-los reutilizáveis em um projeto mais complexo, o SarVANT, que terá que acomodar várias novas features que incrementam as variabilidades dos produtos finais. No projeto Tiriba, uma abordagem metodológica chamada SAFE-CRITES tinha sido desenvolvida e testada. Atenção especial já havia sido dispensada ao aspecto de reúso de software, baseado em desenvolvimento dirigido a modelos e geração automática de código. O processo de certificação, baseado no padrão DO-178B, também tem sido uma preocupação. A ProLiCEs estende a SAFE-CRITES para integrar a engenharia de linha de produtos ao processo de desenvolvimento, com o objetivo de aumentar o reúso de software. A extensão proposta neste artigo foi realizada criando-se atividades adicionais no processo para lidar com a engenharia de domínios da linha de produtos.A ProLiCES está sendo utilizada atualmente no projeto SARVant, no qual VANTs de maior complexidade serão produzidos, com estimativa de entrega em dois anos.]]></p></abstract>
<kwd-group>
<kwd lng="en"><![CDATA[Software Product Line]]></kwd>
<kwd lng="en"><![CDATA[Unmanned Aerial Vehicles]]></kwd>
<kwd lng="en"><![CDATA[Safety-Critical Systems]]></kwd>
<kwd lng="en"><![CDATA[Certification]]></kwd>
<kwd lng="pt"><![CDATA[Linha de Produto de Software]]></kwd>
<kwd lng="pt"><![CDATA[Veículos Aéreos Não Tripulados]]></kwd>
<kwd lng="pt"><![CDATA[Sistemas Críticos]]></kwd>
<kwd lng="pt"><![CDATA[Certificação]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <div class="maketitle">                                                                                                                                                                                                                                                                                                                                                                          <b><font face="Verdana" size="4">The ProLiCES Approach to Develop Product Lines for Safety-Critical Embedded Systems and its Application to the Unmanned Aerial Vehicles Domain</font></b>    <div class="author">    <font face="Verdana" size="2"> <span class="cmbx-12">Rosana T. Vaccare Braga</span>     <br>           <span class="cmbx-12">Kalinka R. L. J. Castelo Branco</span>     <br>                <span class="cmbx-12">Onofre Trindade J&uacute;nior</span>     <br>                   <span class="cmbx-12">Paulo C. Masiero</span>     <br>   <span class="cmr-12">Instituto de Ci&ecirc;ncias Matem&aacute;ticas e de Computa&ccedil;&atilde;o</span>     <br>                <span class="cmr-12">Universidade de S&atilde;o Paulo</span>     <br>                 <span class="cmr-12">S&atilde;o Carlos &ndash; SP &ndash; Brazil</span>     <br>         <span class="cmti-12"><a href="mailto:rtvb@icmc.usp.br">rtvb</a>,<a href="mailto:kalinka@icmc.usp.br">kalinka</a>,<a href="mailto:otjunior@icmc.usp.br">otjunior</a>,<a href="mailto:masiero@icmc.usp.br">masiero</a>@icmc.usp.br</span>    <br>       ]]></body>
<body><![CDATA[<br>                    <span class="cmbx-12">Luciano O. Neris</span>     <br>     <span class="cmr-12">AGX Tecnologia Ltda &ndash; S&atilde;o Carlos &ndash; SP &ndash; Brazil</span>     <br>                 <span class="cmti-12"><a href="mailto:luciano.neris@agx.com.br">luciano.neris@agx.com.br</a></span>    <br>       <br>                     <span class="cmbx-12">Martin Becker</span>     <br>       <span class="cmr-12">Fraunhofer IESE &ndash; Kaiserslautern &ndash; Germany</span>     <br>             <span class="cmti-12"><a href="mailto:martin.becker@iese.fraunhofer.de">martin.becker@iese.fraunhofer.de</a> </span>   </font></div>  <font face="Verdana" size="2">      <br>   </font>       <div class="date"></div>      </div>           <div class="abstract">     ]]></body>
<body><![CDATA[<div class="center"> <font face="Verdana" size="2">     <br>  </font>      <p>                                                                                                                                                                                     </p>      <div class="minipage">     <div class="center"> <font face="Verdana" size="2">     <br>  </font>      <p> </p>      <p><font face="Verdana" size="2"><span class="cmbx-10">Abstract</span></font></p>  </div>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">This paper presents ProLiCES, an approach for the development of safety-critical embedded applications and its usage to develop a product line for unmanned aerial vehicles (UAV). The motivation of ProLiCES emerged after the development of Tiriba, a family of small, electric-powered unmanned aircraft. Most software artifacts produced for Tiriba required modifications to be reused in a more complex project, the SARVANT, which has to accommodate several new features that increase the variability of the end products. In the Tiriba project, a methodological approach, named SAFE-CRITES, was defined and used. Special care was taken about software reuse, based on Model Driven Development and automatic code generation. The certification process, based on the DO-178B standard, was also taken into account. ProLiCEs extends SAFE-CRITES to integrate Product Line Engineering into the development process, aiming better software reuse. This extension was done by creating a second parallel path to the process, dealing with the Product Line Domain Engineering. ProLiCES is being currently used in the SARVANT project, which will deliver a much more complex UAV and is estimated to be deployed in two years.&nbsp;</font></p>      ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2">Portuguese abstract:&nbsp;</font></p>      <p><font face="Verdana" size="2">Este artigo apresenta a ProLiCES, uma abordagem para o desenvolvimento de sistemas embarcados cr&iacute;ticos, bem como seu uso no desenvolvimento de uma linha de produtos para ve&iacute;culos a&eacute;reos n&atilde;o tripulados (VANT). A motiva&ccedil;&atilde;o para a ProLiCES surgiu em decorr&ecirc;ncia do desenvolvimento do Tiriba, que &eacute; uma fam&iacute;lia de aeronaves n&atilde;o tripuladas de pequeno porte, movidas a eletricidade. A maioria dos artefatos produzidos para o Tiriba exigiram modifica&ccedil;&otilde;es para torn&aacute;-los reutiliz&aacute;veis em um projeto mais complexo, o SarVANT, que ter&aacute; que acomodar v&aacute;rias novas features que incrementam as variabilidades dos produtos finais. No projeto Tiriba, uma abordagem metodol&oacute;gica chamada SAFE-CRITES tinha sido desenvolvida e testada. Aten&ccedil;&atilde;o especial j&aacute; havia sido dispensada ao aspecto de re&uacute;so de software, baseado em desenvolvimento dirigido a modelos e gera&ccedil;&atilde;o autom&aacute;tica de c&oacute;digo. O processo de certifica&ccedil;&atilde;o, baseado no padr&atilde;o DO-178B, tamb&eacute;m tem sido uma preocupa&ccedil;&atilde;o. A ProLiCEs estende a SAFE-CRITES para integrar a engenharia de linha de produtos ao processo de desenvolvimento, com o objetivo de aumentar o re&uacute;so de software. A extens&atilde;o proposta neste artigo foi realizada criando-se atividades adicionais no processo para lidar com a engenharia de dom&iacute;nios da linha de produtos.A ProLiCES est&aacute; sendo utilizada atualmente no projeto SARVant, no qual VANTs de maior complexidade ser&atilde;o produzidos, com estimativa de entrega em dois anos.</font></p>  </div>  </div>   </div>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2"><span class="cmbx-10">Keywords: </span>Software Product Line, Unmanned Aerial Vehicles, Safety-Critical Systems, Certification </font> </p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2"><span class="cmbx-10">Portuguese Keywords:</span> Linha de Produto de Software, Ve&iacute;culos A&eacute;reos N&atilde;o Tripulados, Sistemas Cr&iacute;ticos, Certifica&ccedil;&atilde;o&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Received 2011-12-15, Revised 2012-05-16, Accepted 2012-05-16 </font>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">1   </span> <a id="x1-10001"></a>Introduction</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">Embedded systems are computing systems that are part of a larger system. They provide a predefined set of tasks, normally dedicated to a particular real time application, and present special requirements. In fact, they typically provide real-time monitoring and control for an entire system. These systems are considered to be safety-critical when failure events can lead to human lives losses or high valued asset losses. In some applications, such as in aviation, safety-critical embedded systems must present failure rates as low as a serious fault every 10<img src="/img/revistas/cleiej/v15n2/2a090x.png" alt="5  " class="math"> to 10<img src="/img/revistas/cleiej/v15n2/2a091x.png" alt="9  " class="math"> hours of operation.&nbsp;</font></p>      ]]></body>
<body><![CDATA[<p>   <font face="Verdana" size="2">In today&rsquo;s world, general-purpose computer systems (aka desktops, notebooks, etc.) are heavily outnumbered by embedded systems. Almost any household or automotive equipment includes an embedded system, making these systems economically much more important than general-purpose systems. The firmware, ie, the software part of an embedded system, is also costly. Normally costing US$ 15-30 per line of code, in defense systems this cost is about US$100 <span class="cite">(<a href="#c1">1</a>)</span><a name="c1."></a>.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">The role of certification in the embedded systems domain should not be underestimated, principally for safety-critical embedded applications. Without certification under adequate standards, an embedded system product cannot reach a specific market. This is an important, but costly process. In highly critical applications, such as the space shuttle, this cost can reach US$1000 per line of code. A simple application in this class with 1000 lines of code can cost a million dollars from project commencement to delivery <span class="cite">(<a href="#c1">1</a>)</span>.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Being costly, the software development process deserves special attention. Many methodological approaches have been proposed for the development of general use applications, but only a few of them focuses on the development of embedded systems software. This paper proposes an approach that is heavily based on mechanisms for software reuse such as MDD (Model Driven Development), SPL (Software Product Line), and automatic code generation in the embedded system domain. The main goal is the reduction on the overhead costs imposed on the development of safety-critical embedded systems against the development costs of general use applications. The proposed approach is especially important in the avionics domain, in particular for unmanned aircrafts, which are complex safety-critical embedded systems. It is worth highlighting that this work corresponds to an extended version of a work presented before <span class="cite">(<a href="#c2">2</a>)<a name="c2."></a></span>, containing more details about several process activities, including certification-related activities, as well as presenting a few more examples during the case study.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">The remaining of this paper is organized as follows: Definitions and Related work are found in Section <a href="#x1-20002">2</a>; Previous work on which ProLiCES is based, the Tiriba project and SAFE-CRITES, appear in Section <a href="#x1-50003">3</a>. ProLiCES is described in Section <a href="#x1-80004">4</a>. Section <a href="#x1-140005">5</a> presents the preliminary results from the use of ProLiCES in a very complex unmanned aircraft system, the SARVANT Project. Finally, the section <a href="#x1-170006">6</a> presents the conclusions of this work.&nbsp;</font></p>      <p>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">2   </span> <a id="x1-20002"></a>Background</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">2.1   </span> <a id="x1-30002.1"></a>Definitions</font></p>   <font face="Verdana" size="2">       <br>  </font>      ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2">This paper proposes an approach for the development of complex embedded systems. The authors define a &ldquo;complex embedded system&rdquo; as the class of systems that present at least four of the following features: 1) multiprocessor or multi-core; 2) 10k+ lines of code (without comment lines); 3) multi-language; 4)RTOS based; 5) 10+ different types of I/O communication; and 6) Critical nature.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Unmanned Aerial Vehicles (UAV)s are aerial vehicles that do not need a human operator and, therefore, they can fly autonomously or be piloted remotely. Unmanned Aircraft Systems (UAS) include the aircraft and all associated elements such as the payload, the ground control station, and communications links <span class="cite">(<a href="#c3">3</a>)</span>.<a name="c3."></a>&nbsp;</font></p>      <p>   <font face="Verdana" size="2">A UAS is a typical application of a complex safety-critical embedded system. The term is adopted by both the FAA (Federal Aviation Administration) and the international academic community. A UAS can operate for a long period of time without human pilot intervention. There are different types of UAS presenting different capabilities. Some aircrafts, for example, can fly autonomously following a pre-programmed flight path, while others fly receiving commands from pilot-operated ground stations.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">An SPL sounds to be a very useful technique in this context. SPL is a set of software systems that share common and managed features and fulfills requirements of a particular market segment <span class="cite">(<a href="#c4">4</a>)<a name="c4."></a></span>. A feature is a product characteristic that both customers and developers consider important to describe the product and to differentiate one product from another <span class="cite">(<a href="#c5">5</a>)<a name="c5."></a></span>. An SPL is developed from a common set of core assets in a systematic manner <span class="cite">(<a href="#c4">4</a>)</span>. It can be developed from three different adoption perspectives <span class="cite">(<a href="#c6">6</a>)</span><a name="c6."></a>: proactive, where there is not an existing product to be analysed, so prospective investigation needs to be done to look ahead and figure out the features that would be relevant to compose the SPL; reactive, which starts with one existing product, and then evolution is done iteratively, according to customer needs or market issues; and extractive, where the SPL is extracted by analysing two or more exiting products.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Model Driven Development (MDD) is an approach for software development that focuses the importance of models in the software life cycle, considering them part of the final product <span class="cite">(<a href="#c7">7</a>)</span><a name="c7."></a>. The key idea is to keep models as simple as possible. Most of the complexity is dealt with by transformations that can be done automatically. This helps increasing the quality of the final product, as well as the future evolution of the software, as new changes are done directly onto the models followed by automatic code generation.&nbsp;</font></p>      <p>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">2.2   </span> <a id="x1-40002.2"></a>Related Work</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">Several works concerning the use of SPL in the embedded systems domain are reported in the literature. Nord <span class="cite">(<a href="#c8">8</a>)<a name="c8."></a></span> describes an architecture for embedded systems supporting SPL. His work proposes some quality goals and the means to achieve these goals. For example, portability is achieved by a layered design and libraries. To ease the inclusion and configuration of features, he suggests an approach based on a set of rules. Real time requirements are provided by a task-based architecture, making the task management more flexible.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Yoshimura et al. <span class="cite">(<a href="#c9">9</a>)</span><a name="c9."></a> apply SPL on existing embedded systems. Their approach checks the economical feasibility of an SPL, analysing the return of investment and the effort required to develop reusable artifacts. The analysis of commonalities is focused on the source codes of existing embedded systems. The study does not take into consideration specific real time requirements.&nbsp;</font></p>      ]]></body>
<body><![CDATA[<p>   <font face="Verdana" size="2">Koong at al. <span class="cite">(<a href="#c10">10</a>)<a name="c10."></a></span> present an approach where the concept of SPL was used to ease dynamic reconfiguration of a product line for Lego robots. They use XML configuration files to describe the composition of the system. When a hardware or software functionality is created or suffers changes, the XML configuration file changes reflecting the new configuration.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Habli <span class="cite">(<a href="#c11">11</a>)</span><a name="c11."></a> defines and evaluates a model-based approach to assure systems and processes in a safety-critical product line. A safety metamodel is included in the approach, allowing the developed artifacts to be reused in a traceable and justifiable way and the impact analysis on the validity of the entire system.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Polzer et al. <span class="cite">(<a href="#c12">12</a>)</span><a name="c12."></a> present a model-based SPL engineering process based on a Rapid-Control-Prototyping system. Embedded controllers are modeled in Simulink and code is generated automatically. They introduce a Hardware Abstraction Layer (HAL), which allows to exchange and adapt hardware components without changing the model-based implementation. Their approach is illustrated with a parking assistant application, tested on a experimental vehicle performing automatic parking maneuvers. Products are obtained with the support of pure::variants <span class="cite">(<a href="#c13">13</a>)</span><a name="c13."></a>.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">This paper proposal is more aligned with the work of Polzer <span class="cite">(<a href="#c12">12</a>)</span>, covering both domain and application engineering. Additionally, there is special concern with the validation steps necessary to fulfill certification requirements to reduce costs by reusing certified artifacts.&nbsp;</font></p>      <p>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">3   </span> <a id="x1-50003"></a>Previous Work</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">3.1   </span> <a id="x1-60003.1"></a>The Tiriba Project</font></p>   <font face="Verdana" size="2">       <br>  </font>      ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2">Tiriba is the name of a family of small, electric-powered unmanned aircraft developed for monitoring applications in agriculture and security. Despite its apparently simplicity, as can be seen in Table <a href="#x1-60011">1</a>, the avionics of Tiriba is a complex safety-critical embedded system. It supports autonomous missions, has a ground station, smartphone based, with endurance of 40min/1h30min. Payload of 0.7 kg is supported. The hardware has a mainboard with four networked processors that are allocated to the four main blocks of the system: mission controller, flight controller, pressure unit and inertial unit. </font>    </p>      <div class="table">                                                                                                                                                                                     <font face="Verdana" size="2">                                                                                                                                                                                         <br>  </font>      <p>   </p>  <hr class="float">     <div class="float">     <div class="caption"><font face="Verdana" size="2"><span class="id">Table&nbsp;1: </span><span class="content">Tiriba - Basic Specifications</span></font></div>  <font face="Verdana" size="2">&nbsp;<a id="x1-60011"><img src="/img/revistas/cleiej/v15n2/2a09t1.jpg" alt="PIC"></a> </font>    </div>  <hr class="endfloat">    </div>           <p><font face="Verdana" size="2"><span class="titlemark">3.2   </span> <a id="x1-70003.2"></a>SAFE CRITES</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">Since the beginning of the Tiriba project, special attention was given to techniques that could improve software reuse. The main aspect was the use of MDD with automatic code generation. Among several tools for system modeling and simulation, Matlab Simulink <span class="cite">(<a href="#c14">14</a>)</span><a name="c14."></a> was chosen. This tool is particularly adequated considering the availability of specific application domain modules. To further increase reuse and to make easier future certification efforts, a methodological approach, named SAFE-CRITES <span class="cite">(<a href="#c15">15</a>)</span><a name="c15."></a> was proposed and applied. Figure&nbsp;<a href="#x1-70011">1</a> illustrates its main steps, which are based on the following statements: </font>      </p>  <ul class="itemize1">        <li class="itemize"><font face="Verdana" size="2">Life cycle based on a sequence of steps separated by rigorous validation effort, with an extra effort to      avoid the need of revising a previous phase, as occurs in the iterative or spiral development approach,      commonly used in conventional system development; </font>      </li>        <li class="itemize"><font face="Verdana" size="2">Maximize  the  use  of  modeling,  simulation,  and  automatic  code  generation  tools,  aiming  shorter      development times, fewer errors and easier documentation and certification of the generated code;      </font>      </li>        <li class="itemize"><font face="Verdana" size="2">Maximize code reuse of previously tested and certified components of product families. A new product      member should be, most of the time, obtained by the reorganization of components and their mappings      to new hardware architectures; </font>      </li>        <li class="itemize"><font face="Verdana" size="2">Not imposing (although not forbidding) the use of object-oriented programming, as some standards      do not contemplate this technology. Despite OO advantages, its acceptance in the embedded systems      domain is not always unquestionable, mainly because the extra cost regarding cycles and memory area      designated to program and data, as pointed out in several researches <span class="cite">(<a href="#c16">16</a>,&nbsp;<a href="#c17">17</a>)</span>.<a name="c16."></a><a name="c17."></a></font></li>      </ul>   <font face="Verdana" size="2">       ]]></body>
<body><![CDATA[<br>  </font>      <p>   <font face="Verdana" size="2">The total development time predicted for the project was 6 months, including hardware/software development, resulting in a combined effort of 2600 working-hours of a multi-disciplinary team including computer science engineers, electronic engineers, aeronautic engineers, electronic technicians, composite materials technicians and unmanned aircraft field operators (the aircraft development took itself 500 working-hours). In the end, the entire system has 25.000+ lines of C code, excluding comment lines. The development effort was by far exceeded for several reasons, including unexpected first-time-use training difficulties for the tools and adopted methodological approach; loss of the team leader, leaving a serious lack of application-domain knowledge; non-predicted necessity of bug bypasses on the basic tools; system requirements changes during development; and unrealistic effort estimation.&nbsp;</font></p>      <p>   </p>  <hr class="figure">     <div class="figure"> <font face="Verdana" size="2">     <br>  </font>      <p> <font face="Verdana" size="2"> <a id="x1-70011"> <img src="/img/revistas/cleiej/v15n2/2a09f1.jpg" alt="PIC"></a>     <br>   </font>   </p>      <div class="caption"><font face="Verdana" size="2"><span class="id">Figure&nbsp;1: </span><span class="content">SAFE-CRITES Approach <span class="cite">(<a href="#c15">15</a>)</span></span></font></div>  <font face="Verdana" size="2">      <br>  &nbsp; </font>     <p>   </p>  </div>  <hr class="endfigure">         ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><span class="titlemark">4   </span> <a id="x1-80004"></a>ProLiCES - Product Line on Critical Embedded Systems</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">4.1   </span> <a id="x1-90004.1"></a>Further Motivation for Extending SAFE CRITES to SPL</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">At the end of the Tiriba project, an evaluation was carried out to see in which extent software reuse would be possible, as the hardware for the new project, the SARVANT, had changed completely to deal with new requirements. Although they can be reused after some adjustments, the artifacts produced in the Tiriba project do not fully comply with the requirements of the wider domain represented by the SARVANT family. This is where SPL Engineering can help and this was the main motivation behind ProLiCES. </font>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">4.2   </span> <a id="x1-100004.2"></a>ProLiCES Overview</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">ProLiCES is an extension of SAFE-CRITES, based on product line software engineering, to support the development of safety-critical embedded systems. An overview of ProLiCES activities is shown in Figure&nbsp;<a href="#x1-110012">2</a>. A two-path parallel life cycle is proposed, where Domain Engineering and Application Engineering can be conducted simultaneously or separately, depending on the current scenario faced by the software enterprise. This approach allows the SPL to be developed from any of the three adoption perspectives mentioned in Section <a href="#x1-30002.1">2.1</a>: proactive or extractive (Domain Engineering first) or reactive (Application Engineering first). If there is an immediate demand for a real-world product, the software organization can follow the Application Engineering path, possibly reusing previously tested artifacts from a previous SPL repository. On the other hand, if the schedule allows investment to build the SPL, then the Domain Engineering path can be followed.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">It is worth noting that ProLiCES is highly concerned with validation of the several artifacts produced during the development, as they are essential to guarantee a high quality product at the end of the process, which should be later certified under pertinent standards. To highlight this characteristic of ProLiCES, validation activities are presented in separate lanes. Each validation activity is linked to a development activity, and it is performed in parallel or shortly after the activity is finished. Process iterations are not included intentionally in Figure&nbsp;<a href="#x1-110012">2</a>, as it would make the figure much more complex to understand.Iterations are essential in ProLiCES. At any time during the execution of activities, it is possible to return to previous activities, whenever errors are found and need to be fixed.&nbsp;</font></p>      ]]></body>
<body><![CDATA[<p>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">4.3   </span> <a id="x1-110004.3"></a>Domain Engineering</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">The main goal of Domain Engineering is to produce reusable artifacts that can be easily composed based on SPL concepts: a set of core assets that will be present in any SPL product, as well as a set of variable assets that are included only if specific requirements must be fulfilled by an specific application.&nbsp;</font></p>      <p>   </p>  <hr class="figure">     <div class="figure"> <font face="Verdana" size="2">     <br>  </font>      <p> <font face="Verdana" size="2"> <a id="x1-110012"> <img src="/img/revistas/cleiej/v15n2/2a09f2.jpg" alt="PIC"></a>     <br>   </font>   </p>      <div class="caption"><font face="Verdana" size="2"><span class="id">Figure&nbsp;2: </span><span class="content">An Overview of ProLiCES</span></font></div>  <font face="Verdana" size="2">      ]]></body>
<body><![CDATA[<br>  &nbsp; </font>     <p>   </p>  </div>  <hr class="endfigure"> <font face="Verdana" size="2">     <br>  </font>      <p>   <font face="Verdana" size="2">The first step of Domain engineering is to perform a planning of the development activities, as well as an economic feasibility analysis of the SPL, which will indicate whether or not it is worth to be developed. If the SPL is feasible, then the second step is carried out, where a domain analysis is done to obtain a document that describes functional and non-functional requirements for SPL products. It is out of the scope of this work to propose domain analysis techniques, as they can be easily found in the literature. For a survey on this topic, see the work of Prieto-Diaz and Arango <span class="cite">(<a href="#c18">18</a>)<a name="c18."></a></span>. In ProLiCES, it is important that the domain analysis result in a requirements document where there is a distinction between functional and non-functional requirements, including mandatory, optional and alternative requirements. This document is inspected by an expert team, together with potential customers of the SPL. Refinements can be done as long as necessary to produce a validated artifact that can be included in the SPL repository. Validation should conform to certification rules to assure that the product can be included. Later on, when concrete products are instantiated, this document will be matched against the specific product requirements. Again, as this is an iterative and a two-path process, if concrete products have extra requirements not covered by the SPL, the requirements document can be further reviewed to include these new requirements.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">The third step is feature modeling, which is based on the requirements document produced during domain analysis. Considering that a complete requirements document was produced and validated in the previous activity, this activity will be much easier to execute. But it is important to notice that some organizations will prefer to begin with feature modeling to have a big picture of the system features, and then produce the requirements document. In this case, the feature model will be used as basis to write the requirements document.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">The resulting feature model contains mandatory, optional, and alternative features, as well as the constraints that must be valid during product instantiation. A constraint can represent dependencies among features, as for example inclusion (feature A requires feature B) or exclusion (feature A excludes feature B). The validation of this activity is done by inspecting the feature model against the requirements document and checking the consistency among constraints. A requirement can originate one or more features. Every requirement should be covered by at least one feature. But a feature can refer to one or more requirements. The feature model is also stored in the SPL repository and it will be the most important artifact to ease the instantiation of products during application engineering.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">It is important to observe that both hardware and software features are included in the feature model. The decision about whether they will be implemented in hardware or in software will be made later, in the Application Engineering path, possibly depending on the result of the performance tests.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">The next step is to define the SPL architecture, which involves the identification of the main components that will be built and the way how they relate to each other. The architecture can be designed in several levels. A high level architecture gives an overview of the SPL, while the next levels give more details about each component and the interfaces between them. Again, a validation of this architecture is very important to guarantee that no requirements or features were forgotten, and that components and interfaces are correct and consistent.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Having validated the SPL architecture, an analysis is done to verify which artifacts can be developed and stored in the SPL repository. artifacts corresponding to mandatory features are usually easier to develop, as the source-code is fixed and used as it is. On the other hand, artifacts that implement optional and alternative features are more complex to design, as their integration with other fixed artifacts requires a flexible interface. Unit testing is done at this point to validate isolated artifacts. Test cases used in this activity are stored in the SPL repository to be reused during application engineering with real-world products.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Finally, a very important activity to be carried out during domain engineering is the definition of the configuration knowledge needed to instantiate products. In fact, this activity can start as soon as artifacts are produced, analysing their relation to the features, allowing to reason earlier about non-realised features or support change impact analysis. Basically, the configuration knowledge consists of mapping each feature of the SPL feature model to one or more artifacts that implement it. It is also important to implement the constraints among features and guarantee that the application engineer chooses the correct features, avoiding conflicts that can infringe the constraints. A validation of the configuration is needed and it can be done automatically by tools if available, as for example pure::variants. </font>    </p>      ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><span class="titlemark">4.4   </span> <a id="x1-120004.4"></a>Application Engineering</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">Application engineering aims at the production of real-world SPL products. As ProLiCES allows a reactive SPL adoption perspective, application engineering would be conducted even if an SPL repository does not exist yet, i.e.,                                                                                                                                                                                     a first product could be developed and, afterwards, its reusable parts reorganized to begin the construction of a repository. The Tiriba project followed this path. In fact, the application engineering path in Figure&nbsp;<a href="#x1-110012">2</a> is basically SAFE-CRITES with minor modifications.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Application engineering begins with software planning, where the project is planned following typical project management guidelines. Several artifacts are expected in this step, particularly when certification under DO 178-B is desired, as it demands the production of a number of planning documents: plan for certification, plan for software development, plan for software verification, plan for software configuration management, and plan for software quality assurance. All these artifacts can be partially reused from previous developments, adjusting them to the specific project.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">The requirements analysis for the product is the next step, where specific needs for the concrete product are established. Likewise to Domain Engineering, the requirements document produced in this step must be inspected by experts to guarantee its correctness. If an SPL repository already exists, the SPL requirements document can be the basis for the product requirements document. This is certainly easier than starting from scratch, since functional and non-functional requirements are already defined and pertinent requirements to the target product can be selected.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">The next step is to model and simulate the system. Here there are different strategies to follow, depending on whether it is the first product being developed, or the SPL already exists and is being evolved. In the first case, the features of the product under development are identified and can be considered the first feature model, where all features are mandatory. In the second case, domain engineering has been already done in the past, so the application engineer has only to instantiate the feature model by selecting the desired features that match the product requirements. New requirements or features should be analysed and included, if appropriate, in the SPL repository. This can be a complex task, as the integration of new functionalities is not always straightforward.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">If a SPL does not exist yet, after feature modeling it is necessary to define the system architecture and to develop the reusable assets, and this can be done by following the same guidelines used for domain engineering (see Section <a href="#x1-110004.3">4.3</a>). On the other hand, when the SPL already exists, usually it is enough to select the desired features and reuse the corresponding implementation assets. Eventually, when the SPL does not cover 100% of the new product requirements, new features will need to be incorporated into the architecture and corresponding assets need to be developed as well.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Having completed the modeling, simulation can be carried out and adjustements can be done in the models until the expected results are achieved. Functional testing can be done at this point to check if the feature model instance attends the product requirements.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">After choosing the features that will be part of the product, the application engineering has to decide which features will be implemented by software or by hardware. This step is called Hardware/software partition. Performance simulations done in the previous step can help this decision, and several iterations may be needed to find the best solution for the particular product. Provided that an adequate division is achieved, code can be generated for the chosen features. Some of these features can be represented by models, such as state machines or dataflow diagrams, while others can have an associated source or pseudo code. Structural testing can be done at this point using appropriate testing criteria.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">A HAL layer is necessary to interface the automatically-generated code to the target hardware. The development of this layer must be done every time a block of hardware changes. Notwithstanding, hardware can be semi-automatically generated making use of code generators for hardware description languages, such as Verilog Hardware Description Language (VHDL). Since integrated, hardware and software of the new product can be submitted to hardware in the loop testing. This is an useful testing technique for safety-critical embedded systems, as the entire system can be tested without the risk of a first-time real-world operation.&nbsp;</font></p>      ]]></body>
<body><![CDATA[<p>   <font face="Verdana" size="2">Finally, product integration takes part, where the embedded system is integrated to the final system and is ready for final validation and acceptance tests.&nbsp;</font></p>      <p>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">4.5   </span> <a id="x1-130004.5"></a>The Role of Certification Standards</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">Certification, under pertinent standards, is an important phase in the development of an embedded system, even more if it is a safety-critical embedded system. Standards exist for a multitude of reasons, not only to assure product quality. Economic interests and political aspects are also important. In this paper it is discussed avionics systems, covered by standards such as DO-178B <span class="cite">(<a href="#c19">19</a>)</span><a name="c19."></a> (and its recently issued version DO-178C) and DO-254. In ProLiCES, the authors intend to support another important application domain: the automotive, where standards like MISRA C and ISO 26262 have great importance. Although there are specific requirements, all standards try to guarantee the quality of products, normally ruling over the development process, heavy documentation and                                                                                                                                                                                     testing.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">The main standard for avionics software is the DO-178B <span class="cite">(<a href="#c19">19</a>)</span>. It allows certification in several levels (A, B, C, D, or E). &ldquo;A&rdquo; is the most difficult level to achieve, and is recommended when the consequences of a potential software failure are catastrophic. &ldquo;E&rdquo; is the easiest level, used when there are no dangerous effects if the software fails. The effort to obtain an &ldquo;A&rdquo; level is greater and more expensive to the software development enterprize when compared to the effort to get a lower level.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Certification is an important subject for ProLiCES. In this direction, certification standards have been studied and their specific requirements incorporated to the development process, mainly concerning documentation and test cases generation. This is out of the scope of this paper, but we provide a brief summary to illustrate typical activities that need to be carried out during development aiming at obtaining product certification.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">DO-178B <span class="cite">(<a href="#c19">19</a>)</span> supplies objectives to be met during all processes of software development, from software planning, passing through analysis, design, coding and testing. For example, during the software requirements process a goal to be achieved is that &ldquo;software high-level requirements comply with system requirements&rdquo; and the output of this process should include &ldquo;software verification results&rdquo; where this compliance can be evidenced. Notice that there is no specification of how to achieve this objective. In ProLiCES, we have defined, for each application engineering phase (see Figure&nbsp;<a href="#x1-110012">2</a>), a set of activities and corresponding artifacts that should be followed aiming at certification, as exemplified in Figure&nbsp;<a href="#x1-130013">3</a>. For the previously mentioned goal, for example, we have established requirements activities (system and software analysis) including artifacts that help ensuring that each software requirement has an associated system requirements related to it and vice-versa.&nbsp;</font></p>      <p>   </p>  <hr class="figure">     <div class="figure">                                                                                         <font face="Verdana" size="2">                                                                                             ]]></body>
<body><![CDATA[<br>  </font>      <p>                                                                                        <font face="Verdana" size="2">                                                                                        <a id="x1-130013"><img src="/img/revistas/cleiej/v15n2/2a09f3.jpg" alt="PIC"></a>     <br>   </font>   </p>      <div class="caption"><font face="Verdana" size="2"><span class="id">Figure&nbsp;3:  </span><span class="content">Partial  Example  of  Mapping  ProLiCES  application  engineering  phases  to  certification activities/artifacts</span></font></div>  <font face="Verdana" size="2">      <br>  &nbsp; </font>     <p>   </p>  </div>  <hr class="endfigure"> <font face="Verdana" size="2">     <br>  </font>      <p>   <font face="Verdana" size="2">As future work we plan to associate weights to artifacts according to each certification level. These weights will be obtained empirically, and will be adjusted at each new development. Our focus is presently on application engineering, because DO-178B is not concerned with SPL certification, but only with product certification. It is important to notice that several verification and validation activities are carried out during domain engineering, in order to produce high quality SPL assets that will be easier to certifify further, although specific activities regarding certification are assigned only during application engineering. </font>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">5   </span> <a id="x1-140005"></a>Preliminary Results</font></p>   <font face="Verdana" size="2">       <br>  </font>      ]]></body>
<body><![CDATA[<p>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">5.1   </span> <a id="x1-150005.1"></a>The SARVANT Project</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">ProLiCES is being used in the SARVANT project, where the development of a long-endurance unmanned aircraft with the specific mission of carrying a dual band SAR sensor (Synthetic Aperture Radar) is being conducted. It is a jointly effort of AGX Technology Ltd (<a href="http://www.agx.com.br" class="url"><span class="cmtt-10">http://www.agx.com.br</span></a>) and Orbisat Inc (<a href="http://www.orbisat.com.br" class="url"><span class="cmtt-10">http://www.orbisat.com.br</span></a>), having the INCT-SEC (<a href="http://www.inct-sec.org" class="url"><span class="cmtt-10">http://www.inct-sec.org</span></a>) as the academic branch and FINEP (<a href="http://www.finep.gov.br" class="url"><span class="cmtt-10">http://www.finep.gov.br</span></a>) as the main sponsor. From the user&rsquo;s perspective, SARVANT is a different and more complex product than Tiriba, as can be observed in Table <a href="#x1-150012">2</a>. From the development perspective, the Tiriba SPL can be extended to cover the new features of the product SARVANT, that also can be viewed as a family of similar aircrafts. </font>    </p>      <div class="table">                                                                                                                                                                                     <font face="Verdana" size="2">                                                                                                                                                                                         <br>  </font>      <p>   </p>  <hr class="float">     <div class="float">                                                                                                                                                                                           <div class="caption"><font face="Verdana" size="2"><span class="id">Table&nbsp;2: </span><span class="content">SARVANT - Basic Specifications</span></font></div>  <font face="Verdana" size="2">&nbsp;<a id="x1-150012"><img src="/img/revistas/cleiej/v15n2/2a09t2.jpg" alt="PIC"></a>&nbsp;--tex4ht:inline </font> </div>  <hr class="endfloat">    </div>   <font face="Verdana" size="2">       <br>  </font>      ]]></body>
<body><![CDATA[<p>   <font face="Verdana" size="2">Although not visible to users, several features of the SARVANT family are originated from the Tiriba family. All these new features change radically the variability level of products of the SARVANT family, according to different possible configurations. Several examples of new features are described next to illustrate these variabilities.&nbsp;</font></p>  <font face="Verdana" size="2">      <br>  </font>      <p>   <font face="Verdana" size="2">The second new feature is redundancy of software and hardware. Ideally, to avoid systematic bugs in highly critical embedded systems, both software and hardware redundant units must have different development cycles and different development teams. This latter issue has not been considered in the SARVANT family. In the first attempt to implement redundancy in the SARVANT family, the hardware will be focused. Organized as a redundant computer network, the SARVANT avionics can have multiple units providing the same functionality in a redundant way. For example, multiple flight controllers can provide similar data to multiple control-surface controllers that evaluates the correct value to use. A further explanation on this feature is beyond the scope of this paper and it will be published in the near future.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">The third new feature is IFA (In-Flight-Awareness). The key idea is to provide the aircraft with sensors and heuristics to replace the capabilities of the missing human pilot. Smoke and vibration sensors are considered. DTM (Digital Terrain Model) and Geopolitical information are also important. This feature will allow the aircraft to have a more adequate behavior in some circumstances. For instance, in a faulty condition, the aircraft itself can judge the best place for an emergence landing based on the IFA database and some heuristics.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">The application of MDD allows the reuse of most artifacts (at model level), previously developed for the Tiriba project. At the time of this writing, the SARVANT project has already done several activities of the domain engineering, such as planning and economic feasibility analysis, domain analysis, feature modeling, SPL architecture definition, reusable artifacts development, and configuration knowledge definition (these two last are both ongoing work, byproducts of the Tiriba project).&nbsp;</font></p>      <p>   <font face="Verdana" size="2">To better understand the new concepts and features of the SARVANT family, an architectural view has been proposed <span class="cite">(<a href="#c20">20</a>)</span><a name="c20."></a> as shown in Figure&nbsp;<a href="#x1-150024">4</a>. It is possible to observe that many components are especially designed to provide the new features mentioned before. For example, to improve reliability through redundancy, a number of critical components have been replicated. Components that implement IFA and MOSA were also included.&nbsp;</font></p>      <p>   </p>  <hr class="figure">     <div class="figure"> <font face="Verdana" size="2">     <br>  </font>      <p><font face="Verdana" size="2"><a id="x1-150024"><img src="/img/revistas/cleiej/v15n2/2a09f4.jpg" alt="PIC"></a>     ]]></body>
<body><![CDATA[<br>   </font>   </p>      <div class="caption"><font face="Verdana" size="2"><span class="id">Figure&nbsp;4: </span><span class="content">Architecture of the SARVANT Family (partial view)</span></font></div>  <font face="Verdana" size="2">      <br>  &nbsp; </font>     <p>   </p>  </div>  <hr class="endfigure"> <font face="Verdana" size="2">     <br>  </font>      <p>   <font face="Verdana" size="2">The application engineering has begun, with planning, requirements analysis already done, and the other phases beginning now. Figure&nbsp;<a href="#x1-150035">5</a> shows part of the requirements document for the SPL, where stereotypes have been used to highlight mandatory, optional or alternative requirements. The hardware engineering is under design, with the aircraft designed and prototype almost finished.&nbsp;</font></p>      <p>   </p>  <hr class="figure">     <div class="figure">                                                                                         <font face="Verdana" size="2">                                                                                             <br>  </font>      <p> <font face="Verdana" size="2"> <a id="x1-150035"><img src="/img/revistas/cleiej/v15n2/2a09f5.jpg" alt="PIC"></a>     ]]></body>
<body><![CDATA[<br>   </font>   </p>      <div class="caption"><font face="Verdana" size="2"><span class="id">Figure&nbsp;5: </span><span class="content">Requirements document (partial view)</span></font></div>  <font face="Verdana" size="2">      <br>  &nbsp;</font></div>  <hr class="endfigure">         <p><font face="Verdana" size="2"><span class="titlemark">5.2   </span> <a id="x1-160005.2"></a>A Feature Model for Fixed Wing UAVs</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">A broader feature model was partially developed, having the feature model of Tiriba as a start point, encompassing not only the SARVANT family, but almost any fixed-wing unmanned aircraft configuration. A part of this model can be seen on Figure&nbsp;<a href="#x1-160016">6</a>.&nbsp;</font></p>      <p>   </p>  <hr class="figure">     <div class="figure">                                      <font face="Verdana" size="2">                                          <br>  </font>      <p><font face="Verdana" size="2"><a id="x1-160016"> <img src="/img/revistas/cleiej/v15n2/2a09f6.jpg" alt="PIC"></a>     ]]></body>
<body><![CDATA[<br>   </font>   </p>      <div class="caption"><font face="Verdana" size="2"><span class="id">Figure&nbsp;6: </span><span class="content">Feature Model (partial view)</span></font></div>  <font face="Verdana" size="2">      <br>  &nbsp; </font>     <p>   </p>  </div>  <hr class="endfigure"> <font face="Verdana" size="2">     <br>  </font>      <p>   <font face="Verdana" size="2">It is expected the SARVANT project to be ten times bigger than the Tiriba project, resulting in 250.000+ lines of automatically (most part) generated code. ProLiCES is the best bet of the authors to undertake this class of development effort.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">The SARVANT SPL is being developed using ProLiCES in an incremental way. This means that several iterations are planned to occur, starting with the development of the most usual features to fulfill the requirements of great part of the applications demanded so far, and then other features will be incorporated as needed. The reactive approach to SPL was used, as we have started from an existing product (Tiriba) and new features are being incorporated towards a bigger SPL. </font>    </p>      <p><font face="Verdana" size="2"><span class="titlemark">6   </span> <a id="x1-170006"></a>Conclusion</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">ProLiCES has been proposed to solve some practical problems found in the development of the Tiriba project, mainly related to software reuse. At its end, Tiriba resulted in 25.000+ lines of code, split onto four networked processors.&nbsp;</font></p>      ]]></body>
<body><![CDATA[<p>   <font face="Verdana" size="2">The development of the SARVANT, a family of complex unmanned aircraft, has been started using ProLiCES. Its is expected for SARVANT ten times more lines of code spread over tens of processor boards (depending on the amount of features and level of redundancy). Software reuse is imperative, starting with the artifacts produced in the Tiriba project.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">At the time of this writing, current work is focused on the Feature Model for the SARVANT Family (under revision and checking) and the redefinition and mapping of software artifacts developed for Tiriba according. As a big project, the SARVANT can take up to two years more to complete. During this time, ProLiCES will be evaluated and eventually slightly modified to attend other safety-critical embedded applications, such as automotive electronics.&nbsp;</font></p>      <p>   <font face="Verdana" size="2">Certification under the DO-178B is also a goal for the SARVANT project. ProLiCES must provide facilities for this task concerning easier documentation and easier test cases generation. This is an ongoing parallel work that may have impact on the process. Another key point in ProLiCES, not detailed in this paper, is a third path of the process, the Hardware Application Engineering, started after the hardware/software partitioning. As future work, automatic hardware generation can be used, although it is not applicable for the SARVANT project.&nbsp;</font></p>      <p>    </p>      <p><font face="Verdana" size="2"><a id="x1-180006"></a>Acknowledgments</font></p>   <font face="Verdana" size="2">       <br>  </font>      <p><font face="Verdana" size="2">The authors acknowledge the support granted by CNPq and FAPESP to the INCT-SEC (National Institute of Science and Technology - safety-critical Embedded Systems - Brazil), processes 573963/2008-9 and 08/57870-9.&nbsp;</font></p>      <p>    </p>      <p><font face="Verdana" size="2"><a id="x1-190006"></a>References</font></p>   <font face="Verdana" size="2">       <br>  </font>      ]]></body>
<body><![CDATA[<p>     </p>      <div class="thebibliography">          <p><font face="Verdana" size="2"><span class="biblabel"><a name="c1"></a>   <a href="#c1.">(1</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>RTO,  &ldquo;Validation,  Verification  and  Certification  of  Embedded  Systems,  TR-IST-027,&rdquo;  NATO,     October 2005, Tech. Rep., 2005. </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c2"></a>   (<a href="#c2.">2</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>R.&nbsp;Braga, K.&nbsp;R. L. J.&nbsp;C. Branco, O.&nbsp;J. Trindade, P.&nbsp;C. Masiero, L.&nbsp;O. Neris, and M.&nbsp;Becker,     &ldquo;ProLiCES:  An  approach  to  develop  Product  Lines  for  Safety-Critical  Embedded  Systems,&rdquo;  in     <span class="cmti-10">Proceedings of CLEI - XXXVII Latin-American Informatics Conference</span>, 2011, pp. 991 &ndash; 1006. </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c3"></a>   (<a href="#c3.">3</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>GAO,  &ldquo;Unmanned  aircraft  systems  -  federal  actions  needed  to  ensure  safety  and  expand  their     potential uses within the national airspace system, GAO-08-511,&rdquo; GAO, 2008, Tech. Rep., 2008. </font>                                                                                                                                                                                         </p>            <!-- ref --><p><font face="Verdana" size="2"><span class="biblabel"><a name="c4"></a>   (<a href="#c4.">4</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>P.&nbsp;Clements and L.&nbsp;Northrop, <span class="cmti-10">Software Product Lines: Practices and Patterns</span>.  Boston, MA, USA:     Addison-Wesley Longman, Aug. 2001.     </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c5"></a>   (<a href="#c5.">5</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>M.&nbsp;L.  Griss,  &ldquo;Implementing  product-line  features  with  component  reuse,&rdquo;  in  <span class="cmti-10">6th  International</span>     <span class="cmti-10">Conference on Software Reuse (ICSR)</span>, 2000, pp. 137&ndash;152. </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c6"></a>   (<a href="#c6.">6</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>C.&nbsp;Krueger,  &ldquo;Easing  the  transition  to  software  mass  customization,&rdquo;  in  <span class="cmti-10">Proceedings of the 4th</span>     <span class="cmti-10">International Workshop on Software Product-Family Engineering</span>, 2001, pp. 282&ndash;293. </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c7"></a>   (<a href="#c7.">7</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>M.&nbsp;V&ouml;lter and I.&nbsp;Groher, &ldquo;Product line implementation using aspect-oriented and model-driven     software development.&rdquo; in <span class="cmti-10">SPLC</span>.   IEEE Computer Society, 2007, pp. 233&ndash;242. (Online). Available:     <a href="http://dblp.uni-trier.de/db/conf/splc/splc2007.html#VolterG07" class="url">http://dblp.uni-trier.de/db/conf/splc/splc2007.html#VolterG07</a> </font>     </p>            ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><span class="biblabel"><a name="c8"></a>   (<a href="#c8.">8</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>R.&nbsp;L.  Nord,  &ldquo;Meeting  the  product  line  goals  for  an  embedded  real-time  system,&rdquo;  in  <span class="cmti-10">Software</span>     <span class="cmti-10">Architectures for Product Families</span>, ser. Lecture Notes in Computer Science, F.&nbsp;van&nbsp;der Linden, Ed.     Springer Berlin / Heidelberg, 2000, vol. 1951, pp. 19&ndash;29. </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c9"></a>   (<a href="#c9.">9</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>K.&nbsp;Yoshimura, D.&nbsp;Ganesan, and D.&nbsp;Muthig, &ldquo;Defining a strategy to introduce a software product     line using existing embedded systems,&rdquo; in <span class="cmti-10">Proceedings of the 6th ACM/IEEE International conference</span>     <span class="cmti-10">on Embedded software</span>, 2006, pp. 63&ndash;72. </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c10"></a>  (<a href="#c10.">10</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>C.-S. Koong, H.-J. Lai, and K.-C. Lai, &ldquo;An embedded software architecture for robot with variable     structures,&rdquo; in <span class="cmti-10">International Conference on Frontier of Computer Science and Technology</span>, 2009, pp.     478&ndash;484. </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c11"></a>  (<a href="#c11.">11</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>I.&nbsp;M. Habli, &ldquo;Model-based assurance of safety-critical product lines,&rdquo; PhD Thesis, University of     York, York - UK, Sep. 2009. </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c12"></a>  (<a href="#c12.">12</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>A.&nbsp;Polzer,  S.&nbsp;Kowalewski,  and  G.&nbsp;Botterweck,  &ldquo;Applying  software  product  line  techniques  in     model-based  embedded  systems  engineering,&rdquo;  in  <span class="cmti-10">Proceedings  of  the  Workshop  on  Model-based</span>     <span class="cmti-10">Methodologies  for  Pervasive  and  Embedded  Software  (MOMPES  2009),  at  the  31st  International</span>     <span class="cmti-10">Conference on Software Engineering</span>, 2009, pp. 2&ndash;10. </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c13"></a>  (<a href="#c13.">13</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>Pure-Systems,       &ldquo;Pure::variants,&rdquo;       2011,       available       on       2011,       May       30     at: <a href="http://www.pure-systems.com/pure_variants.49.0.html" class="url">http://www.pure-systems.com/pure_variants.49.0.html</a>.         (Online). </font>                                                                                                                                                                                          </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c14"></a>  (<a href="#c14.">14</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>Mathworks,    &ldquo;Simulink    -    simulation    and    model-based    design,&rdquo;    may    2011,    available     on   2011,   May   30   at   <a href="http://www.mathworks.com/products/simulink/" class="url">http://www.mathworks.com/products/simulink/</a> .   (Online). </font>      </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c15"></a>  (<a href="#c15.">15</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>R.&nbsp;Braga, K.&nbsp;R. L. J.&nbsp;C. Branco, L.&nbsp;O. Neris, and O.&nbsp;J. Trindade, &ldquo;Safe-crites: Developing safety-critical embedded systems supported by reuse techniques,&rdquo; in <span class="cmti-10">Proceedings of IRI - International</span>     <span class="cmti-10">Conference on Reuse and Integration</span>, 2011, pp. 206&ndash;211. </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c16"></a>  (<a href="#c16.">16</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>A.&nbsp;Chatzigeorgiou and G.&nbsp;Stephanides, &ldquo;Evaluating Performance and Power of Object-Oriented     Vs. Procedural Programming in Embedded Processors,&rdquo; in <span class="cmti-10">Reliable Software Technologies-ADA-Europe</span>     <span class="cmti-10">2002: 7th Ada-Europe International Conference on Reliable Software Technologies, Vienna, Austria,</span>     <span class="cmti-10">June 17-21, 2002: Proceedings</span>.   Springer, 2002, p.&nbsp;65. </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c17"></a>  (<a href="#c17.">17</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>S.&nbsp;Bhakthavatsalam and S.&nbsp;Edwards, &ldquo;Applying object-oriented techniques in embedded software     design,&rdquo; in <span class="cmti-10">CPES 2002 Power Electronics Seminar and NSF/Industry Annual Review</span>, 2002. </font>     </p>            ]]></body>
<body><![CDATA[<!-- ref --><p><font face="Verdana" size="2"><span class="biblabel"><a name="c18"></a>  (<a href="#c18.">18)</a><span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>R.&nbsp;Prieto-Diaz and G.&nbsp;Arango, <span class="cmti-10">Domain Analysis and Software System Modeling</span>.   IEEE Computer     Science Press Tutorial, 1991.     </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c19"></a>  (<a href="#c19.">19</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>I.&nbsp;RTCA, &ldquo;Final Report for Clarification of DO-178B &ndash; Software Considerations in Airborne Systems     and Equipment Certification.&rdquo; RTCA/DO-248B, 12 October 2001, Tech. Rep., 2001. </font>     </p>            <p><font face="Verdana" size="2"><span class="biblabel"><a name="c20"></a>  (<a href="#c20.">20</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>D.&nbsp;Rodrigues, E.&nbsp;J.C., V.&nbsp;M., C.&nbsp;M., C.&nbsp;J. J.B., B.&nbsp;K.R.C, and T.&nbsp;J. O., &ldquo;Service-oriented architectures for complex safety-critical embedded systems: A case study on UAVs,&rdquo; in <span class="cmti-10">I Brazilian</span>     <span class="cmti-10">Conference on Critical-Embedded Systems (CBSEC), S&atilde;o Carlos, Brazil</span>, May 2011, pp. 130&ndash;130. </font> </p>       </div>             ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="book">
<collab>RTO</collab>
<source><![CDATA[&ldquo;Validation, Verification and Certification of Embedded Systems, TR-IST-027,&rdquo;]]></source>
<year>2005</year>
<publisher-name><![CDATA[NATO]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Braga]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Branco]]></surname>
<given-names><![CDATA[K. R. L. J. C.]]></given-names>
</name>
<name>
<surname><![CDATA[Trindade]]></surname>
<given-names><![CDATA[O. J.]]></given-names>
</name>
<name>
<surname><![CDATA[Masiero]]></surname>
<given-names><![CDATA[P. C]]></given-names>
</name>
<name>
<surname><![CDATA[Neris]]></surname>
<given-names><![CDATA[L. O.]]></given-names>
</name>
<name>
<surname><![CDATA[Becker]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[ProLiCES: An approach to develop Product Lines for Safety-Critical Embedded Systems]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Proceedings of CLEI - XXXVII Latin-American Informatics Conference]]></conf-name>
<conf-date>2011</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="book">
<collab>GAO</collab>
<source><![CDATA[Unmanned aircraft systems - federal actions needed to ensure safety and expand their potential uses within the national airspace system, GAO-08-51]]></source>
<year>2008</year>
<publisher-name><![CDATA[GAO]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Clements]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Northrop]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
</person-group>
<source><![CDATA[Software Product Lines: Practices and Patterns]]></source>
<year>Aug.</year>
<month> 2</month>
<day>00</day>
<publisher-loc><![CDATA[Boston^eMA MA]]></publisher-loc>
<publisher-name><![CDATA[Addison-Wesley Longman]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Griss]]></surname>
<given-names><![CDATA[M. L]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Implementing product-line features with component reuse]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ 6th International Conference on Software Reuse (ICSR)]]></conf-name>
<conf-date>2000</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Krueger]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Easing the transition to software mass customization]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Proceedings of the 4th International Workshop on Software Product-Family Engineering]]></conf-name>
<conf-date>2001</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Völter]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Groher]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Product line implementation using aspect-oriented and model-driven software development]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ SPLC. IEEE Computer Society]]></conf-name>
<conf-date>2007</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Nord]]></surname>
<given-names><![CDATA[R. L]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Meeting the product line goals for an embedded real-time system]]></article-title>
<person-group person-group-type="editor">
<name>
<surname><![CDATA[van der Linden]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
</person-group>
<source><![CDATA[Software Architectures for Product Families, ser.: Lecture Notes in Computer Science,]]></source>
<year>2000</year>
<volume>1951</volume>
<page-range>19-29</page-range><publisher-loc><![CDATA[Berlin / Heidelberg ]]></publisher-loc>
<publisher-name><![CDATA[Springer]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Yoshimura]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
<name>
<surname><![CDATA[Ganesan]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Muthig]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Defining a strategy to introduce a software product line using existing embedded systems]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Proceedings of the 6th ACM/IEEE International conference on Embedded software]]></conf-name>
<conf-date>2006</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Koong]]></surname>
<given-names><![CDATA[C.-S]]></given-names>
</name>
<name>
<surname><![CDATA[Lai]]></surname>
<given-names><![CDATA[H.-J]]></given-names>
</name>
<name>
<surname><![CDATA[Lai]]></surname>
<given-names><![CDATA[K.-C]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[An embedded software architecture for robot with variable structures]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ International Conference on Frontier of Computer Science and Technology]]></conf-name>
<conf-date>2009</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Habli]]></surname>
<given-names><![CDATA[I. M]]></given-names>
</name>
</person-group>
<source><![CDATA[Model-based assurance of safety-critical product lines]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Polzer]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Kowalewski]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Botterweck]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Applying software product line techniques in model-based embedded systems engineering]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Proceedings of the Workshop on Model-based Methodologies for Pervasive and Embedded Software (MOMPES 2009), at the 31st International Conference on Software Engineering]]></conf-name>
<conf-date>2009</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="">
<collab>Pure-Systems</collab>
<source><![CDATA[Pure::variants]]></source>
<year>2011</year>
</nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="">
<collab>Mathworks</collab>
<source><![CDATA[Simulink - simulation and model-based design]]></source>
<year>may </year>
<month>20</month>
<day>11</day>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Braga]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Branco]]></surname>
<given-names><![CDATA[K. R. L. J. C.]]></given-names>
</name>
<name>
<surname><![CDATA[Neris]]></surname>
<given-names><![CDATA[L. O.]]></given-names>
</name>
<name>
<surname><![CDATA[Trindade]]></surname>
<given-names><![CDATA[O. J.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Safe-crites: Developing safety-critical embedded systems supported by reuse techniques]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Proceedings of IRI - International Conference on Reuse and Integration]]></conf-name>
<conf-date>2011</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chatzigeorgiou]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Stephanides]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Evaluating Performance and Power of Object-Oriented Vs. Procedural Programming in Embedded Processors]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Reliable Software Technologies-ADA-Europe 2002: 7th Ada-Europe International Conference on Reliable Software Technologies,]]></conf-name>
<conf-date>2002</conf-date>
<conf-loc>Vienna </conf-loc>
</nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bhakthavatsalam]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Edwards]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Applying object-oriented techniques in embedded software design]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ CPES 2002 Power Electronics Seminar and NSF/Industry Annual Review]]></conf-name>
<conf-date>2002</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Prieto-Diaz]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Arango]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
</person-group>
<source><![CDATA[Domain Analysis and Software System Modeling]]></source>
<year>1991</year>
<publisher-name><![CDATA[IEEE Computer Science Press Tutorial]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B19">
<label>19</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[RTCA]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
</person-group>
<source><![CDATA[Final Report for Clarification of DO-178B - Software Considerations in Airborne Systems and Equipment Certification]]></source>
<year>2001</year>
</nlm-citation>
</ref>
<ref id="B20">
<label>20</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Rodrigues]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[J.C]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[M]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
<name>
<surname><![CDATA[M]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[J. J.B]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[K.R.C]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[J. O]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Service-oriented architectures for complex safety-critical embedded systems: A case study on UAVs]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ I Brazilian Conference on Critical-Embedded Systems (CBSEC)]]></conf-name>
<conf-date>May 2011</conf-date>
<conf-loc>São Carlos </conf-loc>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
