日曜日, 5月 27, 2007

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

またもや更新間隔が空いてしまいました。けっこうプロジェクトで苦しんでいます。うーむ。
現在直面している問題は「ソフトウェア開発見積もり」です。うげげ。
というわけで、改めて色々と整理をしてみるエントリになります。興味の無い人はスルーして下さい。

まずは、「ソフトウェア開発見積もり」の大前提。セントラルドグマかもしれないけど。

「遅れているソフトウェアプロジェクトへの要員追加はさらに遅らせるだけだ」
  • コストは人数と歳月の積に比例するが、仕事の進み方は必ずしもこれとは一致しない
  • 人数と時間には互換性は無い(9人の妊婦を集めても、1ヶ月で赤ちゃんを出産することはできない)
フレデリック・ブルックス「人月の神話」

「プロジェクトを大失敗させる原因は二つある。ひとつは、見積もりミスだ」
  • 楽観的な見積もり:見積もり根拠があいまいで、必要な要素をきちんと見積もっていない
  • 顧客側による(一方的な)コスト削減要求
  • ムリなプロジェクト
ロバート・L・グラス「ソフトウェア開発55の真実と10のウソ」

あと、個人的に重要だけど忘れられがちなのは次の定理(?)
「コストやスケジュールを予測する場合、まずソースコードの行数を見積もる・・・というのはウソ
  • コストやスケジュールより、LOC予測する方が難しい(1980年代に証明済み)
ロバート・L・グラス「ソフトウェア開発55の真実と10のウソ」
現実の見積もり方法に関してですが、とりあえずWebで概要をつかむには日経ITProさんの上流工程AtoZというサイトが良い感じです。

さて、ソフトウェア開発見積もりですが、個人的な理解は以下の通りです。
Step1. まず、開発しようとしているソフトウェアの規模を見積もる。
Step2. 見積もったソフトウェアの規模を実現するための、作業を見積もる。
これをごっちゃにすると、かなり神頼みの見積もりになってしまうというのが個人的な意見です。

■ソフトウェアの規模見積もり
これも個人的な知識のまとめですので、間違っているかもしれませんが、ソフトウェアの規模見積もり方法は以下の3つが代表的です。
  • 勘と経験と度胸法(通称KKD法)
    基本的に見積もった人がどれくらい信用できるかに依存しますが、かなり的確な見積もり手法です。そもそも、作ってもいないソフトウェアの規模なんて想像し難いワケですから。ただし、個人的には以下に注意しています。
    「見積もった人が冥界にお住まいの場合」→1日が20時間くらいの計算になっている可能性あり。
    「見積もった人が勉強不足で、今回のアーキテクチャをよく分かっていない」→論外。しかし、ありがち。
  • LOC見積もり(開発コードの行数を予測する)
    まったく新規に開発するソフトウェアを見積もる場合には利用してはいけない見積もり方法です。(なぜなら、LOC自体を予測することが非常に困難だからです)
    とはいえ、個人的にはコーディング工程の見積もりのチェックには使っています。
  •  ファンクションポイント法
    大変手間がかかる上に、所属組織で過去のプロジェクトも同様に見積もっていないと厳しいですが、精度はかなり高い(と一般的には認識されている)手法です。
    すっげー大変なので、かなりガッツリと作業時間を取らないと出来ません。
  • ユースケース法
    システムの使われ方(ユースケース)に着目した見積もり方法。わかりやすいのですが、精度は微妙な気が。ある意味、将来作るマニュアルのページ数から見積もりを類推するようなものです。
うーん、最近マトモに見積もりの勉強をしていないので、3年くらい前の知識で時間が止まっている感じ。というわけで、再勉強することを決意。

■参考となりそうな資料

ソフトウェア開発見積りガイドブック―ITユーザとベンダにおける定量的見積りの実現
情報処理推進機構ソフトウェアエンジニアリングセンター
オーム社 (2006/05)
売り上げランキング: 85647

→なか見検索に対応しているので、立ち読みができます。

ソフトウェア見積りのすべて―規模・品質・工数・工期の予測法
Capers Jones 富野 寿
構造計画研究所 (2001/03)
売り上げランキング: 245837

→値段高すぎ!個人じゃちょっと買えません。とはいえ、ロバート・L・グラス「ソフトウェア開発55の真実と10のウソ」でも引用されていたので、重要だとは思うのですが・・・会社のどこかに死蔵されてそう。

ソフトウェア見積り―人月の暗黙知を解き明かす
スティーブ マコネル Steve McConnell 田沢 恵 溝口 真理子 久手堅 憲之
日経BPソフトプレス (2006/10)
売り上げランキング: 36480

→というわけで、こちらをAmazonでポチッと購入してみました。本当はこの勉強会に出たかったんですが、知った頃には終わってしまっていた・・・

月曜日, 5月 14, 2007

IT業界の人はITを知っているのか

更新をサボリ気味でごめんなさい。いろいろと忙しくて、万事滞ってます。
というわけで、本のご紹介ですが、すいませんワタシはこの本を読んでいません!という、ヒドい展開です。

デジタル・ワークスタイル―小さなことから革命を起こす仕事術
徳力 基彦
二見書房 (2007/04)
売り上げランキング: 149


本の著者の徳力さん(一度セミナーでお話を聞いた事がありますが素敵な方です)が、Modern Syntax Radio Show Podcastで喋っていたのを今朝の通勤時で聞いたのですが、この本は「Blogなどを読んだりしない、ネットを使っていないビジネスマン向けの本」ということです。Blogなどで情報収集をできている人には知っている話ばっかりだそうなので、ちょっと私は購入は見送っています。

これもPodcastで話題になっていましたが、IT企業やその周辺で、いわゆるシステム開発を行う人々は、意外というか驚くほど最近のネット事情を知らなくて、ビックリします。

この間は、「情報収集の秘訣を教えて下さい」と若い子に聞かれたりして、びっくりしました。
普通にRSS-Readerで気になる人と有名な人と知人のBlogをチェックして、SNSを読んで、del.isio.usかはてブの人気エントリーを暇つぶしにたまに見て、あとは人に会って話を聞けばいいんだよというような話をして、タスク管理はGTDだねというような話をしましたが、実際問題こういったキーワードについても、ほとんどの人がひっかかりません。書いてて悲しくなってきた!

というわけで、まだまだネットを活用していない人にはお勧めな気がします。
私の知り合いの人は、ぜひ読んだら感想を教えて下さい :-)