web-dev-qa-db-ja.com

Webアプリケーションの推定時間に関する統計

Webアプリケーションの開発にかかる時間を見積もるのを手伝ってくれるように頼まれました。私は実際のプログラミングには関与しませんが、「経験豊富な」プログラマーとして参加しています。実際の作業はおそらくコンサルティング会社に引き渡されるでしょうが、クライアント(大学の学部)は、どれだけの時間とお金が必要になるかを把握するための見積もりを求めています。

実装する機能を分解してから、ある種の総計の見積もりを作成しようとします(ただし、 Joel Spolskyはこれは機能しないと言っています )が、これらの種類のWebアプリケーションには何百回も行われており、スタック交換サイトのいずれかから引き出すには多くの経験が必要です。

この質問に答えることは可能ですか?

経験豊富なプログラマーが、選択した言語とフレームワーク(Java、Ruby on Rails、またはその他のかなり大きなテクノロジー)を使用して)を作成するのに、通常、何時間/週かかりますか。次の場合のWebアプリケーション:

  • これはかなり標準的です。つまり、データベース、管理インターフェイス、および一般向けのプレゼンテーション層があります。
  • それはゼロから書かれていますが、経験を引き出すための古いシステムがあります。
  • 管理者(彼らが思う)は彼らが何を望んでいるかをかなりよく知っています。

私はこれが非常に曖昧であることを知っていますが、私はあなたの経験を探しています:

(作成された例は次のとおりです)

この種のシステムは数回購入しており、通常、完了するまでに20人月かかります。

PythonとDjangoを使用すると、ほとんどのWebアプリは6スタッフ月で稼働していると思います。

編集:

いくつかの説明:

  • 私の質問ですが、このプロジェクトに関するほとんどの情報が欠落しています。クライアントはシステムに関する詳細な仕様ドラフトを作成し、古いシステムに関するユーザーのフィードバックに基づく要件分析もあります。
  • 繰り返しになりますが、このシステムの見積もりではなく、あなたの経験(私の回答例を参照)を探していることを述べたいと思います。

しかし、すべての洞察に満ちた答えをありがとう!

1
Peter Jaric

これは正確なコストを得るのはほとんど不可能です。アウトソーシングはこれをさらに困難にします。

それがかなり標準的であるという理由だけで、引用のタスクを簡単にすることはありません。例:管理インターフェースがあるとおっしゃいました。これは、各ユーザーのログインとパスワードのように単純な場合もあれば、複数の役割を持つユーザーとすべての管理タスクを監視できるスーパーユーザーが複雑な場合もあります。これがロールベースの管理者になると、コーディング時間は指数関数的に増加します。

外国にアウトソーシングする場合は、顧客とコーダーの間の質問と回答の解釈を考慮して、合計時間とコストを20%埋めます。

データベース主導の管理者のための球場として、各ベーステーブルの推定時間は4時間です。これにより、テーブルの作成、ルーチンの挿入、ルーチンの更新、ルーチンの削除、および関連する管理Webページが可能になりました。これには、単純なリスト表示ページと詳細表示ページも含まれていました。検索フィルタークエリが必要な場合は、そのテーブルにさらに2時間を追加します。

借りることができるコードはたくさんありました。また、ソースコードを吐き出すことでコーディングを高速化するのに役立つ、ユーティリティストアドプロシージャもいくつか作成しました。完璧なコードではありませんでしたが、生のコーディングにかかる​​時間を大幅に節約できました。また、これが方向転換して他のクライアントに再販できるウィジェットである場合は、価格を引き下げることになります。これを他の人に転売できるとは思えないので、彼らが支払う価格は割高になるはずです。

購入できる同様の商用オフザシェルフ(COTS)システムがすでに構築されていますか?ビルドまたは購入の質問を楽しませたことはありますか?

カスタムソフトウェアは高価です。この事実を事前に顧客に認識させ、カスタムソリューションが必要な場合は、プレミアム価格を支払うことになります。 「そうそう、それはできる」と言って、それ以上の費用がかかると言わないたびに、顧客はそれを無料で期待するでしょう。

本当に大きなオムレツを作るのに何個の卵が必要ですか?

えーと、オムレツの大きさにもよりますよね?そして、それがわからないので、必要な卵の数がわかりません。そして、同じことがあなたの質問にも当てはまります。

そして、このWebアプリケーションの詳細を知っていたとしても、私は非常に、非常に、非常に注意深くなります。スコープクリープは、隅々まで途方に暮れています。ユーザーは、自分が持っていることにさえ気づいていなかったニーズを発見します。そしてリストは続きます...

[〜#〜] edit [〜#〜]ジレンマには別の可能なアプローチがあり、実際には正しいアジャイルアプローチです。将来の所有者に、このアプリケーションが彼らにとって何の価値があるかを尋ねてください。それがあなたの最初の予算です。そして、その開始予算の1ドル/ポンド/ユーロごとに、可能な機能のリストで次に重要なものが提供されることを約束します。お金が使われるとき、彼らは彼らの投資を最大にし、そして彼らはそれから停止するか続けるかを決定することができます。

5
wolfgangsz

あなたは見積もりをする人ではなく、率直に言って、プロジェクトの範囲が何であるかを知っているようにも聞こえません。誰もが自分のケーキを食べて食べたいと思っています。プロジェクトで何が必要かを正確に特定したくはありませんが、同時に、このぼんやりとした未定義のアイデアを導き出すためのコストを抑えたいと思います。

コストが重要な場合に何が起こるべきかというと、彼らは異なる会社から少なくとも2つか3つの見積もりを取得し、プロジェクトの範囲を非常に明確にレイアウトする前に確認する必要があります。時々、コンサルティング会社がこれを手伝ってくれるでしょう。彼らはあなたのスコープを取り、彼らが必要なときに必要なすべてのリソースを持っていると仮定して大まかなタイムラインを与えるWBS(作業分解図)を導き出すためのPMスキルを持っている必要があります。見積もりと見積もりを確実に提供します。

取引する価値のあるコンサルティング会社は、あなたが価値のあるすべてのお金であなたを怒らせようとしない限り、あなたに「空中」の見積もりを与えることはありません。それは、決して完全に成し遂げられないことへの公然の招待の言い訳です。私を信じてください、これは私の友人に起こりました。

5
maple_shaft

私の友人-あなたはディルバートの漫画を作っています。あなた(ディルバート)は、定義された範囲がなく、それがどのように聞こえるかから、彼らが欲しいものを知っていると言う一部のIT担当者を除いて、実際にはビジネスオーナーはいないと見積もるように言われました。

あなたの先のとがった髪の上司はあなたに単に「行く」という指示を与えました、そしてあなたは本当にどこを向くべきかがありません。 Dogbertのコンサルティング会社よりも優れた人に電話する必要があります。座って要件を収集し、手渡されたこの大きなグーの塊の周りに何らかのフレームワークを配置するのを手伝ってくれる人です。

OK ...私は意図的にそれをばかげているように聞こえさせましたが、率直に言って、あなたは失敗するように設定されています-おそらく善意でさえ。上記には多くの良いアドバイスがあります-それに従ってください!評判の良いコンサルティング会社やプロジェクト管理会社からいくつかの良い見積もりを入手するか、少なくとも要件を収集してこのことについていくつかの定義を置くためにかなりの時間を主張してください。そうして初めて、球場のどこかに行くことができます。次に、適切な見積もり手法を使用し、不測の事態を確実に含めます。

幸運を!!

4
Catchops

このような状況であなたが何らかの見積もりをすることは非倫理的であると私は言うつもりです。

見積もりには、使用するプロセス、使用するツールとテクノロジー、開発チーム、プロジェクトの範囲と要件など、さまざまな要素が関係しています。リストは続きます。あなたはこのソフトウェアを開発しているチームを率いていない(またはその上にさえいない)ので、おそらく初期要件を除いて、これらの要因のいずれについても知識がありません。あなたがすべての事実を持っていない限り、あなたはただ薄い空気から数字を引き出しているでしょう。

もう1つ覚えておくべきことは、 Cone of Uncertainty です。すべての情報がないことは十分に悪いことですが、初期情報があっても、初期見積もりは実際のコストの25%から400%の間です。プロジェクトの非常に早い段階で見積もり担当者が言うことはすべて、プロジェクトが進行し、要件がより具体的になり、決定が下されるときにのみ改善できる大きな差異があります。

プロジェクトによっては、 プロジェクト管理の三角形 も役割を果たします。プロジェクトの3つの制約は、コスト、範囲、およびスケジュールです。クライアントは、最大で2つを制御できます。 3つすべてを設定することはできません。最も重要な2つを選択し、それらを制御してください。


この場合の正しい行動方針は、ソフトウェアを構築する組織に提示するために、ソフトウェアが要件に取り組み始めることを望んでいる組織のためのものです。組織は、これらの要件を評価し、質問をして詳細を取得し、内部のツール、手法、およびプロセスを使用して、このシステムを構築するためのコストとスケジュールの見積もりを作成できます。最適な時間枠内で適切なコストで必要なソフトウェアを入手することは、プロジェクト管理の三角形で行き来します。

1
Thomas Owens