Software embedded in cars, planes, or industrial robots (so-called "cyber-physical" systems) is very different than desktop or web applications: they intrinsically have tight interactions with the physical world and with humans. Consequently, bugs can have dramatic consequences and it is, therefore, essential for such software to be extremely reliable. At the same time, this software is in charge of many different functions, is generally distributed across the physical system, and has strong real-time constraints. This makes development very complex. These two aspects combined (reliability and complexity) entail that the development has to be done very meticulously. Still, for obvious competitive reasons, development has to be done as fast as possible.
For these reasons, Eclipse SystemFOCUS is an IDE which targets fast and meticulous development of embedded software.
This is uniquely addressed as follows:
- Meticulous development: a bug in a software does not arise only from programming mistakes: it starts from requirements (misunderstanding, imprecision) and goes till the hardware (programming assumptions not fulfilled by the hardware, e.g., regarding scheduling or latency). Therefore, SystemFOCUS allows not only to develop the software itself but also, in the same IDE, the requirements and the hardware, as well as explicit connections between them: this helps the developer ensuring that the software under development does not diverge from the requirements and that the hardware is indeed capable of running this software.
- Fast development: whether embedded or not, software development intrinsically takes time: it is necessary to explore various directions before finding the good implementation. However, it is often the case that wrong directions could be detected earlier, but developers are so much focused on implementation details that they miss the hindsight to analyze the overall direction they are going into, and therefore cannot observe that a direction is the wrong one until they actually hit the wall. SystemFOCUS targets this issue by abstracting the software away through modeling: the developer actually develops models which represent the software in an abstract manner and therefore can better see the big picture. This enables SystemFOCUS to provide many analyses on these abstractions, which allow detecting wrong development directions earlier ("front-loading") and even to synthesize parts of the software ("correct-by-construction").
An essential aspect of SystemFOCUS is to be a playground for innovation, especially coming from academia (integrating for instance techniques like formal verification, SMT-solving, model checking), but still maintaining a very good software quality in order to be a great showcase for members of the embedded software community (industrial, academic, or just curious!).