技術的負債
技術的負債とは、金融負債が利子を伴うのと同様に、より堅実ではあるが時間のかかる選択肢よりも、都合の良い短期的な設計または実装の選択肢が優先された場合に発生する将来のコストに対する比喩です。
PaperMindでテーマを探す近日公開Find papers & topics
Tools & resources
Learn & explore
動画近日公開
Definition
技術的負債とは、より時間がかかるであろうより良いアプローチの代わりに、現時点で容易または限定的な解決策を選択することによって引き起こされる、追加の再作業の将来的な暗黙のコストであり、その近道に対処するための継続的な追加の労力がその負債の利子となります。
Scope
このトピックでは、技術的負債の比喩の起源と定義、意図的な負債と不注意な負債、慎重な負債と無謀な負債の区別、ソフトウェアに適用される元金と利子の概念、負債の特定、測定、優先順位付けの方法、および開発プロセス内での負債の管理と返済戦略について説明します。
Core questions
- 技術的負債とは何であり、通常の欠陥とどのように異なりますか?
- 負債を抱えることが、不注意ではなく慎重なトレードオフとなるのはどのような場合ですか?
- 技術的負債はどのように特定、測定、優先順位付けできますか?
- 機能提供を停止することなく負債を返済する戦略は何ですか?
Key theories
- 負債の比喩
- カニンガムは、都合の良い設計選択を将来に対する借金として捉えました。これらは現在の提供を加速しますが、リファクタリングによって負債が返済されるまで、その後のすべての変更において追加の労力として利子が発生します。
- 意図的な負債と不注意な負債
- 技術的負債は、意図と慎重さの軸に沿って分類されます。意図的で慎重な負債は意識的な戦略的トレードオフであるのに対し、不注意または無謀な負債はスキルや規律の欠如から生じ、より危険です。
Clinical relevance
管理されていない技術的負債は、開発を遅らせ、欠陥率を上昇させ、最終的にはコードベースを麻痺させる可能性があります。負債を可視化し、意図的に管理することで、チームは短期的な速度と長期的な保守性のトレードオフを認識した上で行うことができます。
Evidence & guidelines
SQALEベースの負債測定や静的解析プラットフォームを含む研究イニシアチブやツールは、技術的負債を定量化し追跡するための方法を提供しますが、単一の標準は確立されていません。
History
カニンガムは1992年に、段階的な設計のトレードオフをステークホルダーに説明するために負債の比喩を考案しました。この概念は、アジャイル開発、専門の研究セミナー、および負債を定量化し管理することを目的としたツールとともに、2000年代から2010年代にかけて注目を集めました。
Debates
- 技術的負債は有用な比喩か、それとも過度に拡張された比喩か
- 一部の論者は、負債の比喩があらゆるコードの欠点に緩く適用されすぎ、その意味を希薄化していると主張する一方で、他の論者はトレードオフのための貴重なコミュニケーションツールであると考えています。正確な定義は、それを実用的なものに保つことを目指しています。
Key figures
- Ward Cunningham
- Philippe Kruchten
- Ipek Ozkaya
- Robert Nord
Related topics
Seminal works
- cunningham1992
- kruchten2019
- avgeriou2016
Frequently asked questions
- すべての技術的負債は悪いものですか?
- いいえ。金融負債と同様に、技術的負債を抱えることは、例えば重要な締め切りに間に合わせるために、健全な戦略的選択となり得ます。ただし、それが意図的で可視化され、返済される場合に限ります。危険なのは、静かに利子を蓄積する不注意または管理されていない負債です。
- 技術的負債はバグとどう違うのですか?
- バグはユーザーに可視な誤った動作であるのに対し、技術的負債は必ずしも誤った出力を生み出すわけではないが、将来の変更のコストとリスクを高める内部構造の弱点です。両者は関連し得るものの、異なる懸念事項です。