Debugging by Thinking: A Multidisciplinary Approach

Kybernetes

ISSN: 0368-492X

Article publication date: 1 October 2005

84

Keywords

Citation

Hutton, D.M. (2005), "Debugging by Thinking: A Multidisciplinary Approach", Kybernetes, Vol. 34 No. 9/10, pp. 1660-1661. https://doi.org/10.1108/03684920510614894

Publisher

:

Emerald Group Publishing Limited

Copyright © 2005, Emerald Group Publishing Limited


Cyberneticians and systemists will like this book not just because of the vitally important problems it tackles, but also because of the multidisciplinary way in which it has been written.

First, the problems tackled concern the methodology of identifying and correcting software errors. This is a task that has been with us since the very beginning of computing and is one that has not received the attention it has deserved. So many programs, even today, are debugged in a most primitive way. Whilst computer scientists have attempted to both define and prove the validity of programs, the commercial world of software has often ignored their efforts.

This book takes a positive step towards linking the relevant six disciplines which the author has identified in his approach to debugging by thinking. These are logic, mathematics, psychology, safety analysis, computer science and engineering. Many readers will already have decided, some of these disciplines are in themselves multidisciplinary and would have preferred the author to call his approach simply a cybernetic one.

What is of the greatest interest is the manner in which the chosen disciplines are utilized. He uses mathematical problem‐solving techniques in the manner of the literary computing specialists as well as the other five disciplines, in a novel way. All of these areas provide a building block in his strategy of looking for a method of defining his approach to both identifying and to correcting software bugs. It was essentially a systematic one and a multidisciplinary one in that it carefully married the methods of the chosen six into one coherent methodology. To prove the effectiveness of his thesis, the author provides real examples of the source code of programs that have identifiable software errors. These examples are written in both Java and C++.

The real bugs are identified and the “thinking” process is described to illustrate how he resolved the problems as they were processed in the program. How this approach will workout in the real world of commercial software or indeed in any software endeavour where debugging is a normal part of the process of producing tried and tested products is another matter.

This book is worth reading because of the intricate way in which results in such a field as cognitive psychology or the processes of modern engineering can be harnessed in computer software development. To benefit from this text, readers will obviously need a sound working knowledge of the programming languages used in the source codes of the examples.

Related articles