広告

高い品質のソフトを設計するために

雑記

「組み込みのソフト開発のおいて、品質をあげるために出来ることや考え方って何があるだろうか?」
こんな疑問をお持ちの方に向けた記事です。

どうも、ベタオシです。

組み込みソフトの開発で、ソフトのクオリティを高めるための考え方やすぐにでも取り掛かれるアクションについて紹介します。

この記事には次のことを書きました。

  •  組み込みソフト開発におけるソフトの質を上げる考え方

僕は安定動作が求められる環境で使われる組み込みソフトの開発を10年以上経験してきました。その経験をベースに記事を書いています。

広告

品質の低い組み込みソフトってどんなもの?

滅多に起こらない事への対処を考えていないソフトは品質が低いです。開発期間や予算等の問題で、細かいところまで仕上げることが出来ない場合があることは、同じソフト開発の仕事をしている人間として理解できますが、低品質のソフトをリリースしても構わないとは僕は思いません。ユーザーも同じ様に考えるでしょう。

低頻度の問題に対処していないソフトは品質が低いと考える理由は、レアケースだと判断した問題のほとんどは製品がリリースされた後に発生してしまうことが多いからです。ユーザーの数が多いほど、ユーザーの利用時間が長いほど、この通りになってしまいます。

10000回に1度、正常に起動しないアプリを1人で使うと、問題が発生する可能性はとても低いですが、そのアプリを10000人で使った場合、誰か1人はアプリが正常に起動しない現象が起こってしまいます。

開発チームにとっては10000回に1度の珍しい現象となるわけですが、利用者の視点で見ると、最初の起動から問題が出てしまうこともあるわけです。初回起動から問題が起こってしまったのなら「このアプリはまともに使えない」と言われても仕方がありませんよね。

高い品質のソフトを設計するための考え方

それではソフトの質を高めるための考え方はどうすればいいのでしょうか?

正解はたくさんあると思います。その中の一つとして「あり得ないと思ったことは必ず起こる」と考えてみるのがいいと僕は思います。先ほど紹介した通り、どんなに発生確率の低い問題であっても、大勢の人が使うと、簡単に起こってしまうためですね。

その他の注意すべきものとして「タイミングは必ずズレる」と考えることも役に立つでしょう。ソフトウェア同士の連携やソフト内部のスレッド連携では、いつも「必ずAが先に完了しBが後に完了する」とは限らないのです。稀に「Bが先に完了しAが遅れて完了する」場合が出てくると考えて、「BはAが完了するまで待機する」といった措置を取る必要があります。

「デバイスは必ずアクセスできない場合がある」という考え方もよいです。アクセスがいつも成功するわけではありません、デバイスが見つからないことも意外とあると考えた方が安全です。

実装工程で出来る品質の高め方

ソフトを実装する段階で、高い品質にしていく方法もあります。

関数のエラー処理は必ずやっておくようにしましょう。コーディングが面倒で、そんなエラー起こらないでしょうと考えてしまうこともあると思います。しかし、まず間違いなくエラーは起こってしまうので、エラーケース毎に処理していく必要があります。

パターンがとても多く、全てを網羅することは得策ではないと判断した場合、ソースコードとドキュメントにどうして省略したのかメモを残しておくと、次にソースコードに触れる人が助かります。その人は未来の自分かもしれませんし、違い誰かかもしれませんが、簡単な言葉で書いておくのがいいですね。

変数や確保した領域は必ず初期化しておきましょう。人によっては当たり前のことですが、たまに忘れてしまい、それが問題を起こしていたなんて事もあるので、注意したいポイントになります。

新しい言語ではこの問題を言語側でサポートしてくれるようになりつつありす。しかし、気にしなくて良いとも限りませんから、確認をした方がいいですよね。

全ての分岐が設計通りに動作することを確認しておきましょう。これも当たり前のことになりますが、基本中の基本なので書きました。

エラー処理側の分岐は動かしたことがなかった、エラー処理側の分岐内部でエラーが発生したという笑えない話をたまに聞きます。ソフトがどちらの分岐処理を実行しても、問題なく動作することを確認しておくべきですね。

まとめ

組み込みソフト開発におけるソフトの質を上げる考え方、実装工程で出来る品質の高め方について紹介しました。

滅多に起こらない現象に対する措置は、作業時間の割に効果が見えてこないので、やっても仕方が無いという気分になります。しかし、ユーザー全体で考えると、常に誰かソフトで起こっている可能性があるかもしれないので、しっかり対処しておきたいですね。

IPA独立行政法人情報処理推進機構セキュアプログラミング講座も参考になりますよ。

それではまた、ベタオシでした。

広告

雑記

Posted by Many