ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

1人月あたり、何ステップ?1画面あたり、何人日でできる?の考え方

2005-12-01 13:26:09 | 開発ネタ

 システムの開発規模を、プログラムステップ数で表すことがけっこうある。
 また、仕様書から、想像して開発規模を出す場合、画面数、せいぜいそれに加えてテーブル数から出すしかないようなときもある。

 そのため、見積もりや費用計算などから、1人月あたり、何ステップ作れるか?というのを知りたいときがないだろうか?

 もし、それが分かれば、システム全体のプログラムステップ数÷1人月あたりステップで、人月数が出て、それに1人月単価をかけると、おおよその費用が、想像つく。
 といっても、システム全体のプログラムステップ数は、出ないのが普通なので、総画面数÷1人月あたり、何画面つくれるかでも、人月数が出て(DBに関しては、入出力部分は、ツールを使う。編集部分は、画面工数に含まれる)、それに1人月単価をかけても、おおよその費用が、想像つく。




 じゃあ、1人月あたり、何ステップできるのか?というと、これがまた、まちまちな答えが返ってくる。逆の聞き方のほうが分かりやすい。

 1.5Kステップ(1500行)をつくるのに、どれくらいかかる?と聞くと
    1日
    2、3日
    1週間
    2週間
    1ヶ月
 などが、代表的な答えだと思う。
 で、「そんなこと、言語も聞かないで、分かるわけないじゃん!」って、プログラマの人は言うけど、今日は、その「分かるわけない」はずの仕組みについてのお話




 実は、こう考えると、不確定要素の部分が、どこだかはっきりする&どうして、上記の回答になるのかが分かる。

 この1.5Kをつくるのに、何日かかるか?というのは、どういう要因できまるかというと
(1)1時間あたりのステップ作成量
(2)はたらくじかん
(3)システム全体に対するコーディングの割合
(4)危険率

 で、(3)が不確定要因、(4)がまちまち、なので、大きな差が出る。
 以下説明します



■■ 1時間あたりのステップ作成量
 簡単にするために、こういう条件を付けます
・こぴペ、ツールなどを使わずに、純粋にキーボードから文字を打って作成するとする
・なにも、考え込むことなく、すらすらとキーボードにプログラムが打ち込める状態であるとする

 そうすると、たぶん、1時間に100ステップくらいじゃないかなーと思います。
 安定して、コーディングできる量って。。。
 まあ、{ 1文字しか打たない行がある一方、80文字くらい、打つ行もあったりするけど、平均すると、。。

■■ はたらくじかん
 この量、ふつうは8時間です。でも、コーディングに割ける時間は5時間くらいかもしれない
(他は管理時間、おやすみなど)

 8時間だと、1.5Kは、2日
 5時間だと、1.5Kは、3日
15時間だと、1.5Kは、1日
15時間ぐらいが、平均して残業して働かせられる限度で、それ以上働かせると(たとえ会社に寝泊りさせても)生産性が落ちてきます。つまり、1.5K、よくて2Kぐらいが限度かも??

■■ システム全体に対するコーディングの割合
 先ほどの聞いている割合が、コーディングだけの量を聞いているのなら、上記のとおりなのですが、そうでなく、システム全体の期間を聞いているとすると、システム全体に対する、コーディングの割合は、どれくらい?ということになります。
 で、この比率がまちまちです。そのために、おおきな見積もりの差が出ます。

 画面や、帳票編集、データコンバートのような、決まったものだと、この比率は、大きくなります。
(1にちかいものもある。もう、仕様をきけばすぐに、コーディングに入れて、流しのテスト1発でOKみたいなやつ。逆に、仕様がはっきりしてないのなんかになると、コーディングはほとんど関係ないケースもある)。
 25%ってとらえるのが、ふつうくらいかな?

 そうすると、
この比率が1に近いと
 8時間だと、1.5Kは、2日
 5時間だと、1.5Kは、3日
15時間だと、1.5Kは、1日

この比率が25%だと
 8時間だと、1.5Kは、8日=1、2週間程度

■■ 危険率
 この計算どおりにいくとはかぎらないので、危険率をかけます。
 1倍以上、2倍がおおいかなあ。。。

 そうすると、
危険率2倍で、全体割合25%のとき
 8時間だと、1.5Kは、2~4週間程度=1ヶ月




ということで、結果から言うと、
1.5Kは、1人日(15時間労働、コーディング割合1、危険率1)
   ~
1.5Kは、1人月(5~8時間労働、コーディング割合0.25、危険率2)

まで、さまざまな結果がでるということになります。

実際に、細かく分析する場合は、上記の危険率と、コーディング割合を適当に考えてきめます
(予定の段階では、原則8時間以下労働である。1週間は5日で、1月4週)

なお、人によって能力の差が、どーのこーのとかは、
はじめの、「1時間あたりの開発量」に影響します。

ただし、この場合、人月単価にも影響するため、
(1時間当たり開発量が少ない人は、単価も安いと考えるとということ)
いま、基準としている単価の人が、対象の言語で、どれくらい、1時間に組めるか
を決めてしまえば、まあ、この考えで、OKです。





 で、1画面あたりに直すと、
 1画面あたりのコーディング量と、コーディング割合が求まれば、1画面あたりのかかる期間が求まることになります。

 画面出力は、たいてい、フレームワークを利用します。そうすると、ハリウッドの法則により、部分的にのみ、コーディングするということになります。
 そのため、実際のコーディング部分は少ない。。。とはいえ、400~500ステップくらいは組むのがふつう。

 で、テストとか、画面をツールで作成する手間をかんがえると、

   1画面1人日

 っていうのが、限界じゃないでしょーかねー。どんな言語でも
 (もっとかかることも、もちろんある。
  つーか、ふつうは、もっとかかる。あくまでも、限界値。
  まっさらから作っている状態で、1日で2画面も、3画面も。。。っていうのは、よっぽど、なんか理由がないとき以外は、危険かも。。)




 では、1機能において、画面は、どのくらいになるの?っていうと、
 1つの機能で、たいてい、一覧と詳細の2画面あるのが多い。
 で、一覧画面では、削除ができ、編集や新規入力のとき、詳細画面。
 詳細画面では、エラー表示、確認(更新していいYES/NO)、正常更新メッセージの
 3メッセージ出すタイミングがあるのが多い。

 つまり、だいたい2画面以上。
 ということは、10機能(仕様書の業務フローの項目見出しが10個くらい)あった場合、1ヶ月だと、手作業で書くと間に合わないということになる。

 なぜか?
 10機能*(1機能)2画面*(1画面)1人日=20人日=1人月

 なので、仕様書をぺらぺらとめくり、機能が10個以上あって、
 どのくらいでやってほしいんですか?
 と聞いたら、(仕様が決まった後の)実質画面作成に1ヶ月以内の日にちを指定された場合、手作業でなく、なんらかの工夫が必要になるという意味になる
(ツールをつくるなど、プログラムを手で組む以上の工夫が必要になる)。

 で、その工夫とは。。。

 時間がないので、この続きは、気が向いたときに。。。
 (じつは、今日のは、本当に書きたいことの、前フリなのだ。。。)



この件について、2015年版UPDATEがあります。

1人月あたり、何ステップ?1画面あたり、何人日でできる?の考え方(2015 Update)
http://blog.goo.ne.jp/xmldtp/e/185f154ad62451fd442098da468a360f


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« PHPで、SOAっぽい?ことを... | トップ | 手作業で、全部ソースを打っ... »
最新の画像もっと見る

開発ネタ」カテゴリの最新記事