<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//TaxonX//DTD Taxonomic Treatment Publishing DTD v0 20100105//EN" "../../nlm/tax-treatment-NS0.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:tp="http://www.plazi.org/taxpub" article-type="research-article" dtd-version="3.0" xml:lang="en">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">109</journal-id>
      <journal-id journal-id-type="index">urn:lsid:arphahub.com:pub:3dc5f44e-8666-58db-bc76-a455210e8891</journal-id>
      <journal-title-group>
        <journal-title xml:lang="en">JUCS - Journal of Universal Computer Science</journal-title>
        <abbrev-journal-title xml:lang="en">jucs</abbrev-journal-title>
      </journal-title-group>
      <issn pub-type="ppub">0948-695X</issn>
      <issn pub-type="epub">0948-6968</issn>
      <publisher>
        <publisher-name>Journal of Universal Computer Science</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.3217/jucs-020-05-0587</article-id>
      <article-id pub-id-type="publisher-id">23182</article-id>
      <article-categories>
        <subj-group subj-group-type="heading">
          <subject>Research Article</subject>
        </subj-group>
        <subj-group subj-group-type="scientific_subject">
          <subject>D.2.13 - Reusable Software</subject>
          <subject>D.2.4 - Software/Program Verification</subject>
          <subject>D.2.5 - Testing and Debugging</subject>
          <subject>D.2.7 - Distribution</subject>
          <subject> Maintenance</subject>
          <subject> and Enhancement</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>A Toolset for Checking SPL Refinements</article-title>
      </title-group>
      <contrib-group content-type="authors">
        <contrib contrib-type="author" corresp="yes">
          <name name-style="western">
            <surname>Ferreira</surname>
            <given-names>Felype</given-names>
          </name>
          <email xlink:type="simple">fsf2@cin.ufpe.br</email>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name name-style="western">
            <surname>Gheyi</surname>
            <given-names>Rohit</given-names>
          </name>
          <xref ref-type="aff" rid="A2">2</xref>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name name-style="western">
            <surname>Borba</surname>
            <given-names>Paulo</given-names>
          </name>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name name-style="western">
            <surname>Soares</surname>
            <given-names>Gustavo</given-names>
          </name>
          <xref ref-type="aff" rid="A3">3</xref>
        </contrib>
      </contrib-group>
      <aff id="A1">
        <label>1</label>
        <addr-line content-type="verbatim">Federal University of Pernambuco, Recife, Brazil</addr-line>
        <institution>Federal University of Pernambuco</institution>
        <addr-line content-type="city">Recife</addr-line>
        <country>Brazil</country>
      </aff>
      <aff id="A2">
        <label>2</label>
        <addr-line content-type="verbatim">Campina Grande, , Brazil</addr-line>
        <institution>Campina Grande</institution>
        <country>Brazil</country>
      </aff>
      <aff id="A3">
        <label>3</label>
        <addr-line content-type="verbatim">Federal University of Campina Grande, Campina Grande, Brazil</addr-line>
        <institution>Federal University of Campina Grande</institution>
        <addr-line content-type="city">Campina Grande</addr-line>
        <country>Brazil</country>
      </aff>
      <author-notes>
        <fn fn-type="corresp">
          <p>Corresponding author: Felype Ferreira (<email xlink:type="simple">fsf2@cin.ufpe.br</email>).</p>
        </fn>
        <fn fn-type="edited-by">
          <p>Academic editor: </p>
        </fn>
      </author-notes>
      <pub-date pub-type="collection">
        <year>2014</year>
      </pub-date>
      <pub-date pub-type="epub">
        <day>01</day>
        <month>05</month>
        <year>2014</year>
      </pub-date>
      <volume>20</volume>
      <issue>5</issue>
      <fpage>587</fpage>
      <lpage>614</lpage>
      <uri content-type="arpha" xlink:href="http://openbiodiv.net/5199A733-4C2C-598C-99C5-762F1C3F7356">5199A733-4C2C-598C-99C5-762F1C3F7356</uri>
      <uri content-type="zenodo_dep_id" xlink:href="https://zenodo.org/record/5505107">5505107</uri>
      <history>
        <date date-type="received">
          <day>28</day>
          <month>07</month>
          <year>2013</year>
        </date>
        <date date-type="accepted">
          <day>15</day>
          <month>02</month>
          <year>2013</year>
        </date>
      </history>
      <permissions>
        <copyright-statement>Felype Ferreira, Rohit Gheyi, Paulo Borba, Gustavo Soares</copyright-statement>
        <license license-type="creative-commons-attribution" xlink:href="" xlink:type="simple">
          <license-p>This article is freely available under the J.UCS Open Content License.</license-p>
        </license>
      </permissions>
      <abstract>
        <label>Abstract</label>
        <p>Developers evolve software product lines (SPLs) manually or using typical program refactoring tools. However, when evolving an SPL to introduce new features or to improve its design, it is important to make sure that the behavior of existing products is not affected. Typical program refactorings cannot guarantee that because the SPL context goes beyond code and other kinds of core assets, and involves additional artifacts such as feature models and configuration knowledge. Besides that, we typically have to deal with a set of alternative assets that do not constitute a well-formed program in an SPL. As a result, manual changes and existing program refactoring tools may introduce behavioral changes or invalidate existing product configurations. To reduce such risks, we propose approaches and implement four tools for making product line evolution safer. These tools check if SPL transformations preserve the behavior of the original SPL products. They implement different and practical approximations of refinement notions from a theory for safely evolving SPLs. Besides specifying the algorithms of each approach, we compare them with respect to soundness, performance and code coverage in 35 evolution scenarios of an SPL with 32 KLOC.</p>
      </abstract>
    </article-meta>
  </front>
</article>
