Layers of software and the stages in mapping problems onto computers.