These are demanding times for embedded software developers. Even in the world of functionally safe software there is increasing demand for connectivity where embedded applications have traditionally been isolated, static, fixed-function, device-specific implementations, and practices and processes have relied on that status. That change is reflected increasingly in the standards that embedded developers are required to meet, with the addition of security related standards such as SAE J3061 and ISO/SAE 21434 (automotive), IEC 62443 (industrial control), and DO-326 (aerospace) emerging to complement the more familiar ISO 26262, IEC 61508 and DO-178C respectively. In a safe and secure connected application there is a need to identify vulnerabilities, as well as hazards.
Add those complications to the burgeoning demand for increased functionality across the sectors, and it is easy to see why the pressure to improve both the productivity and quality of embedded software has never been higher.
The last thing anyone would need is a toolchain that gets in the way, especially given the increased overhead on validation and verification techniques. The IAR embedded workbench is a very good example of a state-of-the-art integrated development environment (IDE), but it is important that the integration of that environment does not stop there. An interface between the IAR toolchain and comprehensive automated tools for validation and verification encompassing static and dynamic analysis techniques is equally important if efficiency is to be optimized. In order to comply with the relevant standards, such a framework needs to include facilities such as sophisticated static code analysis for the application of coding standards with false positives minimized and false negatives avoided to make code reviews as effective as possible, a unit test framework to support embedded unit tests, integration tests, system tests, structural code analysis, and (preferably) requirements traceability – all within the runtime environment of the application under development. The option to apply test driven development is also likely to be important for many.
The deeper the integration provided, the more seamless the IAR testing environment is likely to be for embedded developers and testers. For example, the capability to parse IAR software project files and use them to speed static analysis efforts by reading include paths, macros and other settings can aid productivity. And target based testing could be supported by leveraging iarbuild and cspybat to build, download and execute on targets or IAR’s simulators, allowing users to perform system and unit tests using the already available IAR infrastructure to provide a head start to developers.
This detailed presentation shows how such an automated integrated environment can provide an efficient and effective path to the achievement functional safety, cybersecurity, and software quality objectives, leveraging the IAR Embedded Workbench integrated development environment. The example shows the use of C, but similar C++, Ada and Java tools are also available.