Abstract

Summary form only given. As a bioengineer and marine ecologist, I probably have a different view on software complexity and evolution than specialists in this field. The literature as well as discussion with colleagues suggests that there may well be “hidden gems” in traditional ecology for software engineers. In this presentation, I will compare a couple of biological and software (mostly Open Source) ecosystems and suggest a few ideas that may be useful for software maintenance research. Two key aspects appeared to me when I started to work on Open Source software ecosystems: (1) the difference in terminology in biology and software engineering, and (2) the much more collaborative trends in software ecosystems, compared to biological ecosystems. The first aspect is mostly a technical issue that unfortunately creates a strong barrier between software engineers and biologists. So, it should be worth considering using the same or similar meaning for the same terms, like ecosystem, resource, consumer, ... in both disciplines. The second aspect is much more interesting. So, software ecosystems exhibit much more collaboration and much less competition than biological ecosystems? Since biologists consider competition as one of the major driving forces for biological evolution (recall Darwin and his natural selection mechanism through struggle for existence), it is very clear that the fundamental rules that drive both biological and software ecosystems are completely different. So what? Is there still something to share between the two disciplines? For sure, a couple of concepts (mostly, simple emerging properties, e.g., the impact of biodiversity on resistance and resilience of an ecosystem, migration patterns, dependencies along the trophic chain, ...) or tools (dendrograms, specialized multivariate analyses, biodiversity or interaction metrics, ...) could be of inspiration to software engineers. Yet, a much deeper consideration is whether the driving force of competition and selection of the fittest, which is so powerful for the evolution of biological ecosystems, could change somehow strategies for software design and evolution. I will discuss this question and propose a couple of ideas in this direction. They will, for sure, look strange in current views. For instance, why did a so badly designed language like R [1] become one of the most efficient tools for data analy-sis? Would a meta-software, able to translate one practical problem into different implementations and learn from their comparisons, change the design of software building blocks? Would the concept of phenotypes (same organism, understand software, but totally different appearance and properties depending on the environment) lead to computer tools that are better tailored for each user than the current ones? Ultimately, all these ideas converge towards more freedom for self-organisation of software and software ecosystems than is currently the case. Are you, software engineers, ready to learn from living organisms and to loose a little bit of your orchestration power? Are you ready to become a little bit more observers and a little bit less architects? New and interesting emergent properties may well appear from that freedom you would accept to concede to your complex systems!

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call