HOME > ソフテックだより > 第66号(2008年5月21日発行) 現場の声編「ソフトウェア開発の見積もり」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 第66号(2008年5月21日発行)
現場の声編

「ソフトウェア開発の見積もり」

1. はじめに

ソフテックはシステム受託開発の会社です。
お客様から仕事の依頼を受けてシステム開発をすることが仕事であり、そのためにはどのような開発でも見積作業を行います。
見積作業は作業の最上流工程ですので、見積段階での失敗は最終的なQ(Quality:品質)、C(Cost:コスト)、D(Delivery:納期)の失敗へとつながっていきます。
今回は、この見積もりの難しさについて考えてみたいと思います。

2. ソフトウェア開発の見積もり

通常、システムは「現状抱えている問題を解決するための手段」です。
その解決のために「このようなソフトウェアやハードウェアが必要」という要求があり、そのための開発が行われます。

見積もりを行うためには以下のようなことをお客様から確認する(もしくは一緒に考える)必要があります。

(1). システムの目的

私はこれが一番重要なことと考えています。そもそもの目的がお客様と一致していなければ、最終的な製品を「お客様の望むもの」にすることは出来ません。目的を正確に把握できていないと効果的な提案を行うことも出来るはずがありません。

(2). 要求や要望事項があるのか?

システムを開発するときにはお客様は漠然とでも「あんなふうにしたい」「こうならないか?」という要求や要望事項を持っていると思います。
お客様が本当に望んでいることを実現できなければ意味がなく、要件定義の段階でこれらを漏れなく把握する必要があります。

(3). 希望納期は?

ソフトウェア開発の難しいところは人手を2倍に増やしても効率は2倍にはならない事です。お客様が「どんなに費用がかかってもよいから1ヶ月後に完成希望」と言われて、どんなに費用をかけても何ともならない事もあります。
その場合でも「出来ません」ではなく、少しでも希望に答えるためには「お客様にとって、その期日はどのような意味があるのか?」「機能単位のリリースでは不都合があるのか?」などを確認する必要があります。

3. なぜソフトウェア開発の見積もりは難しいのか?

なぜソフトウェア開発の見積もりは難しいのでしょうか?
ソフテックの場合はお客様に見積書を出して実際に発注していただかないと仕事となりません。
お客様は当然「これくらいだろう」という予算を考えているわけで、見積もりの内容について「なんでこんなにかかるのか?」というお言葉を頂くこともあります。

お客様は最終的には「機能の価値」を求めているのに対して、ソフトウェアの見積もりは「実現するためのコスト」を提示します。
優れた機能がソフトウェア的にも簡単に実現できれば問題ないのですが、ぱっと見には大したことのない機能でもソフトウェアで実現する場合には非常に難しいということがよくあります。

ソフトウェアは外から見ただけでは分かりません。「ソフトウェアは8割が非正常系の処理」と何かで読んだことがありますが、経験的にもその通りだと考えています。
【ファイルを読み込む】という機能についても

「ファイルが無かったら・・・」
「ファイルを別のプロセスがアクセス中なら・・・」
「ファイルの内容が間違えていたら・・・」
「想定以上の容量があったら・・・」など

プログラムを作る上ではさまざまな状態を想定してその場合の処置というのが記述されています。
ソフトウェア見積もりの方法についてはいろいろな手法がありますが、「これが最良!!」という見積もり方法がないのも現実です。

ソフテックの場合は、システムを構成する機能を細かい単位に分けて、それぞれでの設計、製造、テストなどを積み上げて全体見積もりを出す事が多いです。
それぞれの工数を出すのはこれまでの同様開発などでの実績や経験などをもとに算出しています。
機能算出に失敗すれば当然見積もりも不足する事になりますし、お客様が求めている以上の機能を過剰に算出しても、コストの折り合いがつかなくなってしまいます。

見積もるための大前提としては、要件定義が固まっていることが必要ですが、この要件定義が固まっていない状態で見積もる場合は特に注意が必要です。

4. 顧客要求把握の難しさ

要件定義を固めるにしてもお客様が真に求めている事を正確に把握する事が必要です。
実はこのお客様が求めていることは何か?と言うのを把握する事が非常に難しいことだと感じています。

ソフテックはソフトウェアのプロであると自任していますが、お客様はそのシステム、分野、業界のプロであります。
お客様自身が持っている常識やセオリーとソフテックの常識やセオリーを一致させないと隠れた要求、仕様といったものを取りこぼす可能性があります。
お客様自身も気づかないような要求や仕様を引き出し確認していく作業が必要ですが、この作業が重要です。
お客様が意識していない部分に焦点をあてて引き出すわけですから難しいのは当然です。

5. 終わりに

おそらく世の中のソフトウェア開発会社は同じような苦労や努力を重ねているものと思います。
ソフテックでもプログラミングスキルはもとより、このような見積もりスキルについても良い物を取り入れていき、常に上を目指していければ良いと考えております。
次回以降で具体的な見積もり方法などを紹介していきたいと思います。

(H.M.)


関連ページへのリンク

関連するソフテックだより

ページTOPへ