Better Embedded System Software

Learn how to avoid common pitfalls and make your product better!

Better Embedded System Software
Philip Koopman, Ph.D.
Carnegie Mellon University

Drumnadrochit Education LLC, 2010
Hardcover, 397 pages, acid free paper
ISBN-13: 978-0-9844490-0-2
ISBN-10: 0-9844490-0-0

Order from Amazon (select New/Geos Fulfillment as vendor)
    {cover} {back cover}

(Publisher retail price is US $140.)

Visit the author's related blog on Better Embedded System Software. If the blog is blocked by your corporate firewall, try viewing it through Google Reader (add this URL to your subscriptions:

See the handouts for the author's lecture on Avoiding the Top 43 Embedded Software Risks for an overview of the contents of the book and highlights from his blog. On-site training based on this lecture is available from the author.

Practical advice on avoiding common embedded system design problems:

This book distills the experience of more than 90 design reviews on real embedded systems into a set of bite-size lessons learned in the areas of software development process, requirements, architecture, design, implementation, verification & validation, and critical system properties. Each chapter describes an area that tends to be a problem in embedded system design, symptoms that tend to indicate you need to make changes, the risks of not fixing problems in this area, and concrete ways to make your embedded system software better. Each of the 29 chapters is relatively self-sufficient, permitting developers with a busy schedule to cherry-pick the best ideas to make their systems better right away.

Upgrade your embedded software design skills:

The book chapters address things that every embedded software engineer should know. If you are relatively new to the area but have already learned the basics, this book will be an invaluable asset for taking your game to the next level. If you are experienced, this book provides a way to fill in any gaps. Once you have mastered this material, the book will serve as a source of reminders to make sure you haven't forgotten anything as you plan your next project.

While this is a book written for practicing embedded software developers, it has already been adopted as a textbook for advanced embedded system courses at Carnegie Mellon Universityand other universities. This first edition incorporates improvements identified in a beta trial at those universities in Spring 2010.

  1. Introduction
  2. Written development plan
  3. How much paper is enough?
  4. How much paper is too much?
  5. Written requirements
  6. Measureable requirements
  7. Tracing requirements to test
  8. Non-functional requirements
  9. Requirement churn
  10. Software architecture
  11. Modularity
  12. Software design
  13. Statecharts and modes
  14. Real time
  15. User interface design
  1. How much assembly language is enough?
  2. Coding style
  3. The cost of nearly full resources
  4. Global variables are evil
  5. Mutexes and data access concurrency
  6. Static checking and compiler warnings
  7. Peer reviews
  8. Testing and test plans
  9. Issue tracking & analysis
  10. Run-time error logs
  11. Dependability
  12. Security
  13. Safety
  14. Watchdog timers
  15. System reset
  16. Conclusions

{detailed contents}

Detailed Table of Contents

(Acrobat Reader required).

Features that will make this a permanent reference book in your personal library:

About the Author:

Philip Koopman is an Associate Professor at the Carnegie Mellon University Electrical and Computer Engineering Department. Additionally, he is a faculty member of the Institute for Software Research (ISR). After his undergraduate education at Rensselaer Polytechnic Institute, he served as a US Navy submarine officer in the Cold War. After receiving his PhD from Carnegie Mellon, he architected embedded control CPUs for Harris Semiconductor and then created embedded system architectures for a variety of United Technologies Corp. applications such as elevators and automobiles. He returned to Carnegie Mellon and has worked on wearable computers, software robustness testing, graceful degradation, cyclic redundancy codes, embedded networks, safety, and embedded security. He has written an assortment of books and academic papers, and holds 26 U.S. patents in areas such as embedded CPU design, embedded communications, geographic location-aware services, and vehicle security. His current research interests include lightweight software processes for embedded systems, dependability, safety, embedded networking, distributed embedded systems, and embedded system security. In addition to his teaching and research duties at Carnegie Mellon, he performs external design reviews for industry embedded systems and presents training based on the contents of this book.

Author web site:

Order from Amazon (select New/Geos Fulfillment as vendor)

Official publisher contact address is: {email}
Sorry, but we are unable to offer bookstore, distributor, and other similar discount structures.

Policies & fine print

Due to the print run being nearly exhausted, we have terminated the author discount offer as of Jan 1, 2020. The only official distribution source is We greatly appreciate the sustained interest in the book!

January 1, 2020