Writing reliable code or ensuring the reliability of written code can be a daunting task. Programming techniques must be refined and new methodologies developed to produce software code for embedded systems that is "correct by design." As Jack Ganssle, the well-known embedded-industry guru, lamented in a recent column on embedded.com: "Programmers are writing crummy code; crummy development techniques are the norm, resulting in far too many products that just don't work right."
As connected, pervasive devices become the norm, the applications that run them become more challenging. "The need to balance function with the constant pressure of time-to-profit are the motivating forces behind the development team, and the selection of tools and processes becomes critical," said IBM Pervasive's Agnus McIntyre, one of our contributors to this In Focus report. He claims that the developers who remain chained to traditional command-line interfaces can easily get lost in the details. To keep pace with the rapid changes in the marketplace, the familiar cycle of development functions (create, edit, build, integrate, deploy, run, debug and release) must occur more quickly. Simply throwing more people at the problem only makes the process slow and complex, according to McIntyre.
Complementing the clues McIntyre gives in his contribution on developing reliable code is an article from Germany-based Innoopract Informationssyteme GmbH on how the Eclipse platform provides for reliable software development. An author from Interpeak AB, a Swedish embedded-network security company, extols the virtues of IPsec, the protocol that ensures secure Internet communications. The founder of Express Logic Inc., an RTOS provider, explains how to contain memory bugs and a Texas Instruments Inc. author explains how to optimize DSP code to increase reliability. In addition to an article from National Instruments Corp. on bridging design and test up front in an embedded design are a few more articles both in print and online that shed light on pressing programming issues.