web-dev-qa-db-ja.com

言語Aから言語Bへのコードの移植に関連するコストを見積もる最良の方法は?

プロジェクトを言語Aから言語Bに移植するコストを見積もることをクライアントに考えさせます。これを行うための提案の要求をまとめる最良の方法は何ですか?

8
blunders

目的が単に1つのアプリケーションを再現することである場合は、正確にを新しい言語に変換することをお勧めします。移植は、あなたができる最も危険なことの1つです。なぜなら、それらが実装されたために生じたすべての癖言語Aはエンドユーザーに依存している可能性があり、突然それらを-で再作成する必要があるためです- 言語B。嫌なもの。ポーティングは完全に埋没コストであり、回復を望めないことは言うまでもありません。

他のプロジェクトと同様に扱い、要件を収集し、オリジナルが存在しないかのように見積もることをお勧めします。エンドユーザーは、製品を使用して以来、製品に新しい視点を持っていることに気付くでしょう。あなたがそれを書き直すつもりなら、それもより良くするかもしれません。

10
jbondeson

すでにPerlコードベースがある場合は、コード行(LOC)の数がわかります。 Perlと言語Bの表現力の比較を見つけることができるかどうかを確認してください。 ここに例を示します。

言語BはJavaだとしましょう。その場合、ポートの推定LOCは元のLOCの約4倍になります(表現力6対1.5)。

次に、LOCモードで Construx Estimate ソフトウェアなどを使用して、所要時間(および所要人数)を推定します。

これにより、概算のコストと時間の見積もり、およびオーバーシュートする可能性がどの程度あるかがわかります。

言語Bにすでに精通していて、その中でいくつかの測定プロジェクトを実行したことがある場合は、Construx Estimateソフトウェアを使用して、チームの調整を行うことができます。

4
Peter K.

Joels most 人気記事 、「あなたが決してしてはいけないこと」はそれを最もよく言う:彼らはソフトウェア会社が犯すことができる単一の最悪の戦略的間違いを犯すことによってそれをした:

彼らはコードを一から書き直すことにしました。

書き直してしまった場合は、適切に書き直してください。移植するだけではありません。

  • プログラムのどの部分が使用されなくなったか?これらの部分はスキップしてください。
  • プログラムのどの部分が最も重要ですか?これらを最初に移植します。
  • 新しいプログラム、GUIを更新し、使いやすく、より「セクシー」にする時間。
  • 古いコードに機能を追加するだけでは、莫大な時間を費やした方がいいのではないでしょうか。
2
Carra

かなりの時間がかかると思います。あなたはそれが価値があると確信している方がいいです。コードの一部を取り、移植してみてください。かかった時間に、移植したコードの行とコードの合計の行の比率を掛けます。それはあなたに大まかな数字を与えます、本当のそれはおそらくいくつかの複数の人によって高くなります。

事実上、最初からアプリを再度作成しているが、要件が別の言語で指定されている場合、それは簡単ではありません。

2
Alb

私は何よりもまず、これが良い選択であるかどうかを本当に考慮すべきです。言語Aの代わりに言語Bを使用する利点は何ですか?

IBMが調査したところ、プログラマーは平均で1時間に100LOCを書き込むとのことです。それよりもまだ開発が進んでいますが、古いアーキテクチャはまだ計画されています。 50%がコードを書くとしましょう。そうでなければ、プログラムはまだかなり計画されていますよね? (これは、構造化されたプログラムがあり、オブジェクト指向のプログラムが必要になるため、より大きなタスクになる可能性があります)。

しかし、100LOC /時間と書く場合は、システムの現在のLOCの量を割り、プログラマーの平均売り上げを掛けて、2を掛けます。これは、大まかな見積もりを与える可能性があります。 取得した数値を真剣に受け取らないでください。(さらに、真剣に受け取らないでください)。何をしたいかは、次のような単純に測定する多くの事柄への方法に依存します。

  • 新しい言語でのプログラマーの能力
  • 古いプロジェクトはどれほど文書化されているか
  • どの言語から変換され、どの言語に変換されますか?
1
Anto

それはあなたが利用できる時間に依存します。いくつかのオプション:

  • まったく時間はありません、それを完了させてください-ナプキンの背中を取り、それに行きます。それは、そもそもそれを作るのに要した時間よりも少なく、単に別の構文でそれを再入力するだけではないようです。
  • 1〜3日-必要なアーキテクチャの修正が必要かどうかを判断し、見積もりを試みます。どれだけのロジックを移植する必要があるかを考え、何らかの比率を考えます。プロセスのセキュリティを強化したことを期待できるセキュリティ関連のタスクのための時間を追加します。作業の複雑さとアーキテクチャの単純さに基づいて、統合テストの時間を追加します。
  • 1か月-いくつか試してください-テストアーキテクチャをステージングし、何かを移植してみてください。移植したコードの割合を把握し、さらに見積もります。新しい言語ではまったく不可能だったいくつかのことも理解できる可能性が高く、移行を行うために必要な実際の作業のより良い基礎を提供します。

理想的な世界では、クライアントに、1か月の作業をカバーするための調査タスクに費用をかけて、自分がしたいことだけをプロトタイプ化できるようにすることを提案します。これにより、コストが高すぎる場合に停止して先に進めないという選択肢が与えられます。そして、あなたはまだあなたがやった仕事の報酬を受け取ります。

1
bethlakshmi

ソフトウェアタスクの適切な見積もりを取得する方法は1つだけです。利用可能なスタッフを割り当てて、タスクの小さいがテスト可能な部分を完全に実行し、その所要時間を確認します。残りの作業をできるだけ多くのユースケースに分割し、同じスタッフが、すでに実行された作業と比較して各反復を推定します。時間を見積もるように依頼するのではなく、最初の反復との比較を説明するように依頼してください。これにより、プロジェクトの残りの部分について可能な限り最良の見積もりが得られます。

1
kevin cline