Why Cognitive Aspects in Software Engineering

The software engineering process can be seen as the capturing of information and the solving of problems with humans as the driving force. In this view it is of interest how humans work with information and how they solve problems. Problem solving is the creative activity of finding a correct implementation given certain requirements. Within this view on software engineering cognitive psychology can be a help.

Humans tried to formalise and control the problem solving aspect of software engineering by developing the waterfall model. This conventional life cycle model can be traced to the reductionist mode of inquiry in planning and logistics. Planning and logistics were emerging as organised and systematic approaches to problem solving [1]. The waterfall model is nothing more or less then a general problem solving method stated in software engineering terms.

As software systems grew complexer and larger, a systematic and organised approach for problem solving on a more detailed level was needed. An approach to fill this need was in the form of increased attention on intermediate products and verification steps of the transition [1]. This verification is a step which was already accentuated in cognitive psychology [16]. That need could already have been fulfilled before feeling it.

As software had to be written for more divers systems and for less well informed people problems occurred with stating all the requirements beforehand and taking all design decisions beforehand. This was already known in cognitive psychology from experiments with problem solvers. But than in the form that a problem can only be stated in the direction of a possible solution [7]. An example is with students who do not understand a lecture, they only can tell you that they do not understand the lecture but not in what way or what part of the lecture was outside their comprehension.

Another part of this problem, not yet understood by software engineers, is caused by the fact that only experienced people can work top down and give a good structured solution. Less experienced people have to go forwards and backwards in abstraction level to be able to solve a problem.

Software engineers now try to fill this need in very divers ways: spiral model; rapid prototyping; transformational approach; incremental development; etc. As the evaluation of what caused the problem only gave part of the cause, this solution is only partial and in the near future software engineers will see that rapid prototyping does not solve all of the problem.

Because of all the reasons for changing the conventional life cycle model and the fact that it is faster to use knowledge already in existence, in this paper the software engineering process will be redeveloped with help of knowledge from the cognitive psychology in order to profit from things which are already correct and to get knowledge about what to avoid.