CO559: Software Develoment
Origins and history






Tomas Petricek

email: t.petricek@kent.ac.uk
twitter: @tomaspetricek
office: S129A

Software crises

Charles Babbage - Analytical Engine

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.

Nathan Ensmenger - The Computer Boys Take Over

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.

Nathan Ensmenger - The Computer Boys Take Over

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?

Software mostly works

Surprisingly few people are killed as a result of a computer failure

Why is building software hard

Software systems and algorithms

Algorithms

  • Abstract mathematical concept
  • Not affected by the real world

Software systems

  • Different scale of complexity
  • Socio-technological systems
  • Continually evolving environment

Inherent software complexity

No Silver Bullet (Fred Brooks)

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

Software as a socio-technological entity

Very large-scale systems

  • Information flow in a hospital
  • Evolving social networks
  • Defence systems of United States

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

1950s labour crisis

From military and scientific applications to data processing.

How to find and train good programmers?

Programming in 1950s

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

  • Identify good programmers
  • Train someone to be good
  • Produce software as a factory

Software in 1950s and 1960s

Semi-Automatic Ground Environment (SAGE)

Hired 3/5 of all available programmers (700)
Trained 7000 more during the project

IBM OS/360 and Fred Brooks

Adding people to delayed project only makes it worse
Programming is resistant to industrial production

1970s software engineering

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

What might software engineering be?

Mathematical culture

  • Mathematical proofs
  • Abstract data types
  • Structured programming

Managerial culture

  • Control the workforce
  • Structured management of teams
  • Requirements and specifications

Software engineering disciplinary repertoire

Software to reliably shoot down Soviet nuclear missiles cannot be built for software engineering reasons.

1990s application crisis

Personal computing becomes ubiquitous

Business requirements change faster than software gets built

Need methods that respond to change!

Paradigm shift in Software Engineering (Christiane Floyd, 1987)

From product-oriented approach...

Fixed context allows specification
Everything else is outside the scope

...to process-oriented approach

Development intertwined with learning
Different people continuously involved

Modern Software Engineering

Recent and current trends in Software Engineering

Manifesto of Agile software development

Move beyond object oriented design

Open source software development

Programming as crafts or gardening

Summary

Origins and history

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

Four cultures of programming (1/2)

Hacker culture

Trust programmers skilled in their craft
Apprenticeship model of learning

Managerial culture

Trust well managed and organised teams
Eliminates reliance on programmers

Four cultures of programming (2/2)

Mathematical culture

Prove correctness mathematically
Assisted by various formal methods

Engineering culture

Use a mix of good practices
Testing, debugging, good structure

CO559: Origins and history

What you should remember from this lecture

  • Notable systems and reflections on them
  • Reasons why building software is hard
  • A range of approaches to addressing that


Tomas Petricek
t.petricek@kent.ac.uk | @tomaspetricek

References

Books

Papers and articles