To remain competitive at a global level with our embedded products, continuous performance improvement and cost reduction is required, in combination with increased quality, security and safety. In parallel, the organisation of the embedded systems value chain is getting more and more complex, with distributed teams spread all over the world (multiplication of middle parties, off-shoring...). The need for efficient and non ambiguous ways to exchange specifications between all the stakeholders is getting crucial. It is also necessary to have sound system engineering processes, to be able to master the system and software development (metrics, valid forecast,...) To meet tough requirements in terms of cost and delay, the software architecture of embedded systems has to be flexible, dynamically adaptive to various environments (cloud, low energy consumption, network optimisation,...). It should also be able to support the reuse of existing components, which raises the need for proper Intellectual Properties management, in particular when open source software with various licenses are concerned. In most application domains like for example transportation (aeronautics, automotive, railway, subway, marine), an important issue at stake is the very long lifecycle of embedded systems, which of course impact the life cycle of the associated engineering tools chains. To face all those challenges, system/software engineering processes, methods and tools have to deeply evolve.
Traditional development processes of embedded systems and software based on the « V » cycle are characterized by a sequential succession of activities of specification, design, implementation, integration, verification, validation, and possibly certification, and require a great number of iterations, often resulting in extra costs and delays for our products. The model driven engineering approach allows to get rid of these drifts, first by expressing in a non ambiguous way the system and software specification thanks to the use of formalisms (UML, SysML,...) and by providing capabilities to execute, simulate and verify the models. These models also give a precise representation of Intellectual Property, they can be shared between the different actors of the development chain through common engineering platforms thanks to the use of common modelling languages and tools interoperability standards. Models shall support the description of both static and behavioural characteristics of the system, both nominal and degraded use cases. Models allow the automation of implementation, verification, traceability and ease the conformance process to safety/security standards. Just like the 3D modelling has allowed important productivity and quality gains for the physical design, extensive use of system/software modelling will have the same profitable consequences for the system/software engineering.
To support the necessary industrialisation of the model driven engineering processes, all the components of the engineering platforms will have to comply to robustness constraints, in particular scalability, and to support a collaborative use in an extended enterprise frame. Of course, the deployment of such formal methods should not be done to the detriment of the necessary agility of the processes.
A full model driven engineering approach requires a clear definition of the system/hardware/software transitions. An integrated system/software modelling will allow performing architecture analyses and trade-offs, taking into account different viewpoints (safety, installation,...) and various transversal needs such as estimation of communication volumes, weight, power consumption... and hybrid simulation (physical environment). It is also necessary to address the issues at stake at the implementation level, in particular performances and hardware/software interactions. This implies the early availability of virtual execution platforms, with the adequate representativeness level, in order to be able to get credit from the verification performed on those virtual platforms and thus alleviate the verification effort on the final product. The combination of formal verification on models (through static analysis) and dynamic analysis on virtual platforms should lead to brand new V&V strategy. This is indeed a decisive factor of cost and time reduction in the complete development cycle.
Moreover, the hardware of those execution platforms is quickly evolving from mono-core to multi/many core. The problematic of High Performance Computing and Embedded systems are beginning to merge, and tool suites are needed to ease the adaptation of existing or new applications, in order to take the full benefit of these new environments. Overall, the engineering platforms have to address the deployment phase and support the developer in the distribution of applications on various infrastructures (embedded, cloud,...).
An important trend in the embedded systems domain is to support the product line concept, which has to be addressed efficiently in the engineering environments, through the variability management in the design models, in order to favour the reuse of system/software components. This has to be coupled with an incremental certification approach, when those reusable components are integrated into certified systems.
Another important trend is the increase of constraints combining safety (the system always behaves as it is supposed to) and security (authentication, data protection, confidentiality and quality of service,...). The engineering platforms have to integrate a complete set of performance analysis, compiling, testing... qualified tools in order to guarantee those requirements, whatever the applicable certification standard (DO-178B in aeronautics, IEC 61508 for industrial processes, EN 50128 for railway, IEC 60880 for nuclear plants, ISO 26262 for automotive, EAL for security, etc.…). They should assist also the developer in the definition of protection and containment mechanisms, to allow the safe and secure cohabitation of mixed-criticality applications on the same execution platform.
Engineering tools and platforms are crucial to meet the very challenging business objectives of embedded systems. Various business models will coexist to sustain the tools and services market. Together with the proprietary model, the open source model is a promising way of disseminating and exploiting results, both from the users and providers point of view, given that the ecosystem is sufficiently structured and sustained[i].