The current practice of embedded software design resorts to test or simulation to verify the correctness of the design, which is very time-consuming and incapable of covering all cases. Existent software engineering techniques are not concerned about real-time performance and resource requirements that embedded systems should satisfy for correct operation. To solve this problem, we developed a model-based embedded software design framework, called HOPES supporting all design steps from behavior specification to target code synthesis, including performance estimation and design space exploration. Distinguished from other model-based software design framework, we define a universal execution model (UEM) of heterogeneous multiprocessor embedded systems and design the software based on the UEM that hides the underlying system architecture from the programmer. UEM puts restrictions on how to communicate and synchronize tasks that conventional operating systems deal with. We define the UEM by extending well-known formal models such as Synchronous Dataflow (SDF) and finite state machine (FSM). There are several benefits to use formal models for software design. First, we can detect critical design errors such as deadlock and buffer overflow by static analysis of formal models. Second, we can estimate the resource requirement and real-time performance at compile time. Last, not the least, we can synthesize the target code from the UEM automatically minimizing the manual coding efforts. By preserving the semantics of the UEM, the synthesized code will be correct by construction. The HOPES also provides several analysis tools to estimate the system performance, which includes worst-case response time analysis and design space exploration tool.
Currently, HOPES is available as freeware, and its code generation framework is open as open source software.
