Main Conclusions from Software Psychology

The main conclusions are about the existence of cognitive processes in software engineering, necessary mental make-up, how to understand problems and what the problems are with reuse.

Software engineering can be seen as a special form of problem solving. The splitting of the software lice cycle into several steps is the division of a problem into subproblems (a general problem solving method). The use of program plans [18,8,28,27] can be compared with the schemata [12]. Functional fixedness in programming was proved by [11]. All these findings supported the idea that conclusions from cognitive psychology can be used in software engineering.

A different mental make-up was needed in the different stages of the software engineering process. The ability to live with uncertainties and the ability to make decisions is necessary in the beginning of the life cycle, whereas the ability of convulsive preciseness is necessary at the end [21].

Without knowledge of problem-related concepts, the memory quickly reaches its limits when trying to understand code [21]. This is because the knowledge can not be related to existing schemata and thus has to be stored as separate facts (for the time being in the short term memory which is non-associative and can contain up till 7 items) [14,26,21,13]. Thus documentation of code has to give the used concepts of the application domain and the used concepts of the computer domain.

There are different approaches when trying to understand code, a systematic strategy and an ad hoc strategy [8,15]. In the systematic approach first the total documentation is studied in a systematic manner. In the ad hoc approach documentation is read at random. The systematic approach can take too much time for large pieces of program and the ad hoc strategy gives poorer results when adapting a program. Therefor documentation has to be in such a way that it is easy to combine both strategies in an intelligent manner. The documentation has also to be in such a way that the limits of the memory are not reached very quickly. The documentation is best understood if it is in a very succinct symbology [20], the spatial arrangement is of less importance.

In [10] mental laziness is remarked as one of the problems with reuse. In [9] some experiments are done about how to prevent that the habit masters the individual instead of the individual mastering the habit. It appears that by promoting productive thinking the problem of mental laziness could be overcome. If a solution is actively verbalised transformation to new situations becomes easier [12]. This improves reuse. The active participation in finding a solution improves the recognition of the possibility of applying the solution to other areas [12].