(支社一覧)お問い合わせ海外代理店7本連載は、「組込システム」をテーマとしたコーナーです。組込システムを約30年間に渡って開発してきた実績にもとづいて、毎回、関連のさまざまなトピックを紹介していきます。第7回は、想定外の出来事(非正常系)が発生しても、生活の継続可能なシステム設計がテーマです。組込システム開発チームVRシステムをはじめとした関連分野における展開を推進。組込システム開発、マイコンソフトウェアの受託開発、コンサルティングを中心とした事業を展開。情報システムは生活や社会活動へ様々に入り込み生活環境の重要な要素となってきました。そのため、情報システムの不適切な動作や停止は、生活に重大な影響を及ぼします。データの誤設定といった事象が起こります。ここでは、取り扱い説明書やカタログどおりの動作が期待される振る舞いを正常系、正常系から逸脱した状態を非正常系と呼びます。生活・社会システムでは、様々な非正常系が発生したとしても安易に停止することが出来ません。停止することは、生活活動にとって大きな障害となります。そのため、多少の障害が発生した状態でも生活に必要な最低限の稼動を継続し、どのような状況でも生活活動を継続し安全と安心を保つことが大切です。非正常系の発生により、正常なシステムの振る舞いから逸脱した動作が起こります。想定していない逸脱が発生した場合、システムの動作がどのように利用者に影響を及ぼすかという想定を行うことはできません。簡単な仮説事例として内容物が100度になったとき沸騰と見なす電気ポットにおいて、富士山の頂上で使用すると90度以下で沸騰するため、電気ポットは加熱を継続し続けてしまいます。富士山の頂上での使用を想定し、加熱中の温度上昇の停止を沸騰の判断とした場合において、油を入れてしまった場合には、加熱を継続し危険な状態になります。したとき」に加熱動作を停止する電気ポットを作ることで利用者の安全が確保できます。近年の通信技術の進化、IoTなどにより、システムは様々な機器間でつながりあうシステムになっています。このため、一部の構成要素が正常から逸脱した場合にシステム全体がそれを認識し適切な対応を実施し完了するまでに時間を要します。その間に、システムの構成要素間で様々な不整合が発生します。生活に存在する非正常系の発生が原因となってシステム内の構成要素の振る舞いや特性に正常からの逸脱が発生します。その構成要素と関係する他の構成要素に逸脱の影響が波及することにより、逸脱の連鎖がドミノ倒しのように発生します。最初に逸脱した構成要素から離れた構成要素では、“風が吹けば桶屋が儲かる”のように、簡単には連想できない状況が発生する可能性があります。逸脱の発生は、構成要素が受けるストレス要因の大きさと構成要素の持つストレス耐性の相対関係に起因します。単独の要因では逸脱が発生せず、ストレスを大きくする逸脱の促進要因やストレス耐性を劣化させる逸脱の促進要因も存在します。これらは気付きにくく、これらの組合せにより、ありえないと考えていた逸脱が発生する場合があります。異なる逸脱要因が同時に発生した場合、組合せによる全く異なる特性の逸脱が発生する可能性もあります。ひとたび逸脱が発生すると、このような促進要因が様々に発生し、想定できない逸脱が容易に発生する状況が生まれます。4.離散型状態遷移システムは、離散型状態遷移の特性を持ち、時々刻々特性が変化します。そのため、逸脱要因がどのような状態において発生するかにより影響が多岐に渡り、影響の発生確率も単純に定義できません。簡単な事例として、明るさをセンサで取り込み、夜間にのみ照明を点灯させる道路灯において、夜にセンサが停止すれば、昼間も点灯を継続するだけですが、昼にセンサが故障した場合、夜間に点灯できず、道路の安全な明るさが確保できなくなるかもしれません。配慮すべき逸脱は、設計手段にも関係します。リモコン操作部から傾きを制御できる介護用電動ベッドにおいて、操作中にリモコン操作部とベッド傾斜駆動装置間の通信が断線する可能性があります。傾斜開始ボタンが押されると、リモコン操作部がベッド傾斜駆動装置に「傾斜開始」のメッセージを送り、傾斜停止ボタンが押されたときに「傾斜停止」のメッセージを送ることにより傾斜を停止させる設計方式である場合、傾斜駆動中にリモコン操作部からの通信が断線した場合に傾斜を停止できなくなります。傾斜開始ボタンが押されるとリモコン操作部が「傾斜実行」というメッセージを傾斜駆動装置に連続的に送り続け、傾斜停止ボタンが押されたとき「傾斜実行」メッセージを停止する設計をしていれば、断線した途端にベッドの傾斜は停止できます。このように、設計方式により想定する必要のある逸脱要因が異なる場合もあります。システムでは、様々な非正常系が発生するため、一つの振る舞いに対して複数の逸脱が存在し、正常な機能要求仕様よりはるかに多くの障害回避仕様が存在します。このため、システムとしての起こりうる逸脱要因の把握と、逸脱に起因する障害シナリオの可能性を把握する必要があります。逸脱は、正常なシステムのシナリオから発生します。そのため、起こりうる逸脱の可能性を把握するためには、正常なシナリオがイメージできていることが前提となります。逸脱が発生する要因には、利用者の誤操作や誤運用、異常環境などがあるため、開発システムだけでなく、利用者や環境を含むシステムとして捉える必要があり、運用中の振る舞いをイメージする必要があります。最初に、システムの各構成要素に起こりうる逸脱の発生要因と逸脱が起こった場合の特性を列挙します。前述のように、単独では逸脱に至らない促進要因も抽出する必要があります。住宅の様々な端末機器とセンター装置間で通信を行うシステムにおいて、逸脱要因として広域停電の発生と復帰を配慮する必要があります。通常の動作中においての通信負荷は問題ありませんが、停電復帰時に一斉に初期通信を開始する可能性があります。2.連鎖シナリオの分析システムは離散型状態遷移の特性を持つため、一つの逸脱要因に対し、各種の状態ごとに起こりうる影響を抽出する必要があります。その影響が波及していくシナリオを想定していきます。起こりうる影響が障害と考えられる場合は、対策を検討します。これをすべての逸脱要因ごとに検討する必要があります。次に、逸脱シナリオの組合せによる障害可能性を検討します。複合要因や促進要因の掛け合わせを検討する必要があるためです。膨大な組合せがあるように感じますが、現実的に意味ある組合せは限られており、正常系の振る舞いが把握できれば充分検討が可能です。大規模なシステムの開発初期において、すべての詳細な動作や設計方式を把握することは困難です。詳細なシステム分析は、設計作業と同時進行しながら常に設計作業より一歩先に動作の把握による逸脱時の振る舞いとその回避策の定義を行うことが必要です。この逸脱シナリオと回避策は、設計根拠として以降の設計作業の重要な設計情報になると同時に、将来の設計ノウハウとして蓄積が可能です。逸脱シナリオの中で利用者に障害を及ぼすものは、回避策を組み込む必要があります。逸脱シナリオに対する複雑な対応は非正常系の状態を複雑にすると同時に以降の連鎖や複合の原因になるため、さらなる障害リスクを増大させます。基本的に逸脱の発生は、確率の低い事象のために出来る限り単純な状態に遷移することが必要です。逸脱状態は利用者には経験のない状態であるため、機能を縮退して動作している状況が利用者に分かり易いことが必要です。開発初期段階で非正常系を配慮せず簡潔に分析した場合、詳細な設計段階で障害回避を検討せざるを得なくなり局所的で複雑な設計対応を多くの箇所に考えることになり、障害リスクも高まります。最初に複雑に考え、逸脱の根幹から簡潔に設計する仕様を組み込めば、設計は複雑にならずリスクも低減できます。マイコンソフトウェア等の受託開発に携わった豊富な経験にもとづいて、これからのスマート社会を支える上で不可欠な組込システム開発の考え方・知識・手法を紹介。/受託に関わる方は必読の手引き書です。VRシステム・パーキングソリューション・ECOソリューション>>その他ソリューション。