Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

… 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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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, ...)

Slide 7

Slide 7 text

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)

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

...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

Slide 10

Slide 10 text

...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.

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

The people who use the system are part of the system

Slide 13

Slide 13 text

Deploying the system changes what it must do

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

The way you change the system is part of the system

Slide 16

Slide 16 text

The tests of the system are part of the system

Slide 17

Slide 17 text

The people who change the system are part of the system

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

...