組み込みシステムを開発、運用している場合には、何かしらの原因でシステムが動作しなくなる、意図した動作をしなくなるような事態が発生することが良くあります。そのような場合に、どのように対応すればよいかについての参考情報を紹介します。
問題の現象の正確な把握
まずは問題発生時には現象を正確に把握する必要があります。
最初に問題の現象が発生した場合は、正確な原因については把握できないことが多いですが、可能な限り問題を絞り込むための状況把握が重要になります。
例えば「システムが動作しなくなった」という現象であれば、具体的にどのように動作しないのかを把握するのが良いです。例として以下のような情報を元に現象を把握します。
- どのようなオペレーションがされた時に発生したか
- アプリケーションは立ち上がっている状態か
- syslogや、コンソールにエラーが発生していないか、また具体的なエラー内容はどうか
- 現象発生までのシステム外部の状態の変化がないか(温度、湿度、雷等)
- 問題が発生するまでの稼働時間に法則性があるか
- (ネットワークを使用するシステムの場合)ネットワークが正常に接続されているか
- (外部の機器との通信が発生する場合)外部の機器からの影響はないか
上記のような情報を可能な限り多く、正確に得ることで、次のステップである原因調査に役に立ちます。
再現試験の実施
問題が発生した場合は、原因調査と共に再現試験も行います。 これは原因調査の方法としての問題の切り分けであったり、最終的に問題を解消した場合のテスト等に役に立ちます。
「問題の現象の正確な把握」で得られた情報を元に再現試験を実施します。「問題の現象の正確な把握」で判明した状況と同じ環境で実施することは必須ですが、そのほかにも少し環境を変化させ問題の現象が発生しやすくなりそうな状況での試験を実施する場合もあります。
原因の切り分け
「再現試験の実施」にて再現する環境が整えば、問題の切り分けを実施します。 例えば、問題の現象はハードウェア/ソフトウェアのいずれかが原因で発生するのか等を再現環境を変化させつつ、原因を切り分けていきます。
最初は大きな粒度で再現試験を行い、徐々に細かくしていくのが効率的な実施方法となります。
十分原因の切り分けを行うことができれば、おそらく問題箇所の特定はできると思います。
問題箇所の修正、対応
問題の箇所が特定できれば、その内容を元に原因となっている箇所の修正等の対応を行います。問題箇所の特定ができている場合には、対応が簡単である場合が多いです。
もし、ソフトウェアの根幹部分等に起因する問題である場合等、十分な原因の切り分けができない場合は、対処療法としてワークアラウンドを実装し問題の現象が発生しないように対応することもあります。