CMMレベル5の認定を受けたインドのソフトウェア開発会社にきちんとしたモノを作ってもらうための2つの質問と4つの具体策を伝授しよう
インドが大量に供給する高レベルのハイテク技術者を、日本の組み込み系ソフトウェア開発現場で活用する……。両者の思いや利害はきれいに一致しているのですが、うまく融合できている例はほとんどありません。こうなる原因や、悲劇が発生するメカニズムについては、前々回「『懐石料理』でインドの『スパイス』をうまく使う方法」、前回「幻の白いカラスを追い求め、僕らはインドにたどり着く」で説明したとおりです。
今回は、老舗の懐石料亭が、3つ星インド・レストランの花形シェフを招いて成功するにはどうすればよいかを具体的に検討していきたいと思います。
インドのソフトウェア開発会社が日本でセールスを展開する場合、殺し文句として使うのが「ウチは、CMMのレベル5の認定を受けています」でしょう(これは前回お話ししたとおりです)。もし、こうした場面に出くわしたのならば、「(CMMのレベル5か〜)じゃあ、お願いします!」といってしまいそうになるのをグッとこらえて、このコラムを思い出してください。
前回のコラムにも書きましたが、CMMのレベル5は開発プロセスの成熟度の最高レベルであり、ソフトウェア開発のプロセスが確立しているのはもちろん、開発プロセスを具体的な数値で測定して、プロセスを最適化する能力があるということであり、決して高品質ソフトウェアを効率よく作ることができる「絶対的な能力」ではありません。
もし、インドのソフトウェア開発会社の技術者から「ウチは、CMMのレベル5(もしくはレベル4でも)認定を受けています」といわれたら、3秒だけ感心した後、涼しい顔をして次のように質問してみましょう。
要求仕様定義のフェイズからテスト・フェイズまで、実際にどのように開発するか、御社の開発プロセスを具体的な成果物を例示して教えてください。
相手に、ソフトウェア開発の一般的な話を聞くと、優等生的な当たり前の答えしか返ってきません。レベル5の認定会社であれば、そんなことでは絶対にボロを出しません。こんな場合は「現物」でチェックするに限ります。差し支えのない範囲で、実際に開発したモノ(ドキュメント)を見せてもらいながら、開発プロセスを説明してもらいましょう。「百聞は一見にしかず」です。仕様書、設計書、ソース・コード、テスト仕様書、デバッグ・テストの実施結果、品質分析書などを見ると、相手のソフトウェア開発能力が一瞬で分かります。特に、具体的な品質の確保策、制御方法を実際の成果物(ドキュメント)を例に説明してもらいましょう。
続いて、第2の質問をぶつけてみましょう(これもさらに涼しい顔をして)。
ソフトウェア開発での具体的な統計データを教えてください。
世のスポーツ新聞でさえ、プロ野球選手のデータ、例えば野手の場合、打率、得点圏打率、出場試合数、打席数、打数、得点、打点、安打数、三振、四死球、犠打、盗塁、出塁率などを毎日のように示しています。ソフトウェア開発でも、いろいろな数値を測定し、プロセスを制御しようとします。計測していないのは問題外。「受付で交通費をもらってお帰りください」と丁重にお引き取り願いましょう。社外秘でない範囲で、具体的なプロジェクトの生産性、品質データ(総バグ数、バグ発生曲線、影響度別バグ数、修正・未修正バグ数)などを提示してもらうと、相手の実力がはっきりと見えてきます。プロセスの具体的な値を提示できることもレベル5(もしくはレベル4)の能力のうちです。
では、発注後の品質確保の進め方はどのような点に注意すればよいのでしょうか? 以下で具体策を見ていきましょう。
発注直後の数カ月間は、仕様書や設計ドキュメントがインドから期日どおりに出てきます。ところが、いざ開発フェイズが進み、インドで作ったソース・コードを検収のため日本で動かしてみると、機能漏れやバグが! なんてことはよくあります。その瞬間から、お互いが大混乱し、後始末に奔走して眠れない日々が続くことになります……。
せっかくソフトウェア開発能力が非常に高いインドの開発会社に発注したのに、これでは救われません。どうしたら品質の高いものを作ってもらえるのでしょうか?
ここで登場するのが、インド発注の切り札「テスト・スイート」の同時発注です。
どういうことかというと、単にソフトウェア開発を発注するだけではなく、テスト項目を設計してもらい、さらに、それを自動実行するテスト・スイートも同時に作ってもらうのです。
具体的な手順は、以下のとおりです。
完成した仕様書を基に、インド側にテスト項目を洗い出してもらい、「テスト仕様書」を作成してもらいます。テスト項目とは、具体的な入力値と期待する出力値の組み合わせで記述した「変形版の仕様書」です。テスト仕様書の作成段階で、仕様関連のバグ(特に、仕様の抜け)を早期に見付けだすことができます。
インド側が作成したテスト仕様書にある各テスト項目で、期待している品質を確保できるのか、日本側でしっかりとチェックします。一般的に「テスト項目には20%前後のバグがある」ということを頭に入れ、内容を細かく分析しましょう。
つまり、「このテスト項目にすべて合格しないと、受け取りません」という検収条件を突き付けます(実際には発注の段階で事前に取り決めをしておきます)。ソフトウェア開発とテスト・スイートを同時発注することは、自分で自分の首を絞めることと同じです。テスト・スイート全件合格を検収条件にすると、いいかげんな品質のソフトウェアは作ってきませんし、機能の抜けもありません。また、検収条件が事前に提示されていますし、非常に明確です。
インド側が作成したテスト項目によって摘出したバグを単に修正しただけでは「モグラたたき」式品質確保です。これでは不十分。熱が出たら、薬を飲んで熱を下げ、それでよしとする対症療法と同じです。実は、発熱の原因が盲腸の化膿(かのう)かもしれません。摘出したバグを基に、以下の分析を実施することが必要です。インド側がきちんと分析しているか、チェックしましょう。
以上が、日本とインドとの国際共同開発を成功に導くためのポイントです。
インド人エンジニアは、異常にプライドが高く、孤高の哲学者に見えます。ソフトウェアの開発能力が非常に高く、特に、ソース・プログラム以外のドキュメントがないソフトウェアの解析能力は世界で圧倒的に最高です。
優秀で思慮深く誇りも高いインド人技術者とソフトウェアを共同開発する場合、「こちらが金を払うのだから、いったとおりにしろ」と頭ごなしに命令したり、品質の低さをなじったりしてはいけません。また、「相手が一方的に悪い」という考えを持たないことも重要です。日本側にも誤解や悪いところがあるはずです。「お互いの考え方が違う」「宗教が違う」と相手の考えや気持ちを理解することも時には必要です。
ただし、情に流されてはいけません。いうべきことはキチンと主張しましょう! 改善してほしいプロセスがあれば、数値を示して具体的に説明しましょう。CMMのレベル5取得企業なら、こちらの要望が満たされるように、相手が開発プロセスを最適化してくれるはずです。これが、レベル5本来の意味です。
自分自身を客観的に見ることができ、相手の特徴を理解していれば、ソフトウェアの国際共同開発は必ず成功します。日本の老舗懐石料亭が、新しい和食を開拓するために3つ星インド・レストランの花形シェフを招き、成功するより、はるかに簡単です。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.