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

Version 1.1, 2021:
Paperback: 384 pages
ISBN-13: 979-8596008050

E-Book (reflowable, no DRM)

Order from Amazon
    {Front Cover} {Back Cover}

Now available in markets served by Amazon KDP, including Europe, India, and Japan!

Visit the author's related blog on Better Embedded System Software.

If you're looking for the 2010 hardcover edition, there are a few floating around. Info: 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

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:

The 2021 version includes revisions and an addition of core skill areas to the conclusions chapter. If you already own the paperback and want to see the changes you might prefer to get the less expensive eBook edition to supplement your hardcover edition. The paperback and eBook editions have the same content as each other, and both of those are more up-to-date than the hardcover edition. Due to technical limitations of the publication platform there is no index in the paperback version (but the Table of Contents is quite detailed). The e-book version is reflowable text, so search should work on supported platforms.

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 self-driving car safety, 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 self-driving car safety, 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 is co-founder of Edge Case Research.

Author web site:

Order from Amazon

Official publisher contact address is: {email}
Sorry, but we are unable to offer bookstore, distributor, and other similar discount structures. Also, please note that Amazon prints and distributes the paperback and e-book versions, so you should contact then directly about shipping and damage concerns.