技術的負債を解消するための ROI はどのように見積もるのでしょうか?

StackOverflow https://stackoverflow.com/questions/1790431

  •  22-09-2019
  •  | 
  •  

質問

私は現在、かなり古い製品に取り組んでいますが、これは過去の貧弱なプログラマーや不適切な開発手法による多大な技術的負債を抱えています。私たちは改善し始めており、技術的負債の発生は大幅に減速しています。

アプリケーションの状態が悪い領域を特定し、それらの領域を修正するためのコストを見積もることはできますが、投資収益率 (ROI) を見積もるのは困難です。

コードの保守が容易になり、将来の拡張も容易になるでしょう。しかし、これらにドルの数字を付けるにはどうすればよいでしょうか?

まずはバグ追跡システムに戻り、これらの「悪い」領域に関連するバグと機能に基づいてコストを見積もることから始めるとよいでしょう。しかし、これには時間がかかり、価値を予測する最良の方法ではない可能性があります。

過去にそのような分析を行った人がいて、私に何かアドバイスをくれた人はいますか?

役に立ちましたか?

解決

経営者かつ$成長を通じて(第一例新機能や新規のお客様)および(秒)を通じてプロセスの最適化ライフサイクルになっています。

みの問題を、ご提案の目カテゴリ:このことにも繋が遅目標#1(こく優先下 このお金を節約することができるか...では、お金を節 意味 支出金(ほとんどの時間を少なくとも;-)).

現在, を$図"悪い技術的な債務"させることによる周辺への前向きスピンを以下に該当する場合):"その投資効成分のXいのう特徴Yより速く、このように取得したZより。

つまり、 のコストを評価技術的債務の対価を失った事業機会.

他のヒント

ソナー 素晴らしいプラグインがあります (技術的負債プラグイン) ソースコードを分析して、まさにそのようなメトリクスを探します。これは Maven ツールであるため、ビルドに特に使用することはできないかもしれませんが、いくつかの優れたメトリクスを提供するはずです。

以下はアルゴリズムの一部です。

Debt(in man days) =
    cost_to_fix_duplications +
    cost_to_fix_violations + 
    cost_to_comment_public_API +
    cost_to_fix_uncovered_complexity + 
    cost_to_bring_complexity_below_threshold


 Where :

 Duplications = cost_to_fix_one_block * duplicated_blocks

 Violations   = cost_to fix_one_violation * mandatory_violations

 Comments     = cost_to_comment_one_API * public_undocumented_api

 Coverage     = cost_to_cover_one_of_complexity * 
                         uncovered_complexity_by_tests (80% of
                         coverage is the objective)

 Complexity   = cost_to_split_a_method *
                         (function_complexity_distribution >=
                          8) + cost_to_split_a_class *
                         (class_complexity_distribution >= 60)

私はあなたが正しい軌道に乗っていると考えています。

私はこれを計算しなければならなかったいませんでしたが、私はレガシーコードの多くの大規模なソフトウェア開発組織を管理して友人といくつかの議論がありました。

私たちが議論してきたことの一つは、VCSのコミットを分析し、プログラマの時間の概算を分割するためにそれらを使用してからいくつかの大まかな努力メトリックを生成しています。これは、ジョエル・スポルスキのエビデンスベースのスケジューリングに触発された。

(すでに2と正確な記録との緊密な統合に恵まれていない限り)あなたは、コードが維持されているときのクラスターを識別し、追跡システムのバグの完了にそれを比較することができるようになるようなデータマイニングを行います。

考慮すべきいくつかのものがあるので、

は適切なROIは、完全なリターンを計算する必要があります。 - (明らかに)維持管理のコストを減少させました - リリースの時点で追加することができませんでしたダウンタイムや逃した新機能のビジネスに機会費用 - リファクタリング

による新しい製品ラインを生成する機能

あなたがデータを導出するためのルールを持っていたら、あなたはの方法のものを計算するが、少なくとも、あなたはシード議論にのいくつかのの数字を持っているために、正確についての引数を持つことができ、覚えておいてください!

失われたビジネスチャンスにjldupontのフォーカスのための

+1ます。

私は経営者によって知覚されるそれらの機会を考える示唆しています。新機能、市場までの時間、製品の品質 - 収益成長率に影響を与え、彼らは何を思いますか?これらのドライバに債務paydownの関連付けは、経営者が利益を理解するのに役立ちます。

管理の認識を中心にすることで、偽の命数を防ぐことができます。 ROIは推定値でありません、それは何より良いの推定に行われた仮定を超えています。彼らはいくつかの定性的がどこかにあります知っているので、経営者は、単に量的な議論を疑うだろう。私はあなたが雇うと、このためだけに新しいスタッフを訓練するつもり疑うのでたとえば、短期的にあなたの借金のpaydownの本当のコストは、プログラマではなく、これらのプログラマーの現金コストよりも、やっていない他の作品です。今後の開発時間や品質の改善は、機能よりも重要であるこれらのプログラマはそうでない場合は、

?追加されます また、あなたが製品を管理するための地平線を理解させます。経営陣は、今から2年後のことを考えていない場合、彼らは18ヶ月間は表示されませんメリットを気にしません。

最後に、管理の認識が、この製品は、最初の場所で、この状態に到達するために許可されているという事実に反映されています。技術的負債の会社はより多くの気配りになるだろうという何が変わりましたか?違いは、のある場合は、の - あなたの経営陣は、このようなものを考えるために使用されていないことに注意してください - あなたはあなたの前任者よりも良いマネージャーです。あなたはそれのために彼らの食欲を見つけなければならない、と彼らは気に結果をお届けしますこれらの項目に焦点を当てています。あなたがそれを行う場合は、あなたがさらに変更について彼らの思考を取得するために使用できる信頼性を、得るでしょう。しかし、利益の理解が成長中しばらくかかるだろう。

私は、反復と増分過程で経験的にこれを行う方法に話すことができます。

あなたが実証され最高のコスト/ストーリーポイントを推定するためのメトリクスを収集する必要があります。おそらく、これは設計上の試行錯誤のほとんどが行われているが、エントロピーが原因減衰に最も時間があったとき、ちょうど初期の建築解約後にシステムを表しています。速度/チーム・サイズが最高であるときに、プロジェクトの歴史の中でポイントを探します。あなたの費用/ポイントベースライン(ゼロ・負債)としてこれを使用します。

は、時間が経つにつれて、技術的負債を蓄積すると、速度/チーム・サイズが減少し始めます。あなたのベースラインに関しては、この数の減少割合は、それぞれの新しいストーリーポイントで支払われる「関心」に変換することができます。 (これは本当に技術的なの知識債務に対して支払われる利子である)

ディシプリンrefactoingとアニーリングは、より高いベースラインよりも、いくつかの値で安定化するために技術的負債の利息が発生します。製品の所有者がシステムに技術的負債に支払う定常状態の関心と考えます。 (同じ概念は、知識の債務に適用されます)。

いくつかのシステムでは、各新しいストーリーポイントのコスト+利息が開発されている特徴点の値を超えた点に到達します。システムが破綻しているとき、これは、ゼロからシステムを書き換えるための時間です。

私はそれが離れて技術的負債及び知識の債務をいじめるために回帰分析を使用することが可能だと思う(しかし、私はそれを試していません)。あなたがその技術的負債を想定した場合例えば、例えばいくつかのコードメトリクス、と密接に相関しコードの重複、あなたが支払われて関心があるため、知識の負債対技術的負債の増加している程度を決定することができます。

ほとんどが孤独な、または小規模チームの開発者であるため、これは私の専門外ですが、私にとって、時間がどこで無駄にされているかを見つけるための優れた解決策は、たとえば、次のような便利なタスクバーツールを使用して、非常に詳細に時間を管理することです。 これです トイレに行くときもフィルタリングでき、すべてを XML にエクスポートできます。

最初は面倒で、チームに導入するのは難しいかもしれませんが、ソフトウェアのバグ、間違い、誤解のためにチームが費やした 15 分ごとにログを記録できれば、印象的な実際のデータの基礎が蓄積されることになります。技術的負債が実際に毎月の賃金にどれだけの影響を及ぼしているかについて。

私がリンクしたツールは、非常にシンプルで (データベースすら必要としません)、タスク バー アイコンを通じてすべてのプロジェクト/項目にアクセスできるため、私のお気に入りです。また、実行された作業に関する追加情報を入力することもでき、文字通り数秒で計時が開始されます。(私は販売者とは関係ありません。)

過去にコストますを持っている量を推定する方が簡単かもしれません。あなたがいることを完了したら、あなたが理解できる範囲とロジックも、あなたの上司との将来のための見積もりを思い付くことができるはずです。

ということでは言っても、私はまだコードを固定して、この遠くに行くために喜んでマネージャーを見たことがないという理由だけで、この種のもので多くの経験を持っていません。リファクタリングはすべての修正やバグ修正の隠されたコストが効果的であるので、それは常にちょうど、私たちは悪いコードを変更する必要がある場合、フィックスアップに何かされています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top