There are two classes of challenges in developing embedded systems. We have explained them under two categories below: the rapid changing challenges and non-rapid or slowly changing ones.
- Slowly changing and non changing challenges
Some challenges involved in the design of embedded systems have not really changed in the last couple of decades. The drive for robust products with increased performance at reduced cost, size and weight, for instance, will continue as long as developments in the underlying technologies will permit (Christoffer, 2006; Philip, 1996). Low price translates to reduced resources such as processor speed and memory size which in turn constrains software development and execution. Often embedded devices are very sensitive to cost. A variation of even a few cents per device can be significant due to the huge multiplier of production quantity combined with the higher percentage of total system cost it represents.
- Rapid changing challenges
Other challenges involved in embedded system design are changing rapidly. Three areas should be given particular attention : complexity, connectivity and usability.
While the steadily increasing transistor density and speeds of integrated circuits offer tremendous opportunities, these improvements also present developers (individuals, teams, organizations) with a huge challenge: how to handle the added complexity? A modern embedded system can consist of hundreds of thousand lines of software code. More and more products now include complex embedded systems and the development organizations must evolve with the products and their technologies. It is necessary to establish suitable development processes, methods and tools. Developing product platforms also ensures re-use of technology and increased efficiency.
Before the widespread deployment of digital communication, most embedded systems operated in a stand-alone mode. They may have had some capabilities for remote supervision and control, but, by and large, most functions were performed autonomously. This is changing rapidly. Embedded systems are now often part of sophisticated distributed networks. Simple sensors with basic transmitter electronics have been replaced by complex, intelligent field devices. As a consequence, individual products can no longer be designed in isolation. They must have common components. Communication has gone from being a small part of a system to being a significant function. Where serial peer-to-peer communication was once the only way to connect a device to a control system, field buses are now able to integrate large numbers of complex devices. The need to connect different applications within a system to information and services in field devices drives the introduction of standard ICT technologies like Ethernet and web-services.
Complex field devices are often programmable or configurable. Today’s pressure transmitters can contain several hundred parameters. The interaction with a device either from a built-in panel or from a software application in the system has become more complex. The task of hiding this complexity from the user through the creation of a user-friendly device has sometimes been underestimated. Most other requirements are easily quantifiable or absolute, but “usability” is somewhat harder to define. Yet an embedded system that is intuitive and simple to operate will reduce the cost of commissioning and maintenance. It will reduce errors and be a key factor in the overall customer satisfaction. That is why usability must be given a high priority in the design and development of products, from the conceptual stage, right through to the final testing.