This is an HTML rendering of a working paper draft that led to a publication. The publication should always be cited in preference to this draft using the following reference:

The document's metadata is available in BibTeX format.

Find the publication on Google Scholar

This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.

Diomidis Spinellis Publications

Copyright © 1995 by the Association for Computing Machinery, Inc. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Publications Dept, ACM Inc., fax +1 (212) 869-0481, or

Book Review

Dr. Bruce E. Krell
High-Speed Windows Applications: Multitasking Design Methods
464 pages hardbound; includes index
Bantam Books, January 1993
ISBN 0-553-08992-7
Companion disk available for $40.00 + $6.00 shipping and handling

Reviewed by Diomidis Spinellis

According to the author the book describes methods, techniques, and design approaches that can be used to develop multitasking Windows applications that minimise memory usage, exhibit high speed-performance, behave reliably during repeated use, and are delivered to market on a timely schedule. No quantitative arguments on the validity of those claims are given. In order to achieve the stated goals the author proposes a software development methodology tailored to the implementation of Microsoft Windows programs using the C language and the Windows software development kit (SDK). The methodology is based on dividing the application into five independent components designed to behave gracefully under the Windows 3.1 non-preemptive multitasking environment. These components are scheduled using the Windows messaging mechanism and communicate with each other using global shared memory.

For every component of the proposed methodology the author justifies its existence, explains its key concepts, defines its message protocol, and introduces supporting templates. These templates are code skeletons that are supposed to provide reusable, application-oriented modules that interface with the SDK functions. About 80 pages of the book laboriously expand every one of the ten templates and detail their mechanics, their parameters, their pseudo code, some actual code, an example, and tailoring instructions.

The author subsequently provides the usage guidelines of his methodology as a set of 30 step-by-step instructions, tables, and diagrams. The methodology is based on generating the models of: the application, its operations, their requirements and the application's design and implementation. The level of detail in the description of every step can be distracting.

The last 100 pages of the main text describe the design of an - unspecified until the chapter's fourth page - 3D viewing application using the proposed methodology. No functional description of the application is given; the reader has to guess the application's use by reading its design. Four appendices contain:

The book's bibliography consists of five books and the mention of three development environments. The book is well organised but suffers from excessive use of the passive voice, too many unnumbered sections and heavily typeset diagrams and code listings.

A number of environments such as Microsoft's Visual C++ with Foundation Classes and Borland's Object Vision offer ways to organise Windows messages and the higher levels of Windows functionality abstraction advocated in the book. If for some reason these environments can not be used this book offers an alternative structured approach to programming Windows.