Françoise Détienne introduces her new book, Software Design - Cognitive Aspects, published by Springer under the Practitioner Series. You can contact Françoise by e-mailing her at: Francoise.Detienne@inria.fr
By Françoise Détienne
The aim of this book is to present a critical synthesis of research in the field commonly known as the psychology of programming. This covers the activities involved in the different programming tasks, such as analysis, design, coding and maintenance.
The book is centred around three themes: the design of software, the reuse of software, and the understanding of completed software for the purposes of modification, debugging, or reuse. More peripherally, we shall address program documentation. We shall call on the theoretical frameworks developed in cognitive psychology for the study of problem solving, reasoning by analogy, and the production and understanding of text.
Chapter 1 presents a history of research carried out in the psychology of programming from the mid-70s onwards.
We distinguish two periods. The first is characterised by the use of experimental paradigms and by the absence of a theoretical framework. The second sees the emergence of new experimental paradigms and borrows its theoretical frameworks freely from cognitive psychology.
In chapter 2, we investigate the nature of a computer program, on the one hand from a computational point of view and, on the other hand, from a psychological point of view.
Right through the book we shall be drawing a parallel between studies of the processing (production and understanding) of natural language text and the processing of program text.
In this context we shall be looking at two questions: what are the similarities and differences between a computer program and a natural language text and what are the similarities and differences between programming languages and natural language?
The rest of the book treats two different aspects of programming: the production of programs (chapters 3, 4 and 5) and the understanding of programs (chapters 6 and 7).
As far as programming is concerned, we present theoretical approaches to program design in chapter 3, and to reuse in design in chapter 4. These theoretical approaches will be evaluated on the basis of the results of empirical studies.
The practical implications of this research will be discussed as well as the prospects for further research. More particularly, in chapter 5 we shall be interested in the effect of one programming paradigm, namely object orientation, on program production activities.
As far as understanding is concerned, in chapter 6 we present the theoretical approaches to understanding programs. Again we shall evaluate them on the basis of empirical results and discuss the practical implications and the prospects for future research. The effect that the task and the textual structure have on understanding will be developed in chapter 7.
In chapter 8, we sum up the contribution of the research in cognitive psychology and then discuss the conditions necessary if the ergonomic implications of the material presented here are really to be taken into account in the field of computing.
This book is aimed at practitioners, research workers and students in a range of disciplines: computing, especially software engineering, cognitive psychology, and cognitive ergonomics.
Computing is both the subject of the research described here and an application area for its results. The results presented thus have an impact on the ergonomic specifications of programming tools, with the goal of improving the compatibility between the tools and their users, the programmers.
By tools here, we mean not only programming languages and programming environments but also the programming models developed in software engineering such as process models and structured methods. Throughout the book we shall emphasise the ergonomic implications of the theoretical approaches presented.
We are hoping to sensitise computer specialists to the psychology of programming and, more generally, to cognitive ergonomics. We have written this book in an attempt to transfer ideas from these fields into the computing community.
The work presented is strongly orientated towards cognitive ergonomics. This orientation is explained by the fact that the activities studied are situational, that is, they form part of a task.
There are many theoretical borrowings from cognitive psychology. Our interest is to test and extend the models coming out of psychology by applying them to situations that involve a number of activities related to realistic and professional tasks.
The models borrowed have come out of research into problem solving and into the production and understanding of text. Now, in the programming situation, these activities are determined by the task and the experience of the subjects is an important factor in the situation. Further, the complexity of the situations studied is often greater than that of properly experimental studies.
Part of the interest of this work, for the psychologist and the ergonomist, is to analyse how these models can be applied to such complex situations, to discuss their limitations and to open up new paths for research.
Software Design - Cognitive Aspects
by Françoise Détienne
translated by Frank Bott
Springer: Practitioner Series, 2002