"Building Software for Simulation: Theory and Algorithms, with Applications in C++" is true to its name combining theory with theory implementations, all illustrated by applications. The theory is an updated and abridged rendering of that presented in "Theory of Modeling and Simulation" the second edition of which came out over a decade ago. If you want to really follow this book's development in depth, you may want to go back to the more leisurely and comprehensive development of the original. That said, the book advances existing theory in important ways. For example, it expands the original theory to cover an extension of the time base needed for proper handling of efficient distributed simulation. And in keeping with the main theme, it gives an in-depth treatment of hybrid discrete-continuous model representation and simulation. Furthermore, C++ efficiency is combined with an efficient data-structure implementation (for event scheduling) allowing you to simulate large scale systems under competitive execution times. The structural complexity of these systems is also tackled meticulously describing the equation-based behaviors, formal specification, and implementation of their constitutive building blocks.
Several books have come out in the last decade that draw upon the Discrete Event System Specification (DEVS) theory and applications in one form or another. However, as claimed in its jacket, this book occupies a unique position on this bookshelf. Along with the DEVS theory, the book presents the actual code of the author's 'adevs' simulator and explains it in terms of the covered theory. This will give you dual perspectives to understand both theory and implementation, either of which could readily become unfathomable standing alone. Along the way, the author also discusses implementation issues in C++ that arise in this context and how the adevs implementation handles them. A major payoff is that, not only will you be able to confidently use the open source adevs code, but you will also be in a good position to extend and apply it, as well as other DEVS implementations.
The book provides examples and applications to illustrate the theory and implementation. A small number of themes are carried through from beginning to end. The main one relates to modeling and simulating a robotic vehicle which is developed in successive stages synchronized to the theoretical progression. A hobbyist's model tank, outfitted with microprocessor control and motor actuator, serves as a down-to-earth system that can be measured, modeled, designed, and simulated with the fidelity needed to get predictions in reasonable agreement with reality. In contrast to most applications, you don't have to take the author's data or word for it; you can simply purchase the parts for a few dollars and build both the real tank and its simulation yourself.
The robotic tank model well illustrates the conjunction of continuous and discrete event dynamics that tomorrow's engineers will need to master. Learning DEVS and building software for such hybrid simulation will probably never attain anywhere the near the popularity of today's programming technologies - it is hard to imagine a book called "DEVS for Dummies!" Nevertheless, after the more easily done information technology is completed, there will remain the challenges of linking the self-contained abstractions of programming with the physical reality of systems that must work with them - think of the complexities that smart cars will be bringing as they take over more decision making from drivers and interact in probably unintuitive (emergent) ways on streets and highways. Moreover, increasingly it is being recognized that our competitive capability in such new technologies will determine whether we continue to enjoy today's standard of living. Hard as it is, building DEVS-based hybrid simulation will give you a uniquely marketable skill set enabling you to participate in the knowledge-based technology solutions of the rapidly arriving future.