<?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-0692</article-id>
      <article-id pub-id-type="publisher-id">23186</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.1.m - Miscellaneous</subject>
          <subject>D.2.13 - Reusable Software</subject>
          <subject>D.2.8 - Metrics</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>Flexible Feature Binding with AspectJ-based Idioms</article-title>
      </title-group>
      <contrib-group content-type="authors">
        <contrib contrib-type="author" corresp="yes">
          <name name-style="western">
            <surname>Andrade</surname>
            <given-names>Rodrigo</given-names>
          </name>
          <email xlink:type="simple">rcaa2@cin.ufpe.br</email>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name name-style="western">
            <surname>Rebelo</surname>
            <given-names>Henrique</given-names>
          </name>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name name-style="western">
            <surname>Ribeiro</surname>
            <given-names>Márcio</given-names>
          </name>
        </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-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>
      <author-notes>
        <fn fn-type="corresp">
          <p>Corresponding author: Rodrigo Andrade (<email xlink:type="simple">rcaa2@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>692</fpage>
      <lpage>719</lpage>
      <uri content-type="arpha" xlink:href="http://openbiodiv.net/68E597AB-8415-56CB-AD53-FFFAAE98DC80">68E597AB-8415-56CB-AD53-FFFAAE98DC80</uri>
      <uri content-type="zenodo_dep_id" xlink:href="https://zenodo.org/record/5505115">5505115</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>Rodrigo Andrade, Henrique Rebelo, Márcio Ribeiro, Paulo Borba</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>In Software Product Lines (SPL), we can bind reusable features to compose a product at different times, which in general are static or dynamic. The former allows customizability without any overhead at runtime. On the other hand, the latter allows feature activation or deactivation while running the application with the cost of performance and memory consumption. To implement features, we might use aspect-oriented programming (AOP), in which aspects enable a clear separation between invariable code and variable code. In this context, recent work provides AspectJ-based idioms to implement flexible feature binding. However, we identified some design deficiencies. Thus, to solve the issues of these idioms, we incrementally create three AspectJ-based idioms. We apply these idioms to provide flexible binding for 16 features from five different product lines. Moreover, to evaluate our idioms, we quantitatively analyze them with respect to code cloning, scattering, tangling, and size by means of software metrics. Besides that, we qualitatively discuss our idioms in terms of code reusability, changeability, instrumentation overhead, behavior, and feature interaction. In conclusion, we show evidences that our idioms address the issues of those existing ones.</p>
      </abstract>
    </article-meta>
  </front>
</article>
