進捗と品質を基軸とした開発メトリクスを提唱
― ロイスさんが提唱している「開発メトリクス」とはどのようなものですか?
これまで私は数多くのメトリクスを提案してきましたが、最も主要なものは「進捗のメトリクス」と「品質のメトリクス」の2つです。
進捗のメトリクスとは、どれだけの仕事を今までに成し遂げたのかというものです。ソフトウェア開発の進捗状況の測定基準というのは、ウォーターフォール型開発とアジャイル開発とでは大きく異なります。ウォーターフォール型では、どれだけの工数やコードを取り入れたかで進捗状況を測定しますが、アジャイルではどれだけ有用な能力をユーザーに対して提供できたかで測定するのです。これは、どのくらいのコードが変更管理の下に置かれているかでも見ることができます。
それともう1つ、経済性の進捗度というものがあります。これは、あるコストをシークエンスに従って隔月や隔週で見ていった場合に、各地点でどれくらいの分布幅があるかで測定します。その幅が広いほど仕様書や設計などのプランに不確実性があるということになります。時間とともに幅が縮小していくのが理想的な状態です。
品質のメトリクスというのは、簡単に言えばどれぐらい良いものをつくることができたのかということになります。それは大きく3つの測定基準から成っており、1つは時間の経過とともに欠陥のトレンドがどのように推移していくか、2つ目は時間の経過とともにどれだけのものが廃棄の対象となるか、そして3つ目が、時間の経過とともに変更コストがどのように変化するかです。
なぜこれらを測定することが重要なのかというと、ソフトウェアに対して変更が加えやすいほど、より多くのパフォーマンスの確保や品質の向上につなげることができるからなのです。
クラウド時代でもチームワークがプロジェクト成功の鍵
― 日本でもクラウド・コンピューティングが急速に普及していますが、クラウド時代におけるソフトウェア開発者に求められるスキルについて教えて下さい。
クラウド・コンピューティングによって、ソフトウェア開発におけるインフラやリソースの効果的な再利用が可能になります。つまり、ひとつのプロジェクトを低コストかつ短期間で始めることができるのです。このことは、大きな経済的価値を生み出すことでしょう。
そうしたクラウド環境のソフトウェア開発で求められる最も重要なスキルというのは、開発者同士がいかにコミュニケーションやコラボレーションを円滑に進めることができるかなのです。
― やはり、チームワークが大切ということですね。
そうです。私の経験で言うと、良いアイデアを持ったエンジニアというのは数多くいるのですが、そのアイデアを周囲に上手に伝えることができるエンジニアとなると、ごく限られてしまいます。そしてそういったエンジニアこそが、プロジェクトを成功に導く原動力となっています。
とりわけプロジェクトマネージャーやITアーキテクトの役割は重要になります。優秀なプロジェクトマネージャーとITアーキテクトがおり、彼らがしっかりとコミュニケーションを図ることができた場合には、ごく平均的なスキルのエンジニアで構成されたチームでも、プロジェクトを成功させることができるでしょう。
反対に、プロジェクトマネージャーやITアーキテクトの能力が低くコミュニケーションがきちんとできていないような場合だと、いくら優秀なエンジニアがいるチームであっても、プロジェクトを成功させることはできないのです。