We deal with two categories of software.
Embedded code controls the operation of devices in the product under development, these devices are typically microprocessors or microcontrollers. This type of software is known as real time code because its function forms part of the operation of the product and all processes must be performed 'live' and completed in time to allow normal operation to continue uninterrupted. As example of real time code is the software typically found on a car's engine management unit. One function may be to calculate the required times to turn the ignition coil on and off to generate a spark at the plugs. This calculation must be performed and the appropriate switching carried out each time the engine fires. Speed and timing of operations are critical and failure to meet timing requirements would result in malfunction of the product.
The other category of software that we produce is that which is intended to reside on a computer. This may be a Graphical User Interface (GUI), allowing the user to enter and view information or issue commands. Other computer-based programmes may analyse, manipulate and organize data or perform calculations. Often a system requires both of these software types. A product may have a hardware element consisting of physical piece of hardware and a software element running on a computer and providing an interface to control and exchange data with the hardware. The hardware element may itself contain a microcontroller running real time code.