Tomas Petricek
email: t.petricek@kent.ac.uk
twitter: @tomaspetricek
office: S129A
On the mathematical powers of the calculating engine (1837)
If trials of three or four simple cases have been made, and are found to agree with the results given by the engine, it is scarcely possible that there can be any error.
The ENIAC women would simply set up the machine to perform these predetermined plans; that this work would turn out to be difficult and require radically innovative thinking was completely unanticipated.
By the end of [1960s] many were talking of a crisis (...).
For the next several decades, [managers, academics and governments] would release warnings about the desperate state of the software industry with ritualistic regularity.
Software paradox
How can we explain the [seemingly perpetual] crisis in what is considered one of the most successful and profitable industries of all time?
Surprisingly few people are killed as a result of a computer failure
Algorithms
Software systems
Want 30 features? Have to program 30 features!
Digital systems are not continuous
Small change can have unexpected consequences
We can only reduce accidental complexity
Very large-scale systems
Wicked problems
A wicked problem is difficult or impossible to solve because of incomplete, contradictory, and changing requirements that are often difficult to recognize.
Strategic Defence Initiative
"Since the missile defence environ-ment is hostile and destabilizing by intent, the [software] is logically impossible."
From military and scientific applications to data processing.
How to find and train good programmers?
Hacker culture
Programming was frequently seen as a black art whose success or failure was dependent on the idiosyncratic abilities of individual programmers.
It is not clear how to
Hired 3/5 of all available programmers (700)
Trained 7000 more during the project
Adding people to delayed project only makes it worse
Programming is resistant to industrial production
NATO Software Engineering Conference (1968)
Black art of programming had to make way for the science of software engineering
Follow-up 1969 Software Engineering Conference
Shows disagreements about what this actually means
Mathematical culture
Managerial culture
Software engineering disciplinary repertoire
Software to reliably shoot down Soviet nuclear missiles cannot be built for software engineering reasons.
Personal computing becomes ubiquitous
Business requirements change faster than software gets built
Need methods that respond to change!
Fixed context allows specification
Everything else is outside the scope
Development intertwined with learning
Different people continuously involved
Manifesto of Agile software development
Move beyond object oriented design
Open source software development
Programming as crafts or gardening
Software crises
Continuous crisis in a profitable industry
Labour ('50s), management ('70s), applications ('90s)
Why is building software hard
Software systems are not algorithms
Complexity, human aspects, changing environment
Four cultures of programming
Hackers, managers, engineers, mathematicians
Methods for building and trusting systems
Trust programmers skilled in their craft
Apprenticeship model of learning
Trust well managed and organised teams
Eliminates reliance on programmers
Prove correctness mathematically
Assisted by various formal methods
Use a mix of good practices
Testing, debugging, good structure
What you should remember from this lecture
Tomas Petricek
t.petricek@kent.ac.uk | @tomaspetricek
Books
Papers and articles