プロジェクトを言語Aから言語Bに移植するコストを見積もることをクライアントに考えさせます。これを行うための提案の要求をまとめる最良の方法は何ですか?
目的が単に1つのアプリケーションを再現することである場合は、正確にを新しい言語に変換することをお勧めします。移植は、あなたができる最も危険なことの1つです。なぜなら、それらが実装されたために生じたすべての癖言語Aはエンドユーザーに依存している可能性があり、突然それらを-で再作成する必要があるためです- 言語B。嫌なもの。ポーティングは完全に埋没コストであり、回復を望めないことは言うまでもありません。
他のプロジェクトと同様に扱い、要件を収集し、オリジナルが存在しないかのように見積もることをお勧めします。エンドユーザーは、製品を使用して以来、製品に新しい視点を持っていることに気付くでしょう。あなたがそれを書き直すつもりなら、それもより良くするかもしれません。
すでにPerlコードベースがある場合は、コード行(LOC)の数がわかります。 Perlと言語Bの表現力の比較を見つけることができるかどうかを確認してください。 ここに例を示します。
言語BはJavaだとしましょう。その場合、ポートの推定LOCは元のLOCの約4倍になります(表現力6対1.5)。
次に、LOCモードで Construx Estimate ソフトウェアなどを使用して、所要時間(および所要人数)を推定します。
これにより、概算のコストと時間の見積もり、およびオーバーシュートする可能性がどの程度あるかがわかります。
言語Bにすでに精通していて、その中でいくつかの測定プロジェクトを実行したことがある場合は、Construx Estimateソフトウェアを使用して、チームの調整を行うことができます。
Joels most 人気記事 、「あなたが決してしてはいけないこと」はそれを最もよく言う:彼らはソフトウェア会社が犯すことができる単一の最悪の戦略的間違いを犯すことによってそれをした:
彼らはコードを一から書き直すことにしました。
書き直してしまった場合は、適切に書き直してください。移植するだけではありません。
かなりの時間がかかると思います。あなたはそれが価値があると確信している方がいいです。コードの一部を取り、移植してみてください。かかった時間に、移植したコードの行とコードの合計の行の比率を掛けます。それはあなたに大まかな数字を与えます、本当のそれはおそらくいくつかの複数の人によって高くなります。
事実上、最初からアプリを再度作成しているが、要件が別の言語で指定されている場合、それは簡単ではありません。
私は何よりもまず、これが良い選択であるかどうかを本当に考慮すべきです。言語Aの代わりに言語Bを使用する利点は何ですか?
IBMが調査したところ、プログラマーは平均で1時間に100LOCを書き込むとのことです。それよりもまだ開発が進んでいますが、古いアーキテクチャはまだ計画されています。 50%がコードを書くとしましょう。そうでなければ、プログラムはまだかなり計画されていますよね? (これは、構造化されたプログラムがあり、オブジェクト指向のプログラムが必要になるため、より大きなタスクになる可能性があります)。
しかし、100LOC /時間と書く場合は、システムの現在のLOCの量を割り、プログラマーの平均売り上げを掛けて、2を掛けます。これは、大まかな見積もりを与える可能性があります。 取得した数値を真剣に受け取らないでください。(さらに、真剣に受け取らないでください)。何をしたいかは、次のような単純に測定する多くの事柄への方法に依存します。
それはあなたが利用できる時間に依存します。いくつかのオプション:
理想的な世界では、クライアントに、1か月の作業をカバーするための調査タスクに費用をかけて、自分がしたいことだけをプロトタイプ化できるようにすることを提案します。これにより、コストが高すぎる場合に停止して先に進めないという選択肢が与えられます。そして、あなたはまだあなたがやった仕事の報酬を受け取ります。
ソフトウェアタスクの適切な見積もりを取得する方法は1つだけです。利用可能なスタッフを割り当てて、タスクの小さいがテスト可能な部分を完全に実行し、その所要時間を確認します。残りの作業をできるだけ多くのユースケースに分割し、同じスタッフが、すでに実行された作業と比較して各反復を推定します。時間を見積もるように依頼するのではなく、最初の反復との比較を説明するように依頼してください。これにより、プロジェクトの残りの部分について可能な限り最良の見積もりが得られます。