Software testing is one of those amorphous terms that covers a massive range of possibilities. Are we talking about integration, unit, black box, white box, systems, acceptance, regression, load, performance? The list goes on. In our experience, this is almost always a worthwhile effort, with paybacks in testing generally exceeding those from other areas, assuming that a pragmatic approach to testing is taken.
Static code analysis is a system where software is automatically analysed for potential issues without ever being executed - purely from looking at the written source code. Here we’ll quickly touch on what makes static code analysis special and then get stuck into some specific technical examples based on our experience of using it in our work at Spore Lab.
When beginning development of an embedded system, it is necessary to make a decision about whether to design a fully custom platform, or to utilize a pre-existing core system component of some kind. This core component could be anything from a bare main processor module right through to a complete and ready-to-use board. Unfortunately there is no definitive answer on which way to go...
There is no getting around it, customised software development requires a significant investment. High quality results do not come cheaply, so it is important to make sure that everything possible is done to achieve the best return. Keeping developers moving along at a crisp pace on the core task is vital, and poor infrastructure can add a huge overhead to development. To ensure this problem doesn’t occur, there are a number of areas that need to be running smoothly.
When developing a new embedded device it is almost guaranteed that it is going to interoperate with some existing system. This interoperability often takes the form of a communication link. If being constrained by the need for physical proximity is not a concern, directly wiring-in the new device using either Ethernet or some other wired technology generally provides the best bandwidth and reliability. However for ease of installation, and to increase flexibility, some form of wireless technology is often vital.