<!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>Notes on the Parallels Between Biological and Software Evolution</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ladislav Samuelis</string-name>
          <email>ladislav.samuelis@tuke.sk</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>2012 by the paper's authors. Copying permitted only for private and academic purposes. This volume is published and copyrighted by its editors. Local Proceedings also appeared in ISBN 978-86-7031-200-5, Faculty of Sciences, University of Novi Sad</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Technical University of Košice Letná 9</institution>
          ,
          <addr-line>Košice</addr-line>
          <country country="SK">Slovakia</country>
        </aff>
      </contrib-group>
      <fpage>129</fpage>
      <lpage>132</lpage>
      <abstract>
        <p>This contribution analyzes parallels between software and biological evolution published in software engineering literature. Several papers suggest to the software engineering community that software and biological systems share some useful features of evolution. We compare the driving forces of the software evolution with biological evolution and highlight their different nature. We conclude that searching for parallels between biological and software evolution is a challenging task but at the same time there are limits, which may be hardly observed in the impure research field of software evolution.</p>
      </abstract>
      <kwd-group>
        <kwd>Software engineering</kwd>
        <kwd>software evolution</kwd>
        <kwd>software maintenance</kwd>
        <kwd>biological evolution</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>
        Writing this paper was motivated by the author’s
reading papers in software engineering journals devoted to the
parallels between the software and biological evolution, e.g.
[
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] and [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. These works suggest that “new light can
be shed on the nature of software evolution investigating the
parallels between the biological and software evolution”. We
put some questions: Is it feasible to rely in software
development processes on principles of biological evolution? Are
there any “parallels” or common “key properties” at all?
      </p>
      <p>The aim of this contribution is to highlight observations
concerning the role of biological evolution mechanisms within
the context of computer science and software engineering. In
particular, it analyzes the abstractions and driving forces of
the biological and software evolution. In the conclusion we
summarize the possible ways of misunderstandings.
2.</p>
    </sec>
    <sec id="sec-2">
      <title>SOME HISTORICAL NOTES ON SOFT</title>
    </sec>
    <sec id="sec-3">
      <title>WARE EVOLUTION</title>
      <p>
        The notion of software evolution, which is closely related
and often interchanged with the term maintenance was
already introduced in the middle of the seventies when Lehman
and Belady examined the growth and the evolution of a
number of large software systems [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. They proposed 8 laws,
which are often cited in software engineering literature and
are considered as the first research results gained by
observing the evolution of large software systems.
      </p>
      <p>
        The term software evolution has emerged in many research
papers with roots both in computer science and software
engineering disciplines [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Nowadays, it has become an
accepted research area. In spite of the fact that the science
of software evolution is in its infancy, formal theories are
being developed and empirical observations are compared
to the predicted results.
      </p>
      <p>Lehman’s second law states the following: An evolving
system increases its complexity unless work is done to
reduce it. Due to the consequences of this law and due to
the increased computing power, research in software and
related areas accelerates and very often causes confusion and
inconsistency in the used terminology.</p>
      <p>Research on software evolution is discussed in many
software related disciplines. Topics of software evolution are
subjects of many conferences and workshops, too. In the
following paragraph we will briefly characterize the
interpretation of the notion of evolution in the short history of
software engineering.</p>
      <p>
        The notions of program synthesis or automated program
construction are the first forerunners of the evolution
abstraction in software engineering. Papers devoted to these
topics can be found also in the research field of automated
program synthesis. Practical results achieved in the field
of programming by examples are summarized, for example
in book [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. The general principle of these approaches are
based on the inductive inference principle [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        The term evolution was originally a synonym for the
automation of program construction and for the discovery of
the reusable code – i.e. searching for loops. Later on, when
programming technologies matured and program libraries
and components were established in practice, the research
field of pattern reuse [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and engineering component-based
systems [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] drew attention of the theory and practice to
component engineering. In other words, a slight shift to
component-based aspect is observed in the course of
program construction. We may say that the widely used term
of customization was stressed and later on this term also
merged with the notion of evolution. Of course, this shift
was heavily supported by the object-oriented programming
languages, which penetrated into the industrial practice in
the 1980s.
      </p>
      <p>
        Since it was a necessity to maintain large and more
complex legacy systems, the topic of program comprehension
came into focus and became more and more important.
Program comprehension is an activity drafted, for example, in
the paper of Rajlich and Wilde [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] as: Program
comprehension is an essential part of software evolution and software
maintenance: software that is not comprehended cannot be
changed. The fields of software documentation,
visualization, program design, and so forth, are driven by the need for
program comprehension. Program comprehension also
provides motivation for program analysis, refactoring,
reengineering, and other processes.
      </p>
      <p>
        This is in compliance with the idea that our understanding
of the domain problem incrementally evolves and learning is
an indispensable part of program comprehension. Rajlich in
dealing with the changing paradigm of software engineering
stresses the importance of the concept location. He argues
that the volatility of the requirements is the result of the
developer’s learning. Thus learning and understanding or
comprehension is indispensably coupled with the concept of
evolution [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>
        These ideas are the forerunners of domain engineering as
described by Bjorner in his work [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. We add that mental
activities associated with understanding are dealt within the
cognitive sciences and it is important to realize that, for
example, not all software design concepts (intangibilities in
the mind) can be formalized.
      </p>
      <p>
        The scattered results from the above mentioned areas lead
to the attempt to establish the taxonomy of software
evolution [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Further areas of the contemporary research, which
deal more or less with the evolution concept, are software
merging [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], measurement of the flexibility and
complexity of the software [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], and software visualization for reverse
engineering [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>
        It is also obvious that the evolution principle in the
biological interpretation heavily attracted and influenced the
research of the evolution in software engineering. The work
of Nehaniv et al. critically warns the software engineering
community about the non-obvious traps when the evolution
principles valid in biology are mechanically applied to the
area of software artifacts [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
      <p>These short notes highlighted the interlacing of software
related disciplines and how they mutually influence each
other.</p>
    </sec>
    <sec id="sec-4">
      <title>DOES SOFTWARE DEVELOPMENT BE</title>
    </sec>
    <sec id="sec-5">
      <title>NEFIT FROM THE MECHANISMS OF</title>
    </sec>
    <sec id="sec-6">
      <title>BIOLOGICAL EVOLUTION?</title>
      <p>Our position is that abstractions and mechanisms of
biological evolution have limited impact on our understanding
of software evolution. It is a challenge to question and clear
the abstractions derived from the parallels in the impure
field of software evolution. Questioning parallels between
the biological and software systems reveals the limits of their
applicability.</p>
      <p>
        Let us cite from the work of Svetinovic and Godfrey [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]:
[...] all possible mechanisms that introduce
variation in the software world are introduced by
intentional human actions. So how do they
relate? We take the stand that it does not matter
at all. The important fact is that there exist the
mechanisms that introduce change and variation
in both.
      </p>
      <p>In fact this approach neglects at all the importance of the
change mechanisms. That is why we cannot discuss about
the differences or similarities between them.</p>
      <p>The next sentence says:</p>
      <sec id="sec-6-1">
        <title>Who or what is the reason for this change and</title>
        <p>variation, and how they get incorporated into the
population is not of great importance. [...]</p>
        <p>If we want to analyze the parallels between the
biological and software evolution then it is of great importance to
characterize them. First of all, we have to distinguish
between the processes that model the domain and processes
that select the appropriate model for the domain. The
selection of the appropriate model (or software development)
is a non-deterministic process and that is why it cannot be
fully automated, too.</p>
        <p>Let us put the question: How does genetic algorithms
relate to software evolution?</p>
        <p>If we accept the standpoint that software models processes
of a certain domain (natural or artificial) by algorithms (not
only) then those algorithms may be inspired (among others)
also by natural evolution (see, for example, the Wikipedia
definition of the genetic algorithm). The answer is clear,
genetic algorithms belong to the world of algorithms (the
abstractions applied to a certain domain may be valid or
not).</p>
        <p>If we accept the standpoint that changes ”are introduced
by intentional human actions” (as stated by the authors in
the same paper) then we also have to admit that the changes
are non-deterministic (it is also possible to select other
algorithms than genetic for modeling a particular problem).</p>
        <p>The conclusion is that we have to be aware and not to
confuse non-deterministic human activities with the
deterministic processes of the natural evolution.</p>
        <p>The following sentence of the authors says:</p>
      </sec>
      <sec id="sec-6-2">
        <title>The methodology and consequences stay the</title>
        <p>same as long as the whole process is the same.</p>
        <p>Accepting the fact that the processes are not the same
intrinsically (software development is non-deterministic
process – based on creative thinking and understanding) then we
have to avoid temptation (very comfortable) to write about
”some common principles, mechanisms between the software
and biological evolution”.</p>
        <p>Otherwise we come to the conclusion that software
development is a deterministic process (some natural process),
which is contradiction with our initial standpoint (it is
nondeterministic).</p>
        <p>To sum up, we have to differentiate strictly between the
processes that we model and the thinking-understanding
(this was not yet modeled). These processes belong to two
”distinct worlds”. If we superficially ”merge” these two worlds
(intentionally or unintentionally) then we deliberately give
up seeking the truth and may construct false theories.</p>
        <p>The same work states also:</p>
        <p>If one wants to make the parallel between
biological and software evolution, one could argue
about the similarity of mutation to the
incorporation of new, relatively origin features into the
product. Recombination could be treated similar
to the product combination and gene flow could
be compared to the improvements due to the flow
of knowledge similar.</p>
        <p>We note that it is easy to find common abstractions on
the observational level and, for example, to draw an analogy
between the biological mutation and the incorporation of
new features into the product. At the same time we have to
declare that here we arrived to our boundaries. We have to
fix that gene flow is deterministic but flow of knowledge is
unknown and non-deterministic.</p>
        <p>
          In other words; software is modified by actions of human
beings, while biological evolution is not the result of
actions by human beings. Biological evolution is forced by
”some natural” forces. Processes that drive the organism’s
genotypes and phenotypes [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] are deterministic and cannot
be compared non-deterministic flow of knowledge applied to
the man-made artifacts.
        </p>
        <p>
          This idea is expressed from another aspect by Jazayeri
[
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]:
        </p>
        <p>[...] Not the software itself evolves, but our
understanding and the comprehension of the
reality. [...]</p>
        <p>
          This approach stresses the importance of program
comprehension and the tools that support comprehension (see
also the work of Jackson [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] on tools for supporting
understanding).
        </p>
        <p>In summary, software evolution evolves according to our
understanding of the domain, which we want to model by
the computer. From this point of view knowledge about
biological evolution does not support our understanding of
the domain under consideration (or universe of discourse).</p>
        <p>Considering a software’s life cycle phases, we may observe
(and have to observe) in all steps (as domain engineering,
requirements engineering, specification, design,
implementation, test, and operation) learning activities, which in fact
means the evolution of our understanding of the modeled
phenomenon.</p>
        <p>
          Much more effective, than to seek parallels between
biological and software evolution is to follow the ideas in works
of Bjorner [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. He introduces the notion of domain
engineering and his triptych dogma says:
        </p>
        <p>[...] Software cannot be designed without a
robust understanding of the requirements and
the requirements cannot be prescribed without
a robust understanding of the domain. [...]</p>
        <p>As far as we know, the only way of achieving a robust
understanding of the domain is attentive work in the domain
in order to gain experiences by trial and error. This is also
called inductive inference and the product is our intangible
understanding of the idea to be modelled. Following this
thread of thought; the result of inductive inference is a
deductive system (software or model), which has to be mapped
on the computer.</p>
        <p>In fact, it is not possible to build a software system
without thorough understanding of the domain (which we do
anyhow through all phases of software development life
cycle). The more deeply we understand the reality the more
the software could be evolved.</p>
        <p>
          We must note that the Software Engineering Method and
Theory initiative [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] does not mention parallels between
biological and software evolution at all.
4.
        </p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>CONCLUSION</title>
      <p>Summing up, the existing disciplines of software
engineering approach the phenomenon of evolution from various
aspects. These approaches have their own history and
theoretical roots; they are in various branches of
computer/computing science and are treated from the philosophical point of
view, too. It can be guaranteed that new techniques and
research areas will emerge in the near future and will further
deal with the phenomenon of evolution.</p>
      <p>We hope that the above-discussed ideas will focus the
attention of software engineers toward the reconsideration
of the obviously claimed statements, which are against the
facts observed in reality. In other words, to provoke a
discussion about the feasibility of biological and software evolution
parallels in software development.
5.</p>
    </sec>
    <sec id="sec-8">
      <title>ACKNOWLEDGMENTS</title>
      <p>This work was supported by the project KEGA
040TUKE4/2011: Modern Software Engineering in Education –
Proposal of the Structure and Realization of Actual Software
Engineering Subjects for Informatics Study Program at
Technical Universities.
6.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>[1] http://en.wikipedia.org/wiki/Inductive inference.</mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>F.</given-names>
            <surname>Allen</surname>
          </string-name>
          .
          <article-title>The history of language processor technology in ibm</article-title>
          .
          <source>IBM Journal of Research and Development</source>
          ,
          <volume>25</volume>
          (
          <issue>2</issue>
          ):
          <fpage>535</fpage>
          -
          <lpage>548</lpage>
          ,
          <year>1981</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>D.</given-names>
            <surname>Bjorner</surname>
          </string-name>
          . Domain engineering: Technology management, research and engineering,. http://www2.imm.dtu.dk/ db/jaistmono.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Bjorner</surname>
          </string-name>
          .
          <article-title>From domains to requirements. methodology contributions to domain analysis and requirements engineering</article-title>
          . http://www2.imm.dtu.dk/ db/from-domains-torequirements.pdf,.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>Buckley</surname>
          </string-name>
          .
          <article-title>Towards a taxonomy of software change</article-title>
          .
          <source>Journal of Software Maintenance</source>
          ,
          <volume>17</volume>
          (
          <issue>5</issue>
          ):
          <fpage>309</fpage>
          -
          <lpage>332</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Eden</surname>
          </string-name>
          .
          <article-title>Measuring software exibility</article-title>
          .
          <source>IEE Software</source>
          ,
          <volume>153</volume>
          (
          <issue>3</issue>
          ):
          <fpage>113</fpage>
          -
          <lpage>126</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>A. C.</surname>
          </string-name>
          et al.
          <article-title>Watch What I Do: Programming by Demonstration, chapter Chapter ”Programming by demonstration”</article-title>
          . Cambridge University Press,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M.</given-names>
            <surname>Fowler</surname>
          </string-name>
          .
          <source>Analysis Patterns: Reusable Object Models, volume Object Technology Series. The Addison-Wesley</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>[9] http://en.wikipedia.org/wiki/Genotypephenotype distinction.</mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Jackson</surname>
          </string-name>
          .
          <source>Automated Software Engineering</source>
          , volume
          <volume>15</volume>
          , pages
          <fpage>275</fpage>
          -
          <lpage>281</lpage>
          . Kluwer Academic Publishers Hingham, Dec.
          <year>2008</year>
          . ISSN:
          <fpage>0928</fpage>
          -
          <lpage>8910</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Jazayeri</surname>
          </string-name>
          .
          <article-title>Species evolve, individuals age</article-title>
          .
          <source>In In International Workshop on Principles of Software Evolution. ACM</source>
          , Sept. 5-6
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>R.</given-names>
            <surname>Koschke</surname>
          </string-name>
          .
          <article-title>Software visualization, state-of-the-art survey</article-title>
          .
          <source>In Software Visualization for Reverse Engineering</source>
          , volume
          <volume>2269</volume>
          , pages
          <fpage>113</fpage>
          -
          <lpage>126</lpage>
          . Springer LNCS,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M.</given-names>
            <surname>Lehman</surname>
          </string-name>
          and
          <string-name>
            <given-names>L.</given-names>
            <surname>Belady</surname>
          </string-name>
          .
          <article-title>A model of large program development</article-title>
          .
          <source>IBM Systems Journal</source>
          ,
          <volume>15</volume>
          (
          <issue>3</issue>
          ):
          <fpage>225</fpage>
          -
          <lpage>252</lpage>
          ,
          <year>1976</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          .
          <article-title>A state-of-the-art survey on software merging</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          ,
          <volume>28</volume>
          (
          <issue>5</issue>
          ):
          <fpage>449</fpage>
          -
          <lpage>462</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>C.</given-names>
            <surname>Nehaniv</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hewitt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Christianson</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Wernick</surname>
          </string-name>
          .
          <article-title>What software evolution and biological evolution don't have in common</article-title>
          .
          <source>In SOFTWARE-EVOLVABILITY '06: Proceedings of the Second International IEEE Workshop on Software Evolvability</source>
          , pages
          <fpage>58</fpage>
          -
          <lpage>65</lpage>
          , Washington, DC, USA,
          <year>2006</year>
          . IEEE Computer Society.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>L. J.</given-names>
            <surname>Osterweil</surname>
          </string-name>
          . What is software?
          <source>Automated Software Engineering</source>
          ,
          <volume>15</volume>
          (
          <issue>3</issue>
          ):
          <fpage>261</fpage>
          -
          <lpage>273</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>V.</given-names>
            <surname>Rajlich</surname>
          </string-name>
          .
          <article-title>Changing the paradigm of software engineering</article-title>
          .
          <source>Commun. ACM</source>
          ,
          <volume>49</volume>
          (
          <issue>8</issue>
          ):
          <fpage>67</fpage>
          -
          <lpage>70</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>V.</given-names>
            <surname>Rajlich</surname>
          </string-name>
          and
          <string-name>
            <given-names>N.</given-names>
            <surname>Wilde</surname>
          </string-name>
          .
          <article-title>The role of concepts in program comprehension</article-title>
          .
          <source>In Proceedings of the IEEE International Workshop on Program Comprehension</source>
          , pages
          <fpage>271</fpage>
          -
          <lpage>278</lpage>
          . IEEE Computer Society Press,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>A.</given-names>
            <surname>Sampaio</surname>
          </string-name>
          .
          <article-title>Software phenetics, phylogeny and evolution</article-title>
          .
          <source>In Software Evolvability</source>
          , 2007 Third International IEEE Workshop on, pages
          <fpage>60</fpage>
          -
          <lpage>66</lpage>
          , oct.
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>[20] http://www.semat.org.</mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>D.</given-names>
            <surname>Svetinovic</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Godfrey</surname>
          </string-name>
          .
          <article-title>Software and biological evolution: Some common principles, mechanism, and a definition</article-title>
          .
          <source>In Proceedings of the 8th IWPSE</source>
          , Lisbon,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>L.</given-names>
            <surname>Yu</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Ramaswamy</surname>
          </string-name>
          .
          <article-title>Software and biological evolvability: A comparison using key properties</article-title>
          .
          <source>In Software Evolvability</source>
          ,
          <year>2006</year>
          . SE '06. Second International IEEE Workshop on, pages
          <fpage>82</fpage>
          -
          <lpage>88</lpage>
          , sept.
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>