私は現在、ウォーターフォールモデルが深く根付いている会社で働いています。私たちはアジャイルの原則を推進していますが、それは長いプロセスです。その間、私はウォーターフォールの世界で、連続したプロジェクトフェーズで作業する必要があります。
私の質問は分析フェーズについてです。タスクのリストとそれらにかかる時間を提供する必要があります。詳細な見積もりを前もって行うという要件を満たしながら、見積もりの精度/精度を向上させるためにどのようなテクニックを使用できますか?
私が知っている1つの例は、見積もりを行う前にプロトタイピングを使用してより多くの知識を得ることです。
より適切で具体的な顧客要件を収集します。
各要件を少数のクラスで満たすことができるように要件を調整し、それらのクラスがコードでどのように見えるかをかなりよく理解すると、物事がどのくらいの時間かかるかがより明確になります。各要件で成功を宣言する方がはるかに簡単です。
要件には、コンポーネント間のすべてのインターフェースの詳細な仕様を含める必要があります。これにより、各ソフトウェア開発者が何をする必要があるかが明確になり、作業を分割したり、開発者間で作業を移動したりしやすくなります。 。
プッシュしたいのは、小さな滝です。プロジェクトをフェーズに分割すると、進行状況を監視して関係者からフィードバックを受け取ることができるチェックポイントが提供されるため、(アジャイルの場合と同じように)すべての人に役立ちます。アジャイルは、滝が失敗するところで成功します。滝は、噛むよりも多くの場合噛み砕くからです。
タスクのリストとタスクにかかる時間をより適切に提供するには、結果を練習して記録する必要があります。したがって、最初にすべての見積もりをかなり詳細に行います(コミュニケーションと会議、要件の開発、設計、テスト、QA、展開、ドキュメント(ウォーターフォールで常に必要)、研究、およびその他の非コーディングタスクを含めることを忘れないでください。人々が最初に行うこと実際のコーディング時間のみを見積もるのは間違っています。「まあ、それは約2日かかるので、それが見積もりです」と考え、12時間後の会議では、開発を開始していません。
見積もりを出すときは、それと時間をどこかに保存し、プロジェクトを実行するときに、各タスクが実際にかかった時間を記録します。間もなくパターンが表示されます(ほとんどの人は一貫して低すぎると推定しています)。また、物事にかかる時間を示すデータも得られます。過去の同様のタスクにかかった正確な数に基づいていると、見積もりとの議論が難しくなります。
ウォーターフォールプロジェクトでは、土壇場での変更があると想定できるので、それに費やされた時間のパーセンテージも見積もります。タスクが新しい場合(履歴に同様のタスクがない場合)、何をすべきかを理解するのにおそらく最も時間がかかるため、調査と設計にさらに時間を加えることを忘れないでください。
ウォーターフォールプロジェクトでは、自分とチームのためにできる最善のことは、期限を延ばして見積もりを増やすことです毎回要件定義フェーズの後に要件を変更します。彼らがあなたから一貫してあなたから新しい出会いを取得し、そのわずかな変更にどれだけの費用がかかるかを彼らに伝える場合、あなたはあなたが劇的に得る「ああところで」変更の数を減らします。大規模なプロジェクトで顧客を管理する必要があります。
そして、要件の開発と設計に時間を費やします。その時点で物事を変更する方が、開発作業を行った後よりもはるかに安価であるため、これがウォーターフォールプロジェクトの目的です。アジャイルよりウォーターフォールに適したタイプのプロジェクトがあります。だから、それを使うのが悪いと自動的に考えないでください。代わりに、プロジェクトを管理するためにそれをうまく使用する方法を学びます。ウォーターフォールをうまく管理することを学ぶなら、ウォーターフォールまたはアジャイル環境のほとんどの開発者よりも先に進んでいます。なぜなら、ほとんどの開発者は、プロジェクトの管理に関わるあらゆることでお粗末であり、プロジェクトの扉を開くのがゲームの名前だからです。