150912225700_TP_V-2

システム開発を行うには、システム開発会社に作業見積もりをしてもらうことが必要です。このとき、早く効率的なシステム開発を目指すのであれば「細々とした小規模な案件」を積み重ねていくよりも「ある程度まとまった開発規模の案件」として見積もりをしてもらうべきです。

ここでは、システム開発を行うときに細々とした項目に分けてやるよりまとめて一気に進める方が良い理由についてお話ししていきます。ここで述べる内容を理解することにより、システム開発を早く効率的に進めるやり方を学ぶことができます。

システム開発の各工程には、最低限の固定費用がかかる

システム開発の工程は、プロジェクトにより異なりますが基本的に「要件定義」「システム設計」「プログラム開発」「システム構築」「現地調整」といったものに分けることができます。

各工程は、さらに開発の規模により金額が変動する「変動費」の部分と開発規模と独立して発生する「固定費」の部分に分けられます。

そして、仮に開発規模がとても小さくて変動費がゼロに近いとしても各工程で一定の固定費がかかってしまいます。固定費の内訳は、開発するシステムに合った開発環境を構築したり、過去のソフトウェアのソースコード(開発者の書いたプログラム)を調査したりといった作業があります。

これらの固定費は、案件ごとにかかるものです。すなわち案件を細かく分けた場合、それらの案件ごとに工程の固定費が計上されることになります。固定費を積み上げていけば、結果として開発に要する金額が高額になっていきます。かつ、開発に余計な時間がかかるようになります。

このようにシステム開発は、細々とした案件に分けるよりもある程度まとまった案件にする方が早くかつ安く進めることができるのです。

作業見積もりの工数には、最小単位が存在する

変動費の見積もりを行う場合、「工数(開発に必要な仕事量)という単位が使用されます。見積もり工数は、多くの場合「類推見積もり」と言って過去の似たような仕事でかかった実工数を参考にして算出されます。

そして、工数には最小単位が存在します。工数の最小単位は、0.5人日だったり1人日だったりします。工数の最小単位は、実際の作業時間に比例していません。

例えば、プログラムを1行ないし数行直すだけでも最小単位分の工数が計上されます。実際に数行のプログラムを直すのに必要な時間は、ほとんどの場合1分から数分といった程度です。半日や一日もかかることは、まずありません。それでも作業見積もりは、あくまで最小単位の積み上げで行われるのです。

このことを次に示す例で説明します。例えば、ソフトウェアにおける1つの画面を開発する場合を想定します。その1画面の中に、ボタンや文字入力欄などの項目が10個あるとします。

このとき、作業見積もりをボタンや文字入力欄ごとに分けて行うと、工数の最小単位が0.5人日ならば「0.5×10=5人日」という計算になります。しかし、同じ画面の開発に「まとめて1画面としての見積もり」を行うならばせいぜい「2人日」といった見積もりになるでしょう。このように、作業項目の分け方で同じものを開発するにも見積もりが異なるのです。

作業を細かい項目ごとに分けるよりもある程度の分量にまとめる方が有利なのは、金額面だけではありません。細かい項目ごとに作業を分けた場合、開発担当者が項目ごとに変わることもありえるということです。

項目ごとに開発担当者が変わると、アプリの使い勝手を左右する「属性」(文字のフォントやマウスを当てたときの動作などを決定する設定情報)が開発担当者ごとに変わってしまう可能性があります。

1画面の中で、項目ごとにフォントサイズがばらばらで統一されていないとしたらほとんどバグ(プログラムの誤り)として扱われるでしょう。それらの属性を1つに統一するには、属性の規約を設けたりコードレビューを行ったりといった追加の作業が必要になります。

このような観点においても、システム開発はある程度の規模でまとめて行った方が有利であると言えます。

これまで述べたように、システム開発においては案件を細々とした項目に分けるより、画面や機能などでまとめて見積もりを行う方が圧倒的に有利です。システム開発にかかる金額を安く抑えることができて、かつバグが少なく使い勝手も良くなるのです。

この考え方は、早く効率的なシステム開発を行う上で役立ちますので覚えておいてください。