Вы находитесь на странице: 1из 2

Karel the Robot when it first appeared in 1981 (and apparently still now) is a simple programming system.

It represents the movement of a robot on a grid on which all it can do is move or manipulate objects called beepers. It has only five primitives (such as move or turnleft) and ten Boolean tests (predominantly representing the robot's position and its relation to obstructions). It also offers conditions, iteration and recursion. There is a mechanism which permits the user to define procedures. The book is mainly a tutorial on how to solve a number of grid positional problems using Karel syntax. It has some good points. The software (Karel Genie) has a clear and usable user's manual. The general advice in the book on program design (comprehensible identifiers, top-down design, layout for comprehensibility etc.) is sound, as are its discussions of common problems such as fenceposts and infinite loops. It is also good on discussing what not to do. The method of suggesting a solution and then showing the shortcomings of that solution models real-world thinking, and is useful. It also shows well how you can write procedures at a low level. However, there are some problems, which I suspect arise from multiple authorship. The style is very variable, ranging from wittily erudite to slightly clumsy. Fundamental topics simply slip through the net. Some terms that are central to the language are not explained at all. In a gridbased environment, the representation of co-ordinates is important Unfortunately, even when it comes to absolute co-ordinates, we are not told whether they are row-column or column-row defined. The concept of relative position is mentioned, but it is not explained. The examples are all tiny and give no feel for the complexity of even typical undergraduate programs, still less small real-world programs. Procedural programming requires the implementation of algorithms. This system does give an elementary introduction to thinking about algorithms. However, pro-

gramming requires some way of representing the external world to the computer in addition. This involves some understanding of data structures. The authors do not cover this topic at all. Unfortunately, the Karel language does not offer any form of data structureapparently not even variables. As the problem of knowledge representation is central to serious program design, that is a major omission. In this respect the language shows its age. In recent years we have been able to buy languages with built-in knowledge representation support: logic programming, relational databases, inference engines, and most importantly, object-based systems. Any introduction to such concepts is absent from this book and is probably impossible, given the nature of the language. It should be noted that some people are enthusiastic about Karel. Three quotations on the back cover suggest that one school of pedagogic thinking feels that starting very small is a good strategy. However, it should also be pointed out that all three people quoted are also thanked in the acknowledgements for having 'reviewed all versions of the second edition manuscript'. It must be unusual for the advertising quotations to come from people so intimately involved in the development of the book. Normally you would look for more independent endorsements. Overall, it feels like a fun environment for young pupils who are having their first introduction to the idea of developing an algorithm. However, the domain is so narrow, and the language so restricted in its facilities for knowledge representation, that it would be a limited and misleading introduction to modern programming strategies. L. G. Moseley L G. Moseley is a Senior Lecturer in Computer Science, University of Wales, Swansea, Singleton Park, Swansea SA2 8PP, UK.

Professional issues in software engineeringsecond edition by Frank Bott, Allison Coleman, Jack Eaton and Diane Rowland Published by CJCL Press Ltd., University College London, Gower Street, London WCIE 6BT, GK 1995, ISBN 1-85728-450-X, 320 pp., price 16.95 (paperback) Distributed in North America by Taylor & Francis, price $29.95 (paperback)
The Engineering Council requires that the formation of a professional engineer should include the commercial and economic implications of technical decision-making, including knowledge of government legislation affecting work; an understanding of the principles of management and industrial relations; some knowledge of trade unions and their organisation; an understanding of the engineer's responsibility to the profession, to the community and to the environment. This is the second edition of a book which aims to provide basic material in this area for the education of software engineers; originating from a final year undergraduate course, it is largely successful in presenting its material in a form which is accessible to any software engineer who wishes to gain an insight into the area. It is also mostly adequate in its references to additional material for anyone who wants to educate themselves further. One limiSoftware Engineering Journal July 1996 tation is that discussions of legal matters, although including relevant European Onion legislation, are almost entirely directed to GK practitioners; this limits the usefulness of the book outside Britain. The first chapter describes the engineering profession and the various ways in which it is possible for a software engineer to acquire professional qualifications. Chapters 2, 3 and 4 form a unit Chapter 2 gives brief coverage of the legal forms of organisations and the tasks of managing an organisation. Chapter 3 introduces the principles of finance and accounting for a business. Chapter 4 then demonstrates the ideas of the previous chapters by describing a hypothetical software house; although naive at first sight, this description does successfully focus on the concrete application of abstract principles. Chapters 5 and 6, describing the relationship to corn265

puters of the law of contracts and intellectual property rights, provide useful guidance on the practical impact of the law in these areas. Chapters 7 and 8 are the least satisfactory chapters of this book. Chapter 7, on employee relations law, concentrates on the history of the area and is written in curiously inappropriate language, e.g. 'the British government continued to berate [European Union] proposals ...'. A chapter that confined itself to a factual description of the current situation would have been much shorter, and more useful to practitioners. Chapter 8, on human resource management and software engineering, is also opinionated, and has been written by an author who appears not to have worked in the software industry and is certainly not up-to-date in the relevant literature. The initial section, on a model of human resource management, is interesting. There is also a useful discussion of the impact of the telecommunications revolution on sub-contracting. However, the chapter takes virtually no notice of the extensive body of literature on software development and production that has grown up in the last 20 years. It does not even make any reference to Harlan Mills' seminal work on Chief Programmer

teams, let alone the flood of work that followed, challenging and building on his work. The remaining chapters, thankfully, provide competent descriptions of their chosen areas. Chapter 9 describes the requirements for health and safety at work, although without any discussion of the specific implications for software engineeringperhaps there are none. Chapter 10 discusses liability and practice for software safety, providing an introduction to this fast-growing subject. Chapters 11 and 12 provide summaries of the legal aspects of Computer Misuse and Data Protection. In summary, this is a well organised, readable and mostly competent introduction to the professional issues that confront software engineers. Anyone working in the area, who needs to look further than purely technical challenges, should consider obtaining this book. Jonathan Moffett Jonathan Moffett is Course Co-ordinator for the MSc in Safety-Critical Systems Engineering, Department of Computer Science, University of York, Heslington, York, YO1 SDD, UK.

Timing analysis of real-time software by L Motus and M. G. Rodd Published by Pergamon Press Elsevier Science Ltd., The Boulevard, Langford Lane, Kidlington, Oxford OX5 1GB, UK

1994, ISBN 0 08 0420265, 212 pp.


The design of real-time software has been a problem since computers became embedded in real-world environments. Most methods for the development of software for this domain have concentrated on the functional aspects of the system or on the data. There are few techniques that concentrate on the temporal issues. Most that attempt to accommodate timing problems have done so as an afterthought This book attempts to look at the timing problem from a different direction using a process known as the 'Q-Model', based on work by Quirk. It adds to this work and discusses a support tool called CONRAD. An opening statement in the book is 'this unusual book starts exploring the true nature of real-time systems and, specifically, the influence of time on such systems ...the core of this book: the identification, justification and practical application of a pragmatic formalism which can be used for describing the highly complex timebased interactions of processes in real-time computer based systems'. The question is whether the book lives up to these heady ideals. It does indeed propose a pragmatic approach to real-time analysis but unfortunately does not effectively tackle the overload problem associated with many real-time systems where the rate of arrival of stimuli cannot be controlled. The book starts by defining the domain of interest and proposes some useful definitions, characteristics and concepts for real-time systems. Chapter 4 examines the Q-Model and ends by formally stating that a real-time system is a pair (P, Z), where P is a set of processes and is a set of channels. Chapter 5 adds detail to the Q-Model about the ingredients of message structures, especially the time-stamping of messages. By Chapter 7 the extent of the 266 timing analysis has been explained. However, the authors admit that a general mathematical solution to the problem is too complex, but showed that a mathematical solution could be found if the extremes of minimum and maximum case execution time were explored. The major disadvantage of the methodology is again highlighted by the authors in that 'educated guesswork' is needed to determine these maximum and minimum timings. Chapter 8 deals with the Q-Model development environment (or support tool) CONRAD that operates at the specification and design level, though the authors claim that its use will aid reuse and maintenance. Chapter 9 provides a case study of a protocol development, and this gives a clearer idea as to the potential of the Q-Model and CONRAD. The appendices provide the formal proofs supporting the overall text Relegating the mass of mathematics to the appendices has made the text much easier to understand, while preserving rigour. The Q-Model process is compared to some of the more common timing analysis methods, principally Petri-Nets. There are, however, some notable omissions such as CCITTSDL and LOTOS that were specifically developed to aid the design of telephone systems and protocols. The latter is a concern, as the last chapter deals with the design of a protocol as an example (the LLC layer of the OS1 model). In reviewing this book I have examined how the principles espoused could assist in the development of a telephone exchange. This is a realistic exercise as the authors also use a minor example from a telephone exchange to explain their process. My major conclusion is that the philosophy suggested would significantly improve the design Software Engineering Journal July 1996

Вам также может понравиться