技術的負債とは何ですか?
技術的負債は、最適なコード品質よりも迅速な納品を優先した結果です。技術的負債は、ソフトウェア開発チームが長期的な解決策よりも一時的な解決策を選択した場合に発生します。
借金の比喩は適切です。借金を負うのは、多くの場合、短期的に資金が必要になったときです。しかし、将来その借金を返済しなければならないときには、追加コストが発生します。
技術的負債も同様に機能し、便宜性と引き換えに将来の追加作業が発生します。
コードが最終的に再検討され修正されなければ、ローンの支払いが行われない場合に利息や罰金が発生するのと同じように、問題になる可能性があります。
技術的負債は必ずしも問題ではありません。ただし、製品が適切に最適化されていなかったり、コードが機能しなかったりする場合は、問題になる可能性があります。
技術的負債の例
技術的負債の典型的な例は、2000 年問題 (Y2K) です。
1960 年代と 1970 年代の多くのソフトウェア開発者は、貴重なメモリを節約するために日付を 73 桁で保存することを選択しました。つまり、「1973」ではなく「XNUMX」です。
この慣行は、メモリ価格が下落した後も何年も続きました。これらのプログラムの多くは業務に組み込まれ、予想よりもずっと長く使用され続けました。
2000年が近づくにつれ、何千もの企業や政府機関が、日付の計算が大規模に失敗することに気づきました。これにより、熱狂的なクリーンアップ作業が行われ、 コスト$ 100億.
しかし、技術的負債はソフトウェアに限定されません。たとえば、サイバーセキュリティのベストプラクティスは、個人ではなく組織内の役割にファイル権限を付与することです。
管理アシスタントが、通常は閲覧権限のない機密文書への一時的なアクセスを承認されたとします。IT 組織が例外を許可し、後で取り消さなかった場合、機密文書への永続的なアクセスを許可したことになります。アカウントは最終的に侵害され、脆弱性が生じる可能性があります。
技術的負債の欠点は何ですか?
短期的な修正が迅速にリファクタリングされ、開発者が技術的負債の処理方法を知っていれば、デメリットはほとんどありません。ビジネスが機会や問題に迅速に対応できるようになるため、メリットがある場合もあります。
借金が重なるとリスクは増大します。
クイック フィックスは、十分に文書化されていないか、まったく文書化されていない可能性があります。また、クイック フィックスを実行した人が退職すると、コードがどのように動作するのか、あるいはクイック フィックスが存在することさえ知っている人が会社に誰もいなくなる可能性があります。
機能強化や変更によって、予期しない競合が発生し、プログラムが失敗したり、実行速度が遅くなったりすることがあります。変更によってアプリケーションが壊れるのではないかと恐れて組織が改善を行わないため、イノベーションが遅れます。
技術的負債にはどのような種類がありますか?
技術的負債の2つの主なカテゴリーは 意図的 および 意図しない.
開発者トレーニング会社のCEO、スティーブ・マッコーネル氏 構築、定義する 意図的な技術的 意識的かつ戦略的に負う借金。
彼は定義する 意図しない技術的 借金は「仕事をうまくやれなかったことによる非戦略的な結果」である。
2014年に、ある学者グループが 分類 技術的負債には 13 種類あります。
- 建築負債
- 借金を増やす
- コード負債
- 欠陥債務
- 設計負債
- 文書負債
- インフラ負債
- 人々の負債
- 債務処理
- 要件債務
- サービス債務
- テスト自動化負債
- テスト債務
この分類は、短期的な思考が長期的な問題を引き起こす可能性があるすべての領域をカバーしているため便利です。
技術的負債はどのようにして発生するのでしょうか?
ある種の技術的負債が発生する可能性があるいくつかの方法を以下に示します。
意図的な技術的負債
意図的な技術的負債は意識的な決定です。これは文書化され、リファクタリングのためにスケジュールされる必要があります。
たとえば、地域の営業マネージャーは、期限内にプラットフォームで作成できないレポートを作成する必要があります。マネージャーは、期限に間に合わせるためにオープンソースのレポート作成ツールを使い始めます。これが技術的負債です。
しかし、開発チームがオープンソースのレポート作成ツールを削除し、マスター レポート システムを変更するためにリソースを費やした場合、それは意図的な技術的負債になります。
意図しない技術的負債
意図しない技術的負債とは、コードをリファクタリングする計画なしに、便宜上変更が行われた場合に発生します。
また、知識不足や開発標準に従わなかったことによる不適切な設計決定によっても発生する可能性があります。テストの領域で意図しない技術的負債が発生するのは、次のような場合です。
- テストスイートが不完全です
- テストが短縮される
- 便宜上、テストは省略されます
文書負債
ドキュメント負債はよくあることですが、開発者が急いでコードを徹底的にドキュメント化できない場合に発生します。
人が会社を辞めて、自分のコードを理解するための指示を残さない場合、これは長期的には問題になる可能性があります。ドキュメントの負債は Y2K 問題の主な原因でした。
インフラ負債
インフラストラクチャ負債は、アプリケーションがデータベースやファイル システムなどの特定のコンポーネントに依存するように構築されている場合に発生します。これらの依存関係が文書化されておらず、企業が新しいインフラストラクチャに移行すると、アプリケーションが機能しなくなる可能性があります。
技術的負債の警告サインは何ですか?
技術的負債の警告サインは次のとおりです。
- 開発者がコードベースを理解していないためにプロジェクトが行き詰まる
- 複雑さやドキュメント不足のために修正が難しいバグ
- バグ修正によって新たなバグが発生したり、パフォーマンスが継続的に低下したりする
技術的負債を管理し、予防する方法
技術的負債の処理方法を知ることは、健全な開発プラクティスから始まります。DevOps 環境では、シフトレフト テストとシフトライト テストの両方が含まれます。
- シフトレフトテスト テスト プロセスを開発サイクルの早い段階に移動します。これにより、問題が本番環境に組み込まれる前に予測して解決できるようになります。
- シフトライトテスト アプリケーションが本番環境に移行した後にフィードバックを求めます。こうすることで、ソフトウェアが広く使用される前にバグを早期に検出して修正することができます。
これらは、問題が過度に拡大するのを防ぐガードレールを作成します。
技術的負債を生み出す回避策は避けられず、多くの場合は必要です。ただし、開発者は、ハッキングを実施した理由や修正手順など、回避策を文書化することが重要です。
既存のコードを定期的に監査することで、チーム メンバーは互いの作業をレビューし、ドキュメントのギャップや不規則性を見つけることもできます。
ベストプラクティスは何ですか?
組織が DevOps 技術を採用する際には、技術的負債とは何かを明確にし、それを管理するためにアジャイル戦術を適用する必要があります。これには、次のような実装が含まれます。
- シフトライトとシフトレフトのテスト
- 問題が手に負えなくなる前に発見するための A/B テストとカナリア テストのテクニック
ピアコードレビューにより、開発者の作業を新鮮な目で検証できます。開発者は、一貫性のある限定されたツールと言語のセットを使用して作業し、各段階で完了する必要があるタスクのチェックリストを用意する必要があります。
効果的な DevOps組織 開発者に作品の構築方法を選択する自由を与えます。また、制御不能にならないようにするためのガードレールも提供します。
技術的負債を防ぐことができるツールは何ですか?
上で概説した方法は良いスタートです。さらに次のようなメリットも得られます。
- 使い方 自動テスト モジュールの変更があるたびに、コードの変更ごとに複数のデバッグサイクルを実行する
- 確立 サウンドコード構造 回避策から保護するための必須文書を含む手順
- 使い方 プロジェクト管理ツール チームが全員の作業状況を確認できるようにする
- 持って プログラマーはチームで働く お互いの決定を理解できるようにするために
現在、ほとんどのソフトウェアは、ローコードおよびノーコード ツールを使用して作成されています。これらは自己文書化されており、フローチャートとドラッグ アンド ドロップ技術を使用して、ロジックと望ましい結果を視覚的に表現できます。
これらのツールをプロフェッショナル ソフトウェア開発に適用することで、自己文書化機能のメリットを享受できます。開発マネージャーは、チームがローコード/ノーコードを、優れた創作物の代替としてではなく、生産性向上の手段として捉えるよう奨励する必要があります。
よくある質問
-
技術的負債は良いことでしょうか、それとも悪いことでしょうか?
技術的負債は諸刃の剣です。意図的であれば戦略的ですが、無視すれば有害です。
-
技術的負債の 80 20 ルールとは何ですか?
80/20 ルールでは、問題の 20% の原因となっている技術的負債の 80% に焦点を当てることを推奨しています。このアプローチは、当面の進捗と長期的な持続可能性のバランスを取り、完璧主義による麻痺を回避しながら重要な負債に確実に対処します。
-
技術的負債にどれくらいの時間を割り当てるべきですか?
開発時間の 20 ~ 30% を技術的負債の管理に割り当てます。この「負債返済計画」により、イノベーションを阻害することなくコードの健全性が維持されます。プロジェクトの成熟度に基づいて調整します。新しいプロジェクトでは負債が少なくて済むかもしれませんが、レガシー システムでは負債が多く必要になる場合があります。定期的な「負債スプリント」は、蓄積された問題に体系的に取り組むのに役立ちます。
-
技術的負債の別名は何ですか?
設計負債 or コード負債 技術的負債の別名。 技術的責任 バランスシートへの影響を強調するため。 ソフトウェアエントロピー 学術界では使用されているが、 コードの臭い 根本的な技術的負債の指標を指します。各用語は、ソフトウェア開発における累積的な妥協のさまざまな側面を強調します。