Recommended Reading On Real-Time Embedded Software


Real-Time Operating Systems (RTOS)

  • 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.

Cooling, Jim
Lindentree Associates
Available from Amazon (Kindle version)

This book is suitable for: 

  • Students
  • 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. 

Real-Time UML

  • Designing Concurrent, Distributed, and Real-Time Applications with UML

Gomaa, Hassan
ISBN 0-201-65793-7
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.

  • Doing Hard Time: Developing Real-Time Systems with UML, Objects, Frameworks, and Patterns

Powel Douglass, Bruce
ISBN 0-201-49837-5
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.

  • Real-Time UML Developing Efficient Objects for Embedded Systems,

Powel Douglass, Bruce
ISBN 0-201-32579-9,
Probably not worth buying as most of the material is contained within the previous book.

Back to top 

General UML


  • UML Distilled: A Brief Guide to the Standard Object Modelling Language – 2nd Edition

Fowler M. and Scott K.
ISBN 0-201-65783-X,
Probably still the best overview book on UML (though contains little specific real-time material). Only 200+ pages, so not a tome.

  • The Unified Modelling Language User Guide

Booch et al
ISBN 0-201-57168-4
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.

  • The Unified Modelling Language Reference Guide

Rumbaugh et. al.
ISBN 0-201-30998-X
A comprehensive encyclopaedia of UML v1.3. Includes a CD-ROM with a hyperlinked version of the book.

  • The Unified Software Development Process

Jacobson et al
ISBN 0-201-57169-2
A useful book that demonstrates how the different parts of UML fit together for software development processes

  • Writing Effective Use Cases

Cockburn, Alistair
ISBN 0-201-70225-8
Currently the best coverage of the basics and applications of use cases. An essential read for anyone trying to make use cases work.

Back to top  

Object-Oriented Techniques


  • Design Patterns - Elements of Reusable Object-Oriented Software

Gamma, E. et al,
ISBN 0-201-63361-2,
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.

  • Pattern-Oriented Software Architecture: A System of Patterns (Volume 1)

Buschmann, F. et. al.
John Wiley & Sons
ISBN 0-471-95869-7

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.

  • Object-Oriented Software Engineering - A Use Case Driven Approach

Jacobson, I et al,
ISBN 0-201-54435-0,
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.

  • Using CRC Cards,

Wilkinson, N.M.,
ISBN 1-884842-07-0,
A book covering the “Class-Responsibility-Collaboration” technique for object analysis and design. Borrow it rather than buying it if possible.

  • Designing Object-Oriented Software,

Wirfs-Brock R. et al,
Prentice Hall,
ISBN 0-13-629825-7,
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.

  • Real-Time Object-Oriented Modeling

Selic et. al.
John Wiley & Sons, Inc.
ISBN 0-471-59917-4
If you are trying to understand Rational Rose-RT (Real-Time), then this book will fill in the gaps. 

  • Component Software: Beyond Object-Oriented Programming

Szyperski, Clemens
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.

  • Object-Oriented Metrics: Measures of Complexity

Henderson-Sellers, Brian
Prentice Hall
ISBN 0-13-239872-9
A very extensive coverage of the use of metrics for OO projects.

Back to top 

Real-Time and Embedded Systems


  • Software Engineering for Real-Time Systems

Cooling, Jim
ISBN 0-201-59620-2
A definitive text for any embedded real-time software developer.

  • Real-Time Software Systems,

Cooling J.E.,
ITC Press,
ISBN 1-85032-274-0,
This gives coverage of both structured (data-flow) and OO design techniques.

  • Real-Time Systems Design and Analysis - An Engineers Handbook,  2nd Edition.

Laplante, P.A.
IEEE Press, NJ.
ISBN 0780 334000
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.

  • Front Panel: Designing Software for Embedded User Interfaces

Murphy, Niall
R&D Books
ISBN 0-87930-528-2
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.


  • Small Memory Software: Patterns for Systems with limited memory

Weir, C. & Nobel, J.
ISBN 0-201-59607-5
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.


  • MicroC/OS-II: The Real-Time Kernel

Labrosse, Jean J.
R&D Books
ISBN 0-87930-543-6
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.

  • TCP/IP Lean: Web Servers for Embedded Systems

Bentham, Jeremy
CMP Books
ISBN 1-929629-11-7
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.

  • Patterns for Time Triggered Embedded Systems: Building reliable applications with the 8051 family of microcontrollers

Pont, Michael J.
ISBN 0-201-33138-1

Everything you have ever wanted to know about the 8051 and more. Exactly 1000 pages!


  • An Introduction to the Design of Small-Scale Embedded Systems

Wilmshurst, Tim
ISBN 0-333-92994-2
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.

  • An Embedded Software Primer

Simon, David E.
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.

Back to top 

C Programming


  • 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,
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.

  • C Traps and Pitfalls

Koenig, Andrew
ISBN 0-201-17928-8
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.

  • Expert C Programming, Deep C Secrets,

van der Linden, P.,
ISBN 0-201-49841-3
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.

  • Safer-C: Developing Software for High-integrity and Safety-critical Systems

Hatton, Les
ISBN 0-07-707640-0
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.


  • The Standard C Library,

Plauger, P.J.,
Prentice Hall,
ISBN 13-131509-9
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.

  • Guidelines for the use of the C Language in Vehicle Based Software

The Motor Industry Research Association
ISBN 0-95-241569-0
A very good starting point for a company based C coding guidelines. However, also see for some useful comments on the guidelines.

Back to top  

C++ Programming


  • The C++ Programming Language, 3rd Ed.,

Stroustrup B.,
ISBN 0-20-88954-4,
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.

  • C++ Primer, 3rd Ed.,

Lippman S.B. and Lajoie J.,
ISBN 0-201-82470-1,
An Alternative to Stroustrup for many people. Personally, I found it very hard going.

  • Effective C++, 2nd Ed.,

Meyers S.,
ISBN 0-201-92488-9,

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++.

  • More Effective C++

Meyers S.,
ISBN 0-201-63371-X,
Do not attempt to read this until you have through the first of Meyers’ books. Still a very good read.

  • Effective C++ CD-ROM

A CD based version of Meyer’s two “Effective” books.

  • The C++ Standard Library: A Tutorial and Reference

Josuttis, Nicolai M.
ISBN 0-201-37926-0
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.


  • Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library

Meyers, Scott
ISBN 0-201-74962-9
As with the other Meyers’ books, there is a wealth of pragmatic useful information contained in these pages. A good complement to Josuttis’ book.

  • Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions

Sutter, Herb
ISBN 0-201-61562-2
Think you’re good at C++? Read it and weep. Alternatively check out Sutters “Guru of the Week” website.

  • Efficient C++

Bulka, D. & Mayhew, D.
ISBN 0-201-37950-3
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.

  • Large Scale C++ Software Design

Lakos, John S.
ISBN: 0-201-63362-0
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.

  • The Design and Evolution of C++

Stroustrup B.
ISBN 0-201-54330-3,
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?).

  • The Annotated C++ Reference Manual,

Ellis M.A. and Stroustrup B.
ISBN 0-201-51459-1,
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.

  • C++ Templates: The Complete Guide

Vandvoorde, D. and Josuttis, N.M.
ISBN 0-201-73484-2

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.

  • Modern C++ Design: Generic Programming and Design Patterns Applied

Alexandrescu, Andrei
ISBN 0-201-70431-5

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.

Back to top  

Dependable Software


  • Safeware - System Safety and Computers

Leveson, Nancy
ISBN 0-201-11972-2

An absolute must for anyone who needs to develop software with any amount of safety requirements.

  • Computer Related Risks

Neumann, P.G.
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.

  • Digital Woes - Why We Should Not Depend on Software,

Wiener, Ruth,
Helix Books,
ISBN 0-201-40796-5,
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.

  • Software failure: management failure,

Flowers, Stephen.
ISBN 0-471-95113-7
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?).

Back to top  

Important Reads


  • The Mythical Man Month

Brooks, F.

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”.

  • A Discipline for Software Engineering

Humphrey, Watts S.
ISBN 0-201-54610-8
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

  • Software Engineering: A Practitioner’s Approach (European Edition) – Fifth Edition

Pressman, Roger S
McGraw Hill
ISBN 0-07-709677-0

A comprehensive coverage of the field of software engineering.  An excellent reference text though not always easy to navigate around. 

  • Performance Solutions: A Practical Guide to Creating Responsive, Scalable Software

Smith, C.U. & Williams, L.G.
ISBN 0-201-72229-1
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. 

  • The psychology of everyday things

Norman, Donald A.
Basic Books Inc.
ISBN 0-465-06709-3
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.
 Back to top

Real-Time Embeddedd Software Papers and Documents

  • Miller, G.A., The Magical Number Seven, Plus or Minus Two, Psychological Review, Vol.63, Part 2, pp81-97, March 1956.

  • Beck, K and Cunningham, W. A laboratory for teaching object-oriented thinking, proceedings OOPSLA’89, pp1-6, October 1989.

  • Leveson, Nancy. “Intent Specifications: An Approach to Building Human-Centered Specifications”, IEEE Trans. on Software Engineering, January 2000.

Back to top


Real-Time Embeddedd Software Websites


  • Guru of the week – Herb Sutter

  • Scott Myers

  • Alistar Cockburn – Use cases

  • CrossTalk

  • Stroustrup’s home page

  • How to write Unmaintanable Code – an excellent read and widely practiced


  • Embedded C++


  • Nancy Leveson’s Home Page

  • Software Engineering Institute


  • MicroC/OS-II Home Page


  • Design Pattern Repository


  • Objects by Design: List of Free and Commercial UML tools (including Linux platform)


  • C and C++ Style Guides 

  • IEEE Computer Society Technical Committee on Real-Time Systems (TCRTS).


Usenet real-time newsgroup

News: comp.realtime; comp.arch.embedded


Back to top

Real-Time Embedded Software Magazines