This book deals with the fundamentals of operating systems for use in real-time embedded systems. It is aimed at those who wish to develop RTOS-based designs, using either commercial or free products.
Engineers, scientists and mathematicians) moving into software systems.
Professional and experienced software engineers who are entering the embedded field.
Programmers who have little or no formal education in the underlying principles of software-based real-time systems.
The material covers the key ‘nuts and bolts’ of RTOS structures and usage (as you would expect, of course). In many cases, it shows how these are handled by practical real-time operating systems. After studying this, a beginner can see how to implement RTOS-based designs and should be confident to take on such work.
Now, that’s the easy part; the really challenging aspect is how to best structure the application software in the first place. If your design is poorly-structured then, no matter which RTOS you use, you are very likely to run into problems of reliability, performance, safety and maintainability. This is why the book places great emphasis on ways to structure the application software so that it can be effectively implemented using an RTOS.
Designing Concurrent, Distributed, and Real-Time Applications with UML.
This is an excellent book for applying UML to real-time systems. Its strength is in the design phase and has a good, pragmatic approach to using UML. We would consider it an intermediate-to-advanced text. It is not a book to learn UML from.
A book best suited to the undergraduate or someone not familiar with real-time systems. Good coverage of OO ideas, but a bit heavy on the use of patterns, etc. Not our favourite book, but many people really like it. Probably complements Gomaa’s book as it is a beginner-to-intermediate text.
Powel Douglass, Bruce. Addison-Wesley. ISBN 0-201-32579-9. 1998.
Probably not worth buying as most of the material is contained within the previous book.
Fowler M. and Scott K. Addison-Wesley. ISBN 0-201-65783-X. 1999.
Probably still the best overview book on UML (though contains little specific real-time material). Only 200+ pages, so not a tome.
A comprehensive tutorial on UML, though the real-time aspects are limited. There are mixed reactions to this book but (in our opinion) it is well and clearly written.
A comprehensive encyclopaedia of UML v1.3. Includes a CD-ROM with a hyperlinked version of the book.
Currently the best coverage of the basics and applications of use cases. An essential read for anyone trying to make use cases work.
Gamma, E. et al. Addison-Wesley. ISBN 0-201-63361-2. 1995.
The book that started the pattern wave. This book is predominately aimed at the designer/developer. Anyone looking to implement UML designs should read this book. However, you will need a reasonable knowledge of an OO language (specifically C++, Java or Smalltalk) to understand the example code. This book is referred to as the GoF (Gang of Four) book.
Probably a better introduction to patterns than the GoF book (above), but also a useful companion. The difference between this and the GoF book is that this covers three different levels of patterns (architectural, design and language-specific) whereas the GoF book is theds to mix these.
Jacobson, I et al. Addison-Wesley. ISBN 0-201-54435-0. 1992.
The book that defined “Use cases” and set the foundation for the Rational Unified Process (RUP). It is still a very good book and shows how to use the Jacobson’s Interface-Control-Entity stereotypes in the UML Profile on software design.
Wilkinson, N.M.. SIGS BOOKS. ISBN 1-884842-07-0. 1995.
A book covering the “Class-Responsibility-Collaboration” technique for object analysis and design. Borrow it rather than buying it if possible.
Wirfs-Brock R. et al. Prentice Hall. ISBN 0-13-629825-7. 1990.
Given its published date, this is still a very readable book. It brought the ideas of CRC and Responsibility Driven Design (RDD) to the mainstream audience.
If you are trying to understand Rational Rose-RT (Real-Time), then this book will fill in the gaps.
Szyperski takes a difficult subject and makes it appear simple. An outstanding introduction to the world of components in a jargon-free, pragmatic approach. Thinking about reuse? This covers a lot of the sticky areas when try to build practical component-based software.
A very extensive coverage of the use of metrics for OO projects.
A definitive text for any embedded real-time software developer.
Cooling J.E. ITC Press. ISBN 1-85032-274-0. 1997.
This gives coverage of both structured (data-flow) and OO design techniques.
Real-Time Systems Design and Analysis - An Engineers Handbook, 2nd Edition.
Might at first seem somewhat old as it has relatively little coverage of OO issues. An underrated book with a very strong embedded real-time focus.
A book looking at user interfaces from the perspective of the embedded system. Uses the MicroC/OS-II RTOS for example code. Also coverage of C++ for embedded systems.
By small memory, they mean PDA (Personal Digital Assistant) not your 8051! In addition, the code is C++ and not C based. It covers areas such as small data structures, memory allocation, compression, and secondary storage. However, for anyone doing embedded development and using a Real-Time Operating System, then this book should prove very useful.
A book to expose the inner workings of a real-time operating system. All code supplied on a CD-ROM and written in C. The kernel has been ported to many platforms. This kernel is also used by a number of other books.
Want to see how to put a web server on a PIC? The book is hard going (a lot of C code which can be quite difficult to follow), but it is a far easier introduction to TCP/IP and web servers than more traditional texts.
Everything you have ever wanted to know about the 8051 and more. Exactly 1000 pages!
A good coverage of the principles of embedded systems with small processors (PIC, 80C51, 68HC05/08). Not a code book. An undergraduate text, but may be useful to a pure software person who wants to understand the embedded environment better.
Simon, David E. Addison-Wesley. ISBN 0-201-61569-X.
A book appropriate for someone with little or no experience in programming embedded systems. Uses the MicroC/OS-II operating system for examples. All code is in C.
The C Programming Language - ANSI C Version, 2nd Ed.
Kernigan B.W. and Richie D.M. Prentice-Hall Software Series. ISBN 0-13-110362-8. 1988.
The definitive book by the creators of the language. Still the major reference book for many C programmers. Not a book to learn C from, but a useful reference.
Published in 1989 and still one of the “must read” books for the new C programmer. It is the sort of book that you may read only once, so borrow it if possible. But still a good book to have on your bookshelf. After completing our C programming course, it is the first book we always advise people to read.
There are a number of “advanced” C books. This is our particular favourite. The writing style makes it easy to read, there is good use of humour, and it has been well thought through. We cannot recommend it highly enough.
If you are a professional programmer using C in safety related applications and you haven’t read this book, then shame on you! All embedded software engineers using C should read this. Go out and buy it now.
This book does a number of things. Firstly, it teaches you everything you have ever wanted to know about the C Standard Library. Secondly, it teaches you a lot about how to write and test libraries. Finally, it has a full source description of the library that has some very impressive C code.
A very good starting point for a company based C coding guidelines. However, also see http://www.knosof.co.uk/misracom.html for some useful comments on the guidelines.
The C++ Programming Language, 3rd Ed.
Stroustrup B. Addison-Wesley. ISBN 0-20-88954-4. 1997.
The definitive book by the creator of the language. Still the bible for most C++ programmers. The 3rd Edition is a significant improvement from the first two. Though it is still not a book to learn C++ from.
Lippman S.B. and Lajoie J. Addison-Wesley. ISBN 0-201-82470-1. 1998.
An Alternative to Stroustrup for many people. Personally, I found it very hard going.
Meyers S. Addison-Wesley. ISBN 0-201-92488-9. 1998.
This is the book we always advise as the first book to read after doing a C++ course. Packed full of guidelines for writing good C++.
Meyers S. Addison-Wesley. ISBN 0-201-63371-X. 1996.
Do not attempt to read this until you have read through the first of Meyers’ books. Still a very good read.
A CD based version of Meyer’s two “Effective” books.
Until this book appeared, coverage of the Standard Library tended to be at the back of C++ programming books (e.g. both Stroustrup and Lippman have sections on the Standard Library), usually being very poor. This is another “must have” book if you are using the C++ Standard Library.
As with the other Meyers’ books, there is a wealth of pragmatic useful information contained in these pages. A good complement to Josuttis’ book.
Think you’re good at C++? Read it and weep. Alternatively check out Sutters “Guru of the Week” website.
Many C programmers do not move to C++ as they believe it is an inherently slow and fat language. This excellent book demonstrates how to write good, efficient and highly performing C++ code. We would consider this an intermediate-to-advanced book. A “must” read for anyone using C++ in the real-time field.
This book is slightly dated as it pre-dates namespaces, templates, etc. However, it has some gems of information on how to reduce coupling at both design and build time (if it was written today it would be a “pattern” book). Also, as it pre-dates namespaces, etc. EC++ programmers will find it a very practical text.
Stroustrup B. Addison-Wesley. ISBN 0-201-54330-3. 1994.
If you are interested in how the language became what it is then this is a fascinating read (e.g. what is the representation of the NULL pointer?).
Ellis M.A. and Stroustrup B. Addison-Wesley. ISBN 0-201-51459-1. 1990.
A useful book in the sense that many other books reference this when clarifying certain points. It is a good complement to a general C++ text.
The book you have probably been waiting for. New compliers have dramatically improved their support of templates. This book simply and easily guides you through the use of templates. Extremely well written and useful.
We would recommend reading the C++ Templates complete guide before tackling this book. There is a certain amount of overlap between the two, but this goes much, much deeper. You come away with a mixture of awe and terror based on what you can do with C++ templates.
Leveson, Nancy. Addison-Wesley. ISBN 0-201-11972-2. 1995.
An absolute must for anyone who needs to develop software with any amount of safety requirements.
Neumann, P.G. Addison-Wesley. 0-201-55805-X. 1995.
Neumann is the moderator of the RISKS news forum. In this book he has collected together over 15 years worth of computer related failure (including the original sources). This is just a great read to appreciate how many ways software systems can fail.
Wiener, Ruth. Helix Books. ISBN 0-201-40796-5. 1994.
An excellent thought-provoking book which requires little in the way of software knowledge to understand its message. We recommend it to anybody striving to bring professionalism to software development.
This book is a collection of (mostly) sad stories concerning project failures. It should be compulsory reading for anybody taking up a software project management role for the first time (and maybe even a few practising managers?).
If you are a professional software engineer and you haven’t read this, shame on you (again?). First written over 25 years ago (recently re-released) it is still as good a read now as it was then. As they say “Buy it, read it, use it”.
Humphrey is best known for the development of the Capability Maturity Model (CMM). This is a scaled down version for the individual. It teaches you habits and techniques to help plan, track, and analyse your own software development.
A comprehensive coverage of the field of software engineering. An excellent reference text though not always easy to navigate around.
If you are in the field of performance engineering then you will already know Connie Smith’s name. This book supersedes her previous (superb) book on Software Performance Engineering (SPE). It is up-to-date and uses UML notation to describe the subject area.
This is an outstanding book concerning how things are designed and how they ought to be designed. It is highly readable, extremely useful and full of common-sense. We don’t normally feature ‘old’ books but it is worth trying to track this one down via your library.