Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Why software changes & how we must change what we change when we change software

Why software changes & how we must change what we change when we change software

Reflecting on Lehman's categories of software system.

Presented at Cukenfest London 2018.

Nat Pryce

April 19, 2018
Tweet

More Decks by Nat Pryce

Other Decks in Programming

Transcript

  1. Why software changes
    & how we must change
    what we change
    when we change software
    Reflecting on Lehman's categories of software system
    Nat Pryce
    @natpryce
    [email protected]
    github.com/npryce
    speakerdeck.com/npryce

    View Slide

  2. View Slide

  3. … any program is a model of a model within a
    theory of a model of an abstraction of some portion of
    the world or of some universe of discourse.
    –Manny Lehman
    Programs, Life Cycles, and Laws of Evolution. 1980

    View Slide

  4. Formally defined by
    and derivable from a
    specification
    Solves a real-world
    problem but does not
    affect the world it
    models
    Embedded in the
    world it models; its
    operation changes
    that world
    S-Type P-Type E-Type
    Lehman's categories of software system

    View Slide

  5. Formally defined by
    and derivable from a
    specification
    Solves a real-world
    problem but does not
    affect the world it
    models
    S-Type P-Type
    Embedded in the
    world it models; its
    operation changes
    that world
    E-Type
    Lehman's categories of software system

    View Slide

  6. Law of Continuous Change
    Any software system used in the real-world
    must change or become less and less useful in
    that environment.
    Law of Increasing Complexity
    As a system evolves, its complexity increases
    unless work is done to maintain or reduce it.
    –Manny Lehman (1974, ...)

    View Slide

  7. Evolution processes [of software systems]
    constitute multi level, multi loop, multi agent
    feedback systems
    and:
    The outcome, in the real world, of software
    system operation is inherently uncertain with the
    precise area of uncertainty also unknown
    –Manny Lehman (1974 onwards)

    View Slide

  8. S-programs are … the programming form from
    which most advanced programming methodology
    and related techniques derive.
    –Manny Lehman
    Programs, Life Cycles, and Laws of Evolution. 1980

    View Slide

  9. ...as programming methodology evolves still
    further, all large programs (software systems) will
    be constructed as structures of S-programs.
    –Manny Lehman
    Programs, Life Cycles, and Laws of Evolution. 1980

    View Slide

  10. ...as programming methodology evolves still
    further, all large programs (software systems) will
    be constructed as structures of S-programs.
    –Manny Lehman
    Programs, Life Cycles, and Laws of Evolution. 1980
    and Javascript.

    View Slide

  11. What does this mean for
    how we work in the
    systems we work in?

    View Slide

  12. The people who use the system
    are part of the system

    View Slide

  13. Deploying the system
    changes what it must do

    View Slide

  14. The system is only useful if you
    can change what it does

    View Slide

  15. The way you change the system
    is part of the system

    View Slide

  16. The tests of the system
    are part of the system

    View Slide

  17. The people who change the system
    are part of the system

    View Slide

  18. The development tools
    used to change the system
    are part of the system

    View Slide

  19. The software is an integral part of the
    organisational system
    that directs its evolution

    View Slide

  20. Changing how the organisation
    delivers the system
    is a delivery of the system

    View Slide

  21. ...

    View Slide