Adaptation, Selection, and Intelligent Design: The Forces Behind Software Evolution - PowerPoint PPT Presentation

1 / 45
About This Presentation
Title:

Adaptation, Selection, and Intelligent Design: The Forces Behind Software Evolution

Description:

If this talk is interesting to you, please consider applying for grad school at UWaterloo! ... Fun facts about bio. evolution. Sickle cell anemia ... – PowerPoint PPT presentation

Number of Views:135
Avg rating:3.0/5.0
Slides: 46
Provided by: MikeGo67
Category:

less

Transcript and Presenter's Notes

Title: Adaptation, Selection, and Intelligent Design: The Forces Behind Software Evolution


1
Adaptation, Selection, and Intelligent Design
The Forces Behind Software Evolution
  • Michael W. Godfrey
  • Software Architecture Group (SWAG)
  • University of Waterloo
  • David R. Cheriton School of Computer Science

2
Overview
  • A quick introduction to biological evolution
  • Natural selection, evo-devo, and spandrels
  • What, exactly, is software?
  • Passive theorem or hungry beast?
  • Software change maintenance vs evolution
  • Adaptation, selection, and intelligent design
  • Lehmans laws, the S curve, and the Linux kernel
  • What has history taught us?
  • Where do we go from here?

3
Disclaimers
  • I dropped biology after grade 9
  • A little knowledge is a dangerous thing.
  • Im not (yet) an accredited engineer
  • Some of these are very personal opinions
  • Please try this at home!

4
Sponsorship
  • Todays talk is brought to you by
  • The friends of Charles Darwin
  • NSERC
  • SWAG and the University of Waterloo
  • We do research in these questions at UW
  • If this talk is interesting to you, please
    consider applying for grad school at UWaterloo!
  • Software engineering applicants are especially
    valued by our group (SWAG)!

5
What is evolution?
  • Essential change in a
  • population
  • over time

6
3 fundamental ideas of evolution
  • Mechanisms that increase variation
  • (i.e., act as an agent for essential change)
  • Mechanisms that decrease variation
  • (i.e., act as an inhibitor for essential change)
  • Its all relative, man.
  • Change occurs within an environment, which also
    evolves.
  • That is, what succeeds today may not succeed
    tomorrow (but may succeed the day after).

7
Bio. evolution in a nutshell
  • Bio. evolution is change in a gene pool of a
    population over time. talk.origins FAQ
  • Genes/alleles are the essential encoding that is
    inherited by living creatures they comprise the
    genotype of the individual.
  • A gene is the dedicated slot or memory location
  • Alleles are the set of abstract values at those
    genes
  • DNA are the bits that encode the allele messages
    (ACGT)
  • The phenotype is the totality of what an
    individual becomes.
  • Roughly, the phenotype is determined by the
    genotype PLUS interaction with the environment.
  • Dawkins Dams are part of the beavers
    extended phenotype.
  • Non-genotypic change is not inheritable!
    Lamarck was wrong!

8
Bio. evolution in a nutshell
  • Mechanisms that increase genetic variation
  • Mutation (new values)
  • Recombination (new combinations)
  • Gene flow
  • Genetic drift (chance increase in existing allele
    freq.)
  • Mechanisms that decrease genetic variation
  • Natural selection (!!)
  • Sexual selection
  • Genetic drift (chance decrease in existing allele
    freq.)
  • Evolution happens in an environment, which changes

9
Fun facts about bio. evolution
  • Hair colour, tattoos, height
  • Morphological change ? evolution
  • Evolution ? morphological change
  • Evolution is not progress!
  • Biological evolution is a greedy algorithm
  • Spandrels Williams/Gould
  • Individuals are embedded in and alter their
    environments!
  • They consume resources, alter the competitive
    balances, and modify their environment to suit
    themselves as they are able

10
Fun facts about bio. evolution
  • Sickle cell anemia
  • A recent adaptation in humans in sub-Saharan
    Africa.
  • Inheriting two sickle cell genes makes the
    individual anemic, shortens life expectancy
  • Inheriting one sickle cell gene confers
    resistance to malaria!

11
Fun facts about bio. evolution
  • Biston betularia
  • aka the peppered moth
  • 2 dark in 1848,
  • 95 dark in 1898 Manchester
  • No new variants introduced, but a relative change
    in gene frequency is considered to be evolution!

12
Fun facts about bio. evolution
  • Side-blotched lizard
  • Females(!)
  • Orange-throated males
  • Large territory, many females
  • Yellow-throated males
  • No territory, sneak-mating
  • Blue-throated males
  • Small territory, one female
  • An evolutionary stable strategy (ESS), decided by
    genotype

13
Fun facts about bio. evolution
  • Bluegill sunfish
  • Female
  • Paternal male
  • Sneaker male
  • An evolutionary stable strategy (ESS), decided
    at run time!

14
Evolutionary Development
  • Evolution
  • What happens to a population over time
  • Development
  • What happens to an individual over time
  • Evolutionary development
  • How development evolves over time
  • ref Endless Forms Most Beautiful, by Sean
    Carroll.
  • The new science of evo-devo

15
A common pattern in Evo-Devo
  • Replication
  • Legs are good, lets have more
  • Servers, VMs, processors are good
  • Specialization
  • Front legs need pincers
  • DB server, web server, file server intelligent
    controllers
  • Pruning, if needed
  • Three pairs of legs are enough, it seems
  • If consuming needed resources (memory, power),
    consider retirement or redeployment

16
Evolution is a generally occurring phenomenon!
  • Biology may have the strongest, most scientific
    body of research
  • but they dont have a monopoly on evolution
  • so there are lots of good ideas to steal and
    try out
  • memes (Dawkins), evolutionary psychology,
    evo-devo
  • not because its way cool to do so, but because
    it helps us to understand how software and
    software systems evolve

17
Evolution
Biological evolution
???
Software evolution
18
What, exactly, is software?
  • Executable
  • Written in a prog. language by a human
  • Data transformer
  • Hardware scripting tool
  • Manages Platonic artifacts
  • e.g., spreadsheets, flight reservations, OS
    threads
  • Changeable
  • Can do anything

19
What, exactly, is software?
  • Can do anything
  • Pure design
  • Create / manage intellectual abstractions
  • Limited only by your imagination
  • Has mathematically precise semantics
  • Can be proven correct

20
What is software engineering?
  • and is it different from traditional
    engineering in any important ways?
  • Trad. eng. is mostly about constructing systems
    from physical world, and using the underlying
    physical science
  • Software eng. is mostly about constructing and
    managing systems of pure designs
  • The underlying science is a kind of math (data
    structures and algorithms)

21
How systems fail
  • Physical systems often fail because of materials
    failure
  • So maintenance is about understanding materials,
    using redundancy, replacing worn out parts
  • Software system usually fail because of design
    flaws
  • Sw systems dont wear out thru bit rot
  • Sw systems are so complex that most have many
    bugs that are never discovered
  • So maybe we should concentrate on correctness
    and our problems will go away?

22
Passive theorem or angry beast?
  • A sw system is a passive theorem!
  • It just needs to be beaten with formal methods so
    that correctness will be guaranteed!
  • We know that this view doesnt scale up well
  • Formal methods certainly have their uses, but
    they are not a panacea
  • Accept that bugs will exist!
  • The power of prog langs and the complexity of the
    systems pretty much guarantee this Brooks
  • Not all bugs are fatal some can be fixed, some
    ignored
  • The use of established engineering design
    techniques can help
  • e.g., redundancy, periodic sanity checks,
    sandboxing

23
Software evolution in a nutshell
  • Forces that encourage variation
  • User demand, new platforms, marketing, emergent
    uses
  • Forces that limit variation
  • Complexity, market saturation, politics
  • Sw is embedded in an environment
  • And that environment (development, user,
    political) forms a complex feedback loop that
    affects its evolution Lehman

24
Responding to evolutionary pressures
  • Basic pressure on sw to evolve
  • Lehmans first law Adapt or die
  • Software doesnt decay physically
  • Rather, the environment and our expectations
    change
  • Intelligent design
  • Parnas Design for Change
  • Info hiding, virtualize likely hotspots, design
    reviews
  • OO dev, frameworks, AOSD
  • but you cant anticipate everything
  • and flexibility has a cost

25
Responding to evolutionary pressures
  • Selection and adaptation
  • The deployment environment (users) selects
    individuals and features for success
  • Tho, unlike bio, this can also be planned
    evaluated
  • Software systems often exhibit emergent
    properties (cf. spandrels)
  • e.g., vmware as farm management malware tool,
  • XML as a DB, IM as a debugger,
  • WWW as externalized memory

26
Bio. vs. software evolution
  • One important difference
  • Unlike biology, the prime agent for new features
    of software is not chance, its marketing, etc.!
  • Rate of change is much, much faster!
  • Modern humans have been through about 500
    generations in 10,000 years since first agrarians
  • Linux has been thru more than 500 versions since
    1994
  • Software evolution is (partly) Lamarckian!

27
Bio. vs. software evolution
  • One important observation
  • Not all of the effects of software change are
    planned or foreseen.
  • Software reacts with its environment
    (development, deployment, political) and forms a
    complex feedback system that influences the
    future evolution of the software Lehman
  • Software systems exhibit interesting emergent
    phenomena (e.g., the Java platform)

28
Summary Bio. vs. sw evolution
  • If you take away nothing else from this, at least
    remember this
  • We shape our tools, then our tools shape us.
  • McLuhan
  • We can plan and execute changes
  • but we cannot understand in advance all of the
    effects of the changes, both on the environment
    and feeding back into the development of the
    software system.
  • Understanding how software evolves requires
    studying both the planned and unplanned phenomena
    of software change.

29
Maintenance vs. Evolution
  • Maintenance connotes
  • Fixing, rather than intellectually enhancing
  • Short-term, not long-term goals
  • Many prefer the term evolution
  • Fundamental change and adaptation
  • Short- and long-term change
  • Planned and unplanned phenomena my two cents

30
Maintenance vs. Evolution
  • Old view
  • Maintenance is fixing bugs (plus adding new
    features, supporting new platforms)
  • New view
  • Maintenance is fixing
  • Evolution is adding and reshaping
  • My view
  • Evolution includes
  • Planned change (fixing, adding, reshaping)
  • Unplanned change (emergent use, interface bloat)

31
Why study software evolution?
  • Improved understanding
  • Why is your system is designed as it is?
  • c.f. the temporal layers architectural pattern
  • Quality assessment of third-party software
  • Spot recurring problems, development bottlenecks
  • To better anticipate change and reduce risk
  • Because we can -)

32
Research in software evolution
  • We are still at the (early) stage of formulating
    theories and performing case studies.
  • Does open source software evolve differently from
    industrial closed-source software?
  • How? Why?
  • How common is code cloning in industrial
    software?
  • Are all kinds of clones equally problematic?
  • What are the long term effects of cloning?
  • Is it better to fix old clones or let them be?

33
Lehmans Laws in a nutshell
  • Observations
  • (Most) useful software must evolve or die.
  • As a software system gets bigger, its resulting
    complexity tends to limit its ability to grow.
  • Development progress/effort is (more or less)
    constant
  • growth is at best constant.
  • Lehman/Turskis model y y E/y2
    (3Ex)1/3
  • where y of modules, x release number
  • Advice
  • Need to manage complexity.
  • Do periodic redesigns.
  • Treat software and its development process as a
    feedback system (and not as a passive theorem).

34
The S curve
size
time
35
Growth of Lines of Code (LOC)
36
SS LOC as age of total system
37
SS LOC as age of total system
38
Average / median .h file size
39
Change patterns and evolutionary narratives
  • Band-aid evolution
  • just add a layer, temporal architecture
  • Vestigial features
  • Convergent evolution
  • Adaptive radiation Lehman
  • When conditions permit, encourage wild variation
  • Later evaluate, prune, and let best ideas live
    on

40
Change patterns and evolutionary narratives
  • Phenomena observed in Linux evolution
  • Careful control of core code more flexibility on
    contributed drivers, experimental features
  • Linus has many lieutenants
  • Aunt Tillie effect
  • Simplicity and scrutability of code, development
    processes, approval process, etc.
  • Mostly parallel enables sustained growth
  • Hard interfaces make good neighbours.
  • Loadable modules makes feature development easier
  • Clone and hack makes sense!

41
Change patterns and evolutionary narratives
  • Phenomena observed in Linux evolution
  • Amazing social phenomenon of OSD
  • You can try this at home
  • and they did!
  • Anti-MS sentiments,
  • We can build it ourselves!
  • Enlightened self-interest for many large computer
    industry companies
  • If we cant own the standard, no one should.
  • Bandwagon effect (both OS developers and
    industry)
  • Support for Linux as deployed OS by IBM, Dell,
    Sun,
  • Lots of contributed production-quality third
    party code from industry (IBM S/390, drivers)

42
The future of sw evol research
  • Software development is about creating and
    managing abstractions
  • Software analysis is about extracting
    abstractions from the artifacts
  • Sometimes the abstractions have to been delivered
    kicking and screaming with forceps
  • Much latent info about sw development hides in
    the artifacts
  • Mining sw repositories, finding useful latent
    info
  • Think like a scientist and an engineer
  • Common sense is still required (Daniel German)

43
Summary
  • Tortoises, software, and economies evolve
  • Software evolution research is about uncovering
    latent abstractions
  • Understanding both planned and unplanned change
    is key
  • Dig into the evolutionary history, find lumps
    under the carpet, ask why
  • Science is about asking questions, engineering is
    about using what youve learned to practical ends
  • We need both software scientists and software
    engineers!

44
More reading
  • The Selfish Gene The Extended Phenotype
  • Richard Dawkins
  • Darwins Ghost
  • Steve Jones
  • Dr Tatianas Sex Advice to All Creation
  • Olivia Judson
  • Endless Forms Most Beautiful The New Science of
    Evo Devo and the Making of the Animal Kingdom
  • Sean B. Carroll

45
More reading
  • How the Mind Works
  • Steven Pinker
  • The Moral Animal Non-Zero
  • Robert Wright
  • The Meme Machine
  • Susan Blackmore
  • The Nature of Economies
  • Jane Jacobs
  • indicates rec based on reputation I havent
    read the book yet
Write a Comment
User Comments (0)
About PowerShow.com