=Paper= {{Paper |id=None |storemode=property |title=Notes on the Parallels Between Biological and Software Evolution |pdfUrl=https://ceur-ws.org/Vol-920/p129-samuelis.pdf |volume=Vol-920 |dblpUrl=https://dblp.org/rec/conf/bci/Samuelis12 }} ==Notes on the Parallels Between Biological and Software Evolution== https://ceur-ws.org/Vol-920/p129-samuelis.pdf
     Notes on the Parallels Between Biological and Software
                            Evolution

                                                                   Ladislav Samuelis
                                                             Technical University of Košice
                                                                    Letná 9, Košice
                                                                       Slovakia
                                                            ladislav.samuelis@tuke.sk

ABSTRACT                                                                                2. SOME HISTORICAL NOTES ON SOFT-
This contribution analyzes parallels between software and                                  WARE EVOLUTION
biological evolution published in software engineering liter-                              The notion of software evolution, which is closely related
ature. Several papers suggest to the software engineering                               and often interchanged with the term maintenance was al-
community that software and biological systems share some                               ready introduced in the middle of the seventies when Lehman
useful features of evolution. We compare the driving forces                             and Belady examined the growth and the evolution of a num-
of the software evolution with biological evolution and high-                           ber of large software systems [13]. They proposed 8 laws,
light their different nature. We conclude that searching for                            which are often cited in software engineering literature and
parallels between biological and software evolution is a chal-                          are considered as the first research results gained by observ-
lenging task but at the same time there are limits, which                               ing the evolution of large software systems.
may be hardly observed in the impure research field of soft-                               The term software evolution has emerged in many research
ware evolution.                                                                         papers with roots both in computer science and software
                                                                                        engineering disciplines [16]. Nowadays, it has become an
                                                                                        accepted research area. In spite of the fact that the science
Categories and Subject Descriptors                                                      of software evolution is in its infancy, formal theories are
D.2.7 [Software Engineering]: Distribution, Maintenance,                                being developed and empirical observations are compared
and Enhancement—Enhancement; D.2.13 [Software Engi-                                     to the predicted results.
neering]: Reusable Software—Reuse models                                                   Lehman’s second law states the following: An evolving
                                                                                        system increases its complexity unless work is done to re-
                                                                                        duce it. Due to the consequences of this law and due to
Keywords                                                                                the increased computing power, research in software and re-
Software engineering, software evolution, software mainte-                              lated areas accelerates and very often causes confusion and
nance, biological evolution                                                             inconsistency in the used terminology.
                                                                                           Research on software evolution is discussed in many soft-
                                                                                        ware related disciplines. Topics of software evolution are
1.    INTRODUCTION                                                                      subjects of many conferences and workshops, too. In the
  Writing this paper was motivated by the author’s read-                                following paragraph we will briefly characterize the inter-
ing papers in software engineering journals devoted to the                              pretation of the notion of evolution in the short history of
parallels between the software and biological evolution, e.g.                           software engineering.
[22], [15] and [19]. These works suggest that “new light can                               The notions of program synthesis or automated program
be shed on the nature of software evolution investigating the                           construction are the first forerunners of the evolution ab-
parallels between the biological and software evolution”. We                            straction in software engineering. Papers devoted to these
put some questions: Is it feasible to rely in software devel-                           topics can be found also in the research field of automated
opment processes on principles of biological evolution? Are                             program synthesis. Practical results achieved in the field
there any “parallels” or common “key properties” at all?                                of programming by examples are summarized, for example
  The aim of this contribution is to highlight observations                             in book [7]. The general principle of these approaches are
concerning the role of biological evolution mechanisms within                           based on the inductive inference principle [1].
the context of computer science and software engineering. In                               The term evolution was originally a synonym for the au-
particular, it analyzes the abstractions and driving forces of                          tomation of program construction and for the discovery of
the biological and software evolution. In the conclusion we                             the reusable code – i.e. searching for loops. Later on, when
summarize the possible ways of misunderstandings.                                       programming technologies matured and program libraries
                                                                                        and components were established in practice, the research
                                                                                        field of pattern reuse [8] and engineering component-based
                                                                                        systems [2] drew attention of the theory and practice to
BCI’12, September 16–20, 2012, Novi Sad, Serbia.                                        component engineering. In other words, a slight shift to
Copyright c 2012 by the paper’s authors. Copying permitted only for private and         component-based aspect is observed in the course of pro-
academic purposes. This volume is published and copyrighted by its editors.             gram construction. We may say that the widely used term
Local Proceedings also appeared in ISBN 978-86-7031-200-5, Faculty of Sciences,
                                                                                        of customization was stressed and later on this term also
University of Novi Sad.


                                                                                  129
merged with the notion of evolution. Of course, this shift                   intentional human actions. So how do they re-
was heavily supported by the object-oriented programming                     late? We take the stand that it does not matter
languages, which penetrated into the industrial practice in                  at all. The important fact is that there exist the
the 1980s.                                                                   mechanisms that introduce change and variation
   Since it was a necessity to maintain large and more com-                  in both.
plex legacy systems, the topic of program comprehension
                                                                          In fact this approach neglects at all the importance of the
came into focus and became more and more important. Pro-
                                                                        change mechanisms. That is why we cannot discuss about
gram comprehension is an activity drafted, for example, in
                                                                        the differences or similarities between them.
the paper of Rajlich and Wilde [18] as: Program comprehen-
                                                                          The next sentence says:
sion is an essential part of software evolution and software
maintenance: software that is not comprehended cannot be                        Who or what is the reason for this change and
changed. The fields of software documentation, visualiza-                    variation, and how they get incorporated into the
tion, program design, and so forth, are driven by the need for               population is not of great importance. [...]
program comprehension. Program comprehension also pro-
vides motivation for program analysis, refactoring, reengi-                If we want to analyze the parallels between the biologi-
neering, and other processes.                                           cal and software evolution then it is of great importance to
   This is in compliance with the idea that our understanding           characterize them. First of all, we have to distinguish be-
of the domain problem incrementally evolves and learning is             tween the processes that model the domain and processes
an indispensable part of program comprehension. Rajlich in              that select the appropriate model for the domain. The se-
dealing with the changing paradigm of software engineering              lection of the appropriate model (or software development)
stresses the importance of the concept location. He argues              is a non-deterministic process and that is why it cannot be
that the volatility of the requirements is the result of the            fully automated, too.
developer’s learning. Thus learning and understanding or                   Let us put the question: How does genetic algorithms
comprehension is indispensably coupled with the concept of              relate to software evolution?
evolution [17].                                                            If we accept the standpoint that software models processes
   These ideas are the forerunners of domain engineering as             of a certain domain (natural or artificial) by algorithms (not
described by Bjorner in his work [3]. We add that mental                only) then those algorithms may be inspired (among others)
activities associated with understanding are dealt within the           also by natural evolution (see, for example, the Wikipedia
cognitive sciences and it is important to realize that, for             definition of the genetic algorithm). The answer is clear,
example, not all software design concepts (intangibilities in           genetic algorithms belong to the world of algorithms (the
the mind) can be formalized.                                            abstractions applied to a certain domain may be valid or
   The scattered results from the above mentioned areas lead            not).
to the attempt to establish the taxonomy of software evolu-                If we accept the standpoint that changes ”are introduced
tion [5]. Further areas of the contemporary research, which             by intentional human actions” (as stated by the authors in
deal more or less with the evolution concept, are software              the same paper) then we also have to admit that the changes
merging [14], measurement of the flexibility and complex-               are non-deterministic (it is also possible to select other al-
ity of the software [6], and software visualization for reverse         gorithms than genetic for modeling a particular problem).
engineering [12].                                                          The conclusion is that we have to be aware and not to
   It is also obvious that the evolution principle in the bi-           confuse non-deterministic human activities with the deter-
ological interpretation heavily attracted and influenced the            ministic processes of the natural evolution.
research of the evolution in software engineering. The work                The following sentence of the authors says:
of Nehaniv et al. critically warns the software engineering                     The methodology and consequences stay the
community about the non-obvious traps when the evolution                     same as long as the whole process is the same.
principles valid in biology are mechanically applied to the
area of software artifacts [15].                                           Accepting the fact that the processes are not the same
   These short notes highlighted the interlacing of software            intrinsically (software development is non-deterministic pro-
related disciplines and how they mutually influence each                cess – based on creative thinking and understanding) then we
other.                                                                  have to avoid temptation (very comfortable) to write about
                                                                        ”some common principles, mechanisms between the software
3.   DOES SOFTWARE DEVELOPMENT BE-                                      and biological evolution”.
                                                                           Otherwise we come to the conclusion that software devel-
     NEFIT FROM THE MECHANISMS OF                                       opment is a deterministic process (some natural process),
     BIOLOGICAL EVOLUTION?                                              which is contradiction with our initial standpoint (it is non-
   Our position is that abstractions and mechanisms of bio-             deterministic).
logical evolution have limited impact on our understanding                 To sum up, we have to differentiate strictly between the
of software evolution. It is a challenge to question and clear          processes that we model and the thinking-understanding
the abstractions derived from the parallels in the impure               (this was not yet modeled). These processes belong to two
field of software evolution. Questioning parallels between              ”distinct worlds”. If we superficially ”merge” these two worlds
the biological and software systems reveals the limits of their         (intentionally or unintentionally) then we deliberately give
applicability.                                                          up seeking the truth and may construct false theories.
   Let us cite from the work of Svetinovic and Godfrey [21]:               The same work states also:
        [...] all possible mechanisms that introduce                            If one wants to make the parallel between bi-
     variation in the software world are introduced by                       ological and software evolution, one could argue


                                                                  130
     about the similarity of mutation to the incorpo-                     We must note that the Software Engineering Method and
     ration of new, relatively origin features into the                 Theory initiative [20] does not mention parallels between
     product. Recombination could be treated similar                    biological and software evolution at all.
     to the product combination and gene flow could
     be compared to the improvements due to the flow
     of knowledge similar.
                                                                        4. CONCLUSION
                                                                           Summing up, the existing disciplines of software engineer-
   We note that it is easy to find common abstractions on               ing approach the phenomenon of evolution from various as-
the observational level and, for example, to draw an analogy            pects. These approaches have their own history and theoret-
between the biological mutation and the incorporation of                ical roots; they are in various branches of computer/comput-
new features into the product. At the same time we have to              ing science and are treated from the philosophical point of
declare that here we arrived to our boundaries. We have to              view, too. It can be guaranteed that new techniques and re-
fix that gene flow is deterministic but flow of knowledge is            search areas will emerge in the near future and will further
unknown and non-deterministic.                                          deal with the phenomenon of evolution.
   In other words; software is modified by actions of human                We hope that the above-discussed ideas will focus the
beings, while biological evolution is not the result of ac-             attention of software engineers toward the reconsideration
tions by human beings. Biological evolution is forced by                of the obviously claimed statements, which are against the
”some natural” forces. Processes that drive the organism’s              facts observed in reality. In other words, to provoke a discus-
genotypes and phenotypes [9] are deterministic and cannot               sion about the feasibility of biological and software evolution
be compared non-deterministic flow of knowledge applied to              parallels in software development.
the man-made artifacts.
   This idea is expressed from another aspect by Jazayeri
[11]:                                                                   5. ACKNOWLEDGMENTS
                                                                          This work was supported by the project KEGA 040TUKE-
         [...] Not the software itself evolves, but our                 4/2011: Modern Software Engineering in Education – Pro-
     understanding and the comprehension of the re-                     posal of the Structure and Realization of Actual Software
     ality. [...]                                                       Engineering Subjects for Informatics Study Program at Tech-
   This approach stresses the importance of program com-                nical Universities.
prehension and the tools that support comprehension (see
also the work of Jackson [10] on tools for supporting under-            6. REFERENCES
standing).
   In summary, software evolution evolves according to our               [1] http://en.wikipedia.org/wiki/Inductive inference.
understanding of the domain, which we want to model by                   [2] F. Allen. The history of language processor technology
the computer. From this point of view knowledge about                        in ibm. IBM Journal of Research and Development,
biological evolution does not support our understanding of                   25(2):535–548, 1981.
the domain under consideration (or universe of discourse).               [3] D. Bjorner. Domain engineering: Technology
   Considering a software’s life cycle phases, we may observe                management, research and engineering,.
(and have to observe) in all steps (as domain engineering,                   http://www2.imm.dtu.dk/ db/jaistmono.pdf.
requirements engineering, specification, design, implementa-             [4] D. Bjorner. From domains to requirements.
tion, test, and operation) learning activities, which in fact                methodology contributions to domain analysis and
means the evolution of our understanding of the modeled                      requirements engineering.
phenomenon.                                                                  http://www2.imm.dtu.dk/ db/from-domains-to-
   Much more effective, than to seek parallels between bio-                  requirements.pdf,.
logical and software evolution is to follow the ideas in works           [5] J. Buckley. Towards a taxonomy of software change.
of Bjorner [4]. He introduces the notion of domain engineer-                 Journal of Software Maintenance, 17(5):309–332, 2005.
ing and his triptych dogma says:                                         [6] A. Eden. Measuring software exibility. IEE Software,
         [...] Software cannot be designed without a                         153(3):113–126, 2006.
     robust understanding of the requirements and                        [7] A. C. et al. Watch What I Do: Programming by
     the requirements cannot be prescribed without                           Demonstration, chapter Chapter ”Programming by
     a robust understanding of the domain. [...]                             demonstration”. Cambridge University Press, 1993.
   As far as we know, the only way of achieving a robust un-             [8] M. Fowler. Analysis Patterns: Reusable Object Models,
derstanding of the domain is attentive work in the domain                    volume Object Technology Series. The
in order to gain experiences by trial and error. This is also                Addison-Wesley, 2000.
called inductive inference and the product is our intangible             [9] http://en.wikipedia.org/wiki/Genotype-
understanding of the idea to be modelled. Following this                     phenotype distinction.
thread of thought; the result of inductive inference is a de-           [10] M. Jackson. Automated Software Engineering,
ductive system (software or model), which has to be mapped                   volume 15, pages 275–281. Kluwer Academic
on the computer.                                                             Publishers Hingham, Dec. 2008. ISSN: 0928-8910.
   In fact, it is not possible to build a software system with-         [11] M. Jazayeri. Species evolve, individuals age. In In
out thorough understanding of the domain (which we do                        International Workshop on Principles of Software
anyhow through all phases of software development life cy-                   Evolution. ACM, Sept. 5-6 2005.
cle). The more deeply we understand the reality the more                [12] R. Koschke. Software visualization, state-of-the-art
the software could be evolved.                                               survey. In Software Visualization for Reverse


                                                                  131
     Engineering, volume 2269, pages 113–126. Springer
     LNCS, 2002.
[13] M. Lehman and L. Belady. A model of large program
     development. IBM Systems Journal, 15(3):225–252,
     1976.
[14] T. Mens. A state-of-the-art survey on software
     merging. IEEE Transactions on Software Engineering,
     28(5):449–462, 2002.
[15] C. Nehaniv, J. Hewitt, B. Christianson, and
     P. Wernick. What software evolution and biological
     evolution don’t have in common. In
     SOFTWARE-EVOLVABILITY ’06: Proceedings of
     the Second International IEEE Workshop on Software
     Evolvability, pages 58–65, Washington, DC, USA,
     2006. IEEE Computer Society.
[16] L. J. Osterweil. What is software? Automated
     Software Engineering, 15(3):261–273, 2008.
[17] V. Rajlich. Changing the paradigm of software
     engineering. Commun. ACM, 49(8):67–70, 2006.
[18] V. Rajlich and N. Wilde. The role of concepts in
     program comprehension. In Proceedings of the IEEE
     International Workshop on Program Comprehension,
     pages 271–278. IEEE Computer Society Press, 2002.
[19] A. Sampaio. Software phenetics, phylogeny and
     evolution. In Software Evolvability, 2007 Third
     International IEEE Workshop on, pages 60 –66, oct.
     2007.
[20] http://www.semat.org.
[21] D. Svetinovic and M. Godfrey. Software and biological
     evolution: Some common principles, mechanism, and
     a definition. In Proceedings of the 8th IWPSE, Lisbon,
     2005.
[22] L. Yu and S. Ramaswamy. Software and biological
     evolvability: A comparison using key properties. In
     Software Evolvability, 2006. SE ’06. Second
     International IEEE Workshop on, pages 82 –88, sept.
     2006.




                                                              132