可能性のある複製:
プロジェクトに存在する技術的負債の量をどのように数量化できますか?
お客様がアプリケーションの技術的負債の程度を理解できるようにしたい場合、どのメトリックを使用するのが最適ですか?私はErik Doernenburgのコードの毒性と、Sonarの技術債務プラグインを偶然見つけましたが、他に何が存在するのか疑問に思っていました。
理想的には、「システムAのスコアは100であるのに対し、システムBのスコアは50であるため、システムAはシステムBよりも保守が難しい可能性が高い」と言いたいです。
明らかに、「技術的負債」や「保守性」などの複雑な概念を単一の数値に煮詰めると、誤解を招く、または不正確になる場合があることを理解しています(場合によっては)が、顧客に(コードの実践)リファクタリング/単体テストなどのケースを構築するために、システムに(他のシステムと比較して)おおよその技術的負債が組み込まれている。
ここでも、違反の包括的なリスト(CheckStyle、PMDなど)ではなく、単一の数値/グラフ/視覚化を探しています。
負債を解消するために必要な作業量で技術的負債を測定します。コードを希望どおりの形にするのに3か月かかる場合、チームは3つになります。数ヶ月の借金。ローンの利子と同様に、借金を運ぶ費用は、借金のためにあなたが負担する余分な作業の量です:コードが理想的な形であれば、チームが1か月に行う作業の50%が排除されます。その50%は、借金に対して支払う「利息」です。
もちろん、あなたがそれを行うまでにあなたの借金を修正するのにどれくらい時間がかかるかを正確に知ることは不可能ですので、これらの事柄を事実の後に正確に測定することのみが可能です。とにかく、技術的負債のアイデアの価値は、妥協や作業の遅延がプロジェクトにとって問題となっている、または問題になる程度を単に表すことです。借金を削減するために必要な作業を適切に説明することは、プロジェクトの計画に役立ちますが、それ以外に、借金をTシャツのサイズ(小、中、大、特大)で表現する方が便利な場合があります。
指標を提供する環境/言語については言及していません。 Visual Studio Ultimateを使用している場合、コード分析ツールは、保守性インデックスをソリューション、プロジェクト、クラス、さらにはメソッドレベルで0〜100のスコアとして提供します。
それとは別に、保守性の良い指標は循環的複雑度です。複数の言語と環境で自動的に計算されるツールがいくつかあります。 この質問 はそれらのリストを提供します。