ki-ki-blog Written by ⚽kaz±

それ、ダブルチェックでなく、クロスチェックしないと失敗しますよ?

Engineering SE

上司やリーダーなど、開発の成果物をチェックする立場の方:
・また担当者のミスを発見できなかった。どうやってチェックすればいいんだろう?

・ダブルチェックやクロスチェックをしているが、それでもミスを防止できない。どうしたらいいんだろう?

今回はこういった疑問に解説していきます。

これを書いた自分はこんな人です学卒後、組み込みソフトウェアエンジニアに従事。新卒から7年間勤務した会社では、クロスチェックが機能していて、最初は緊張で手を震わせながら確認作業を行っていた。そこで、主にコード、テスト結果のクロスチェックを行い、その経験を現在勤務している会社でも活かしている。

質問:ダブルチェックとクロスチェックのちがいは?まず、ダブルチェック所チェックの違いを理解しますか?
両方とも似ているワードであり、かつよく使われることです。

ダブルチェックとは、単純に作成者が行ってきた内容を再度チェックする、と言うものになります。

クロスチェックとは、別の見方でその成果物をチェックすると言うものになります。

開発の成果物はダブルチェックでなく、基本クロスチェックしよう

開発の中で作成した、仕様書や設計書、コードのチェックは、ダブルチェックではなく、クロスチェックすべきです。なぜなら、これらの成果物は、単に手順通りにやれば作成できると言う類のものでは無いからです。

即ち、作成者とは違った見方でチェックをしないと作成者のミスに気付かないからです。

作成者を信じ切ったことで不具合となった例

ある機能についてのコードを実装した際、行動の実装者が、その機能について大変よく知っているものでした。逆に従者であるチェック者は、あまりそのようなことを知りませんでした。

なので、最初から結婚するときに、チェック者は、その作成者に、色々と質問しながら実行していました。まぁ、質問すること自体は良いのですが、これではダメですよね。そこに上位者としての、作成者とは違った見方で実行するということが何もないからです。

そして、そういう時に限って、不具合となり、客先から指摘をされてしまいました。幸い、まだ試作段階だったのでそれほど格にはならなかったのですが、チェック者が作成者を信じすぎて結果的にミスに気づけなかった典型的な例です。

作成者がしたことをなぞるだけで不具合がでた例

作成者が、チェック者に確認を依頼した際、確認対象の成果物だけでなく、その結論に至るまでに参照した仕様書や、設計した設計書を合わせて提出してくれました。

もちろん、チェックしたらそれらすべてを見るわけですが、チェック者が、単純に作成者がやってきた形だけを追ってその形の内容が正しいかを見るだけのチェックをしてしまいました。

なのでここも同じように、チェック者としての別の視点でチェックする、という観点がありません。なので、ミスがあっても気づかず、結果的にテスト段階で不具合が見つかったと言うことがありました。

ダブルチェックとクロスチェックのすみわけ

ここまで書いてわかるように、ダブルチェックは、単純に手順書どおりによって作られるようなものに対して行うのは有効です。

例えば、完全にフォーマットが決まった成果物のチェックがそれに該当します。「ここの欄はこのファイルのここから持ってくる、そこを書いたら次にここ、そして、その結果からここの欄を書く」、など、手順が完全に決まっているものです。

対して、想像や設計を駆使して作るものに対してはクロスチェックが有効となります、モノとしては、先ほど紹介した通り仕様書設計書、コードがそれに該当します。

クロスチェックすることで、他の気づきも発見できます

クロスチェックをきちんとやることにより、作成者が思いつかなかったような、他の気づきも発見することができます。

なぜなら、作成者とは別の視点で実行するために、いろんな書類を調べたり、他の人に知見を聞くなどの行為をすることで、別の人の視点を手に入れることができるからです。

他プロジェクトにも横展開が必要となった例

コードのクロスチェックの際、他のプロジェクトのやり方を参考にしながらチェックを行った結果、そのチェック対象の成果物を修正することになったのですが、同時に、その修正箇所のソースは、他のプロジェクトでも使われていることがわかりました。

なので、チェック対象のプロジェクトに限らず、他のプロジェクトにもその内容を横展開しないといけないことがわかりました。別の視点を持ってチェックした結果分かったことだと思います。

今回変更点以外に要変更部分が見つかった例

コードを作成する際は、基本ベースとなるソフトがあって、それに対して変更加えていくのが主なやり方です。

もちろん完全新規で作るものもあります

そして、あるコードに対して変更が加わっており、通常は変更箇所を中心にチェックするのが通例でしたが、変更箇所だけでなく、既存のコードも確認を行いました。

すると、既存部分での不具合を発見することができました。規定演技に従って、変更点だけ見ていたら気づかないミスでした。

クロスチェックの質を高めるには

クロスチェックの質を高めるには、代替的、例外的なパターンを考えるとよいでしょう。
例えば、

ある機能させるには、手順の1から3を行う必要があるが、この手順を、

  • 2→1→3とした場合にどうなるか
  • 1と2の間で別の手順をした場合どうなるか
  • ある別の機能が動作中、それとも別の機能を動かそうとしたらどうなるか

などのように、通常では考えられないようなことを想定するなどの検討が大事です。

また、これ以外にも、他のプロジェクトで同じ機能がないかを調べ、さらにその際に、コード内の判定方法はどのようなものがあるかを調べるのも重要です。

そこで違う判定や処理をやっているのなら、その処理が今回のシステムに追加が必要か否かを判断することができるからです。さらに、そのシステムを入れ込んだ人が近くにいるのなら、直接話をしてみるのもありだと思います。

このように、代替的、かつ例外的なことを思いつく限り検討することでクロスチェックの質を高めでいきましょう。
そうすることで、組織としてミスや不具合がなくなると良いのかなと。
今回は以上です。

人気記事プログラミングスクール多すぎ!どう選ぶの?【4つの指標で選ぼう】

人気記事【テレワークで太った!】運動不足を解消しないと!【対策あり】