ソフト開発監査の目的その1:委託先の選定のために開発能力を判定するための監査

2018年8月3日ソフト開発監査

ソフト開発監査の3つの目的は開発力量の判定と開発力量の改善とソフト品質の確保

ソフト開発監査とは、ソフト開発委託先の力量、言い換えると開発プロセス品質とプロダクト品質を評価したり改善指導したりするための手法としてグータラ親父が勝手に作った仕組みですと、このカテゴリのトップページで紹介しました。これだけでは何の事か今ひとつよく判らないと思いますが、ソフト開発監査はに以下の3つの目的があり、それぞれ必要なタイミングで行うものです。この記事では1項目の委託先の開発力量を知るためのソフト開発監査について、もう少し具体的に紹介します。

  1. 開発委託先のソフト開発の力量を知りたい (実施時期は委託先選定時)
  2. 開発委託先のソフト開発の力量を改善したい(実施時期は委託先選定の後
  3. 不具合対策版ソフトの品質を確保したい (実施時期は対策版ソフトのリリース前)

1番目の力量を知りたいという目的で監査を行うのは、開発委託先を選定している時期です。幾つかの開発委託先の候補があって、どこの会社に開発を委託するのか決める時には、各々の会社のソフト開発の力量を知る事が必要ですので、そのためにソフト開発監査を行います。

2番目の力量を改善したいという目的で監査を行うのは、開発委託先は既に決まっていてその委託先でソフトの開発が進んでいる時期です。 より良いソフトを納品してもらうために、テストの項目に不足があれば項目を追加してもらう、委託先の開発・品質の管理方法に不足があれば改善してもらう、等のプロダクト品質とプロセス品質の改善を進めてもらうのが目的です。そのために、開発委託先の問題点を洗い出して対策を取ってもらうためにソフト開発監査を行います。

3番目の、不具合対策版ソフトの品質確保という目的で監査を行うのは、その開発委託先に開発してもらったソフトに潜在バグがあり市場で不具合を起こした場合です。市場で起きた問題の原因となるバグを修正した不具合対策版のソフトをリリースする前に、バグの修正方法は正しいのか、修正の効果はあるのか、類似の問題は残っていないのか、等を確認して不具合対策版ソフトが十分な品質を持っている事を確認するためにソフト開発監査を行います。

なお、実際のソフト開発監査についての具体的な紹介は、ソフト開発監査・実務 で始まるタイトルの記事にありますので、詳しい内容に興味のある方はそとらをご覧ください。では、順番にもう少し詳しく見て行きましょう。

1.開発委託先のソフト開発の力量を知るためのソフト開発監査はエンジニアの能力を見る

ソフトの開発委託先を選ぶ時、皆さんの会社ではどんな方法で何を調べて選んでいますか? 見積り金額、会社の経歴、これまでの自社からの委託の実績、他社からの受託の実績、得意とする製品分野、など色々な情報を集めて総合的に判断しておられると思います。

量産製品の製造をOEM先に製造委託する場合には、ソフトの開発委託よりも選定の基準が定めやすいです。量産品の製造能力は少し荒っぽい言い方をすれば、①製造設備の性能は充分か? と、②製造管理能力は充分か? という2つの事で決まってきます。

製品を製造するのは製造設備ですので、委託先の保有する製造設備が今回の製品を作るために必要な性能を持っているかどうかは、製造設備の仕様を見れば大抵の事は目処が付きます。あとは、その製造設備を正しく稼働させるための製造管理能力について、ISO9001 の第二者監査などの手法を使って確認すれば、製造能力は大まかには把握できます。製造委託をする製品に対して充分な製造能力を持っているかを判断できれば、製造委託先の選定で間違いを起こす事は少ないでしょう。

ところが、ソフトの開発委託をする場合には状況がもう少し複雑になります。なぜ複雑になるかという言うと、量産品の製造に相当するソフトの開発を行うのがソフトエンジニアと呼ばれる「人」だからです。そして製造設備の性能に相当するソフトエンジニアの能力は、「人」によって大きく変わってくるからです。 ソフトエンジニアの能力は、製造設備の性能のように明確に判る物でもないので、いろいろと工夫しないと技量が判りません。

ソフトの開発でも工程管理や品質管理といった開発管理能力は開発を実施する組織に備わっている必要性はあります。しかし、開発管理能力については、量産品の製造管理能力と同じように、 ISO9001 や CMMI という手法で管理プロセスの良否を見れば有る程度判定できます。 

このように、ソフトの開発能力を判断する上で重要な、ソフトエンジニアの能力が判り難いので、ソフトの開発委託先の力量が判り難くなってしまっているのが現状です。

なぜソフトエンジニアの能力は判り難いのか

それでは、なぜソフトエンジニアの能力は判り難いのでしょうか? ここでも製造設備と対応して考えてみましょう。製造設備であれば、その設備をちゃんとメンテナンスしていればカタログに書いてある性能を発揮してくれます。 例えば 1時間あたり1000個の処理能力のある製造設備なら、正しく運転すれば、1割程度の変動は生じるとしても、1時間あたり 900個から1,100個の製品が製造できます。 量産品の製造能力は製造設備の能力を見て置けば、少々のブレはあるにしても、それほど大きく間違える事はありません。

ところが、ソフトエンジニアの能力は一般的に15倍程の開きがあると言われています。実際にグータラ親父も自社で働いているソフトエンジニアの能力を測ってみた事がありますが、15倍までは行きませんでしたが 5倍程度の違いはありました。製造設備の性能に比べて、ブレの度合が一桁以上大きいですね。これだけブレ幅が大きいと適切な計画を作る事さえも難しくなってきます。それでも、一人一人のソフトエンジニアの能力をある程度正確に知る事ができれば、まだなんとかなります。

しかし厄介な事に、ソフトエンジニアの能力を開発を委託する前に知る良い方法が有りません。情報処理技術者試験などの資格試験はありますが、これらはどれも知識の有無を測ってくれるだけです。しかしソフトの設計や実装で本当に必要とされる能力とは、知識を活用して解決策を見出す知恵です。この知恵の有無がソフトエンジニアの能力に大きく影響するのですが、残念ながらこの知恵の大きさを定量的に測る方法はありません。

定量的に測れないなら定性的には測れるのか?

では、グータラ親父はソフト開発監査でいったい何を見て、その会社のソフト開発力量の良否を判断していたのでしょうか? 

実は、、、「勘」です。。。

う~む、ここでこの記事がここで終わってしまいましたね。。。。さすがにこれではちょっとアレなので、もう少し話を続けましょうか。 

ソフト開発の力量はソフト開発監査を通してチームリーダの能力で推し量る

グータラ親父がソフト開発監査で見ていたのは、ソフト開発を受託してくれる事になっている開発チームのチームリーダの能力です。本当は、チーム員一人一人の能力を見て判断したほうが良いのですが、さすがにそれは時間が掛かり過ぎて無理なので、チームリーダの能力を見る事でその開発チームの力量を判断する事にしていました。 

ソフト開発の経験、言語やCPU等に関する基礎的だけども幅広い知識、ソフトアーキテクチャに関する深い理解、テスト設計の重要性に関する認識、開発管理の能力、開発チームをまとめ上げるリーダーシップ、いろいろな側面を総合的に見ていけば、そのチームリーダの能力が見えてきます。 

しかしチームリーダの能力を見極めるためには、様々な場面を想定して、ソフト開発で必要となる様々な問題についてある程度の時間を掛けて相手と議論する必要があります。この議論を行うための手段としてソフト開発監査という手法を使っていたのです。

相手が日本人であれば、4~5時間議論すればその人の能力はだいたい判ります。相手が日本人でないと、どうしても言葉や文化の壁があるので1日半から2日程度の時間が必要になります。 ですが、その程度の時間を掛けてソフト開発の開発管理や設計・実装技術やテスト技術の事について話を聞いていけば、相手の能力が見えてきます。 ただし、4~5時間の議論で相手の能力を知るためには、多様な視点での議論が必要となってくるので、ソフト監査のチェックリストというのを作り、今の開発チームの開発プロセスや開発技術、テスト技術等に関する問題を具体的に確認していく中で、広範囲の議論を行えるようにしてきました。

チームリーダの能力が高いとこりなら委託しても大丈夫でしょうか?

組織の持つソフト開発の力量は、もちろんチームリーダの能力だけで決まる訳であはありません。しかし、グータラ親父の経験では、ソフト開発の力量を決めるのは、組織の持つ開発プロセスの良否が2割チームリーダの能力が5割、チームメンバの平均的な力量が3割程度の比率でした。

ソフトの開発は、その殆どがソフトエンジニアの頭の中での作業です。そして、その開発作業の成果物である設計書やソースコードが良いものになっているかどうかは、多くの場合チームリーダが設計レビューやコードレビューを行って確認します。もちろん、チームリーダが一人で全てのレビューを実施できない場合が多いでしょうから、その時にはサブリーダがレビューを実施する事もあるでしょう。しかし、チーム内の設計レビューやコードレビューの頻度やレベルを決めるのは、チームリーダです。また組織が定めた開発プロセスに振り回される事なく、開発プロセスを道具として使いこなして開発を成功に導くのも、チームリーダです。

このように、ソフト開発チームの力量はチームリーダの能力で決まると考えても、それほど狂いは生じないというのがグータラ親父の経験上の結論です。 

ですので、ソフト開発の委託先を選定している時点で、その委託先に開発を委託しても大丈夫かどうかを判定するためにソフト開発監査を行う場合には、グータラ親父は開発チームリーダの能力を一生懸命推し量って、その結果によって委託しても大丈夫かどうかを判断していました。