<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Enabling Technologies for Longevity of Software</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mahdi Derakhshanmanesh</string-name>
          <email>manesh@uni-koblenz.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marvin Grieger</string-name>
          <email>mgrieger@s-lab.uni-paderborn.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute for Software Technology University of Koblenz-Landau</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>s-lab - Software Quality Lab University of Paderborn</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2014</year>
      </pub-date>
      <volume>8767</volume>
      <fpage>112</fpage>
      <lpage>114</lpage>
      <abstract>
        <p>In ongoing work, we advocate the integration of models and code as two equal constituents of software components. This approach can be followed to create flexible and self-adaptive software. We claim to extend this direction as a conceptual and technological basis for combining adaptation and evolution to achieve longevity. As a stimulus for discussions at the workshop, we present our work on model-integrating software components as one enabling technology for supporting a seamless software evolution process. In addition, we propose further enabling technologies and provide an initial set of related challenges.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>Copyright c by the paper’s authors. Copying permitted for private and academic purposes.</p>
      <sec id="sec-1-1">
        <title>Seamless Software Evolution Process</title>
        <sec id="sec-1-1-1">
          <title>Planning</title>
        </sec>
        <sec id="sec-1-1-2">
          <title>Evaluation</title>
          <p>Adaptation
Adaptation
Manager</p>
        </sec>
        <sec id="sec-1-1-3">
          <title>Analysis</title>
        </sec>
        <sec id="sec-1-1-4">
          <title>Monitoring</title>
          <p>Evolution
Software
Engineer</p>
        </sec>
        <sec id="sec-1-1-5">
          <title>Execution</title>
        </sec>
        <sec id="sec-1-1-6">
          <title>Realization</title>
        </sec>
        <sec id="sec-1-1-7">
          <title>Knowledge Base</title>
          <p>Dependency on
enabling technologies</p>
        </sec>
      </sec>
      <sec id="sec-1-2">
        <title>Enabling</title>
      </sec>
      <sec id="sec-1-3">
        <title>Technologies</title>
      </sec>
      <sec id="sec-1-4">
        <title>Legend</title>
        <sec id="sec-1-4-1">
          <title>Planning</title>
          <p>Activity
Transition</p>
          <p>ET1 Architectural</p>
          <p>Capabilities</p>
          <p>ET2</p>
          <p>Modeling
Capabilities</p>
          <p>ET3</p>
          <p>Reengineering</p>
          <p>Capabilities
…
Certainly, there are open challenges related to each cycle and especially to their single activities. For example,
the monitoring and analysis activities are crucial when assuming that they need to keep both cycles “in sync”.
Hence, one may ask how to automatically decide when to switch from one cycle to the other, e.g., in cases where
the adaptation manager cannot control an emerged situation.</p>
          <p>While very relevant, such questions are out of the scope of this short paper, though. Instead, we like to point
out that there is a need for enabling technologies to support the SSE process. We believe that they must at
least facilitate architectural capabilities (ET1) and provide modeling capabilities (ET2) as well as reengineering
capabilities (ET3). Next, we discuss these three enabling technologies in more detail and identify an initial set
of related challenges.</p>
          <p>We have already discussed some of the benefits of combining models and code within model-integrating
software components to enhance flexibility and to offer software engineers a spectrum of possibilities to choose
from when designing and implementing their systems [DEIE14]. As knowledge shall be shared between activities
in the adaptation and evolution cycles, strategies and guidelines will be needed. Hence, we are convinced that
providing the right architectural capabilities for software design and development is critical, but still requires
some challenges to be tackled. Amongst others, questions related (i) to the distribution of models onto software
components as well as (ii) to the role-based accessibility of these models within components must be answered.</p>
          <p>Considering that models are used in both cycles – these may be even the very same models – we assume that
an elementary set of modeling capabilities is required by both cycles. For example, activities in both cycles might
attempt to modify the same model, e.g., during execution and realization. This yields the challenge to provide
transaction concepts for models and the sketched knowledge base. Another example for capabilities required
by both cycles are the specification and the realization of execution environments for models, since executable
models can be used to achieve adaptivity and the evolution cycle must be capable of introducing and changing
them. Whenever code of a software system is transformed to a model, either by adaptation or evolution, a
corresponding execution environment needs to be instantiated. A related challenge is to find ways for efficiently
performing this task.</p>
          <p>Furthermore, unforeseen events need to be tackled in the evolution cycle. There exists a large body of
knowledge in (model-driven) software reengineering that can be applied here. We assume that a solid set of
reengineering capabilities to support this task will also be beneficial for adaptation. For instance, evolution may
require to reverse engineer and restructure a software system, or to generate source code. The same
capabilities can be beneficial for adaptation purposes at runtime. Challenges include how to specify and implement
reengineering methods that are reusable under varying situational context, namely adaptation and evolution.</p>
          <p>Indeed, we are convinced that there are many more challenges to be discussed and we hope to identify a more
concrete list of them during the workshop.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Concluding Remarks</title>
      <p>A decade ago, challenges for software evolution were discussed by Mens et al. [MWD+05]. The topic is still very
relevant, today. Existing architectural approaches to develop adaptive software, like MoCos, can be beneficial to
achieve longevity. Models (at runtime) – e.g., such as those proposed by Blair et al. [BBF09] – can play a key
role at the intersection between adaptation and evolution cycles. However, we believe that these directions alone
are not sufficient and claim that a set of enabling technologies that facilitate at least (i) architectural capabilities,
(ii) modeling capabilities and (iii) reengineering capabilities is a fundamental prerequisite to achieving the greater
vision of long-living software. This short paper intends to provide a starting point and context for discussion.
Acknowledgements
This ongoing work is a result of the MoSAiC project, supported by the Deutsche Forschungsgemeinschaft (DFG)
under grants EB 119/11-1 and EN 184/6-1.
[BBF09]
[DEIE14]
[HHJ+13]</p>
      <p>Wilhelm Hasselbring, Robert Heinrich, Reiner Jung, Andreas Metzger, Klaus Pohl, Ralf
Reussner, and Eric Schmieders. iobserve: Integrated observation and modeling techniques to support
adaptation and evolution of software systems. Technical Report, 1309, 2013.
[RB00]</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <given-names>Gordon</given-names>
            <surname>Blair</surname>
          </string-name>
          ,
          <source>Nelly Bencomo, and Robert B. France. Models@run.time. Computer</source>
          ,
          <volume>42</volume>
          (
          <issue>10</issue>
          ):
          <fpage>22</fpage>
          -
          <lpage>27</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [MWD+05]
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wermelinger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ducasse</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Demeyer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hirschfeld</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Jazayeri</surname>
          </string-name>
          .
          <article-title>Challenges in Software Evolution</article-title>
          . In Principles of Software Evolution, Eighth International Workshop on, pages
          <fpage>13</fpage>
          -
          <lpage>22</lpage>
          ,
          <year>Sept 2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [ST09] Va´clav
          <string-name>
            <given-names>T</given-names>
            <surname>Rajlich</surname>
          </string-name>
          and
          <string-name>
            <surname>Keith H Bennett</surname>
          </string-name>
          .
          <article-title>A Staged Model for the Software Life Cycle</article-title>
          . Computer,
          <volume>33</volume>
          (
          <issue>7</issue>
          ):
          <fpage>66</fpage>
          -
          <lpage>71</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <given-names>ACM</given-names>
            <surname>Trans. Auton</surname>
          </string-name>
          . Adapt. Syst.,
          <volume>4</volume>
          (
          <issue>2</issue>
          ):
          <volume>14</volume>
          :
          <fpage>1</fpage>
          --
          <lpage>14</lpage>
          :
          <fpage>42</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>