Last week, I talked about learning about embedded software and suggested various sources of information, including books, promising a review of a new book sometime soon. In the meantime, I have had the chance to take a look at the new book “Software Engineering for Embedded Systems” by Robert Oshana and Mark Kraeling.
My first impression was that the book is enormous – over 1000 pages and weighing more than a couple of kilograms. My second impression is that its size is an indication of its comprehensive coverage …
I became aware of this book when I was at Design West a few weeks ago and was very pleased to accept when my publisher asked me if I would like to review a copy. I confess that, when I agreed, I had not appreciated what a big job I was taking on. To do justice to this book will take more than a single blog post permits. So, today I will give an outline of what the book has to offer and, on future occasions, dip in and look in more detail at specific parts of the book.
This is easily the most comprehensive book on embedded software on the market, with the material organized into 25 chapters:
- Overview of Embedded and Real-Time Systems
- Embedded Systems Hardware/Software Co-design
- Specification and Modeling Techniques
- Architecture and Design Patterns
- Real-Time Building Blocks
- The Hardware Interface to Embedded Software
- Embedded Software Programming and Implementation Guidelines
- Embedded Operating systems
- Software Reuse in Embedded Systems
- Software Performance Engineering
- Optimizing Embedded Software for Performance
- Optimizing Embedded Software for Memory
- Optimizing Embedded Software for Power
- Human Factors and User Interface Design for embedded systems
- Integration and Testing techniques and Quality for Embedded Software
- Software Development Tools for Embedded Systems
- Multicore Software Development for Embedded Systems
- Safety-Critical Software Development for Embedded Systems
- Intellectual Property Issues with Embedded Software
- Managing Embedded Software Development
- Agile Development for Embedded Systems
- Embedded Software Development for Storage and I/O
- Embedded Software for Automotive Applications
- Embedded Software Development for Embedded Networking
- Linux and Open Source Software for Embedded Systems
along with appendices and case studies …
As Jack Ganssle mentions in the Foreward, it is hard to think of any aspect of embedded software development that is not at least touched on in this book.
My first thought was: “Where do I start?” But the authors [or, rather, as they are termed, editors] have thought of that. An extensive “roadmap” section gives a clear idea of which chapter(s) is/are relevant to particular aspects and phases of embedded software implementation.
My next thought was “How can 2 guys know all this stuff?” The answer there is that Oshana and Kraeling are listed as editors. Although there are very significant parts of the book that they have authored, there are numerous chapters written by experts in specific fields. The other authors are Srini Addepalli, Michael C Brogioli, Bruce Powel Douglass, Shelley Gretlein, Inga Harris, Jean J. Labrosse, Frank Schirrmeister, Gary Stringham, Erich Styger, Jim Trudeau, Catalin Udma, Whitson Gamaliel Waldo III, Pete Wilson, Dr. Xin-Xin Yang, Mark Pitchford and Andrew McKay.
I will return to review in more detail sections of this book that particularly interest me in the weeks to come.