この記事は The Qt Blog の Functional Safety with the Qt Safe Renderer を翻訳したものです。
執筆: Tuukka Turunen, 2017年5月22日
この記事では Qt によるユーザーインターフェースと機能安全について、新しいアプローチを紹介します。Qt Safe Renderer により、リッチな GUI とセーフティクリティカルなシステムの共存の実現が簡単になります。車載や医療、産業オートメーションのような Qt が UI フレームワークとしてリードしている業界において、Qt の利用と共にセーフティクリティカルの要件を満たすことがより簡単になりました。
我々の機能安全に対するアプローチについては以前書いた「機能安全」の記事と「Qt を用いたシステムの認証取得」に関する記事をご覧ください。
認証取得可能なシステムの構築において、セーフティークリティカルな機能はシステムのその他の部分と分離されている必要があります。セーフティークリティカルな機能は、例えば認証済みのリアルタイムオペレーティングシステム(RTOS)を用いて自身のメモリ領域を保護されたプロセスとして分離することが可能です。これにより、セーフティークリティカルなシステムに必要な部分は以下の2つとなります。
この度開発をした Qt Safe Renderer は、セーフティクリティカルな UI のアイテムをデザインするためのツールと、その部分を描画する特別なソフトウェアを提供することで、Qt ベースのセーフティクリティカルシステムのこの2つの問題を解決いたします。
Qt Safe Renderer のツールでは、セーフティークリティカルの UI を Qt によるセーフティクリティカルシステムに容易に追加できるようになっています。警告灯などのセーフティクリティカルの UI エレメントを GUI のデザインツール上でのドラッグアンドドロップで簡単に追加することが可能です。警告などに関しては ISO 標準のアイコンを Qt として提供していますので、みなさんの UI に簡単に組み込んでいただけるようになっています。さらに、GUI のツールからセーフティクリティカルな UI エレメントの変更が可能となっており、それによる認証用のソフトウェア側の変更は必要ありません。
画像1:GUI のデザインツール上で、セーフティクリティカルのエレメントを追加することができます。
画像2: Qt として ISO 標準の警告やその他のアイコンを提供し、簡単に追加できる仕組みも提供しています。
アプリケーションのメインの UI にセーフティクリティカル向けの UI エレメントを追加し、次のステップに進みます。今回新たに追加したツールにより、ビルド時にメインの UI の中のセーフティクリティカル向けの UI エレメントが自動的に切り出され、認証用のソフトウェア側に必要な情報に自動的に変換されます。このツールはメインの UI からセーフティクリティカル向けの UI コンポーネントの削除も自動で行います。システムの実行時には、メインの UI の動作に関わらず、セーフレンダリング向けのシステム側はセーフティクリティカル部分の処理を実行し続けます。
画像3: Qt Safe Renderer を取り入れたデジタルメータークラスターは ISO 26262 ASIL B の認証の取得が可能です。
Qt と Qt Safe Renderer により、認証取得可能な様々なデバイス開発が可能になります。そもそものターゲットは車載向けののデジタルコクピットでしたが、このソリューションは医療や産業オートメーションでもお使いいただけます。この Qt Safe Renderer を利用して、ISO 26262 や IEC 61508、IEC 62304 などの標準への準拠に対応していきたいと思っています。
Qt Safe Renderer は Qt 5.9 と Qt Creator 4.3 以降のバージョンに対応しています。動作可能な RTOS は INTEGRITY と QNX になります。ハードウェアとしては、NXP i.MX6 と NVIDIA Tegra X1 を現時点でサポートしており、今後、Qualcomm Snapdragon 820 や Renesas H3 などの対応も行う予定です。その他の RTOS やハードウェアも必要に応じて対応が可能ですので、是非ご相談ください。
Qt Safe Renderer および関連ツールは商用ライセンス向けのアドオンとして提供する予定です。
さらなる詳細や、安全、認証に関する相談、提案に関してもお気軽に お問い合わせ ください。