-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_TechnicalDebt
- 1992年ウォード・カニンガムの経験報告による。
- 「設計上の負債(design debt)」とも言う。
-
技術的な「複雑さ」と「債務」を比較したもの。
-
下記が引き起こす新しい比喩。
- 行き当たりばったりなアーキテクチャ
- 余裕のないソフトウェア開発
-
「技術的」の意味は、
- 「ドメイン理解と現時点のプログラムの(設計と実装の)乖離」であり、
- ≒ エンジニアリングであり、テクノロジ的なと言う意味では無さそう。
現在の進捗のために、将来のキャパシティ(ソフトウェアの開発能力)を犠牲にする。
- 最初のコードを出荷することは、借金をしに行くのと同じ。
- 進行中のプロジェクトは、将来借金を返すコストを増大させている。
小さな負債は、代価を得て即座に書き直す機会を得るまでの開発を加速する。
危険なのは、設計上の借金が返済されなかった場合。
- 借金には利息がかかる。
- 品質の良くないコードを使い続ける=無駄な利息を払い続けることになる。
- しまいには、借金の残高が減らなくなり、その利息も支払えなくなる。
アーキテクチャの手抜きによるコスト
- 不完全なオブジェクト指向
- 複雑すぎて変更が難しいコード
- 欠陥のある実装
- コンパイラの警告
- 静的コード解析ツールの解析結果への対応
- ソースコード中の積み残し項目の解決
- 文書化
- 組織で共有されない知識
- テストコードの記述
ドメイン理解と現時点のプログラムの乖離の解消
ドメイン駆動設計(DDD)(クリーン・アーキテクチャの該当節を参照)における
「より深い洞察へ向かうリファクタリング」は、
リファクタリングにとどまらず、リアーキテクティングも含まれる。
OSSでは、手元で変更したコードをプロジェクトに送らないことは技術的負債。
- 手元で必要なメンテナンスをすることが「利息の支払い」にあたる。
- プロジェクトに送れば、他のユーザがメンテナンスしなくて済む。
技術の該当節を参照。
未熟なエンジニアリング
技術の該当節を参照。
- 巨神兵的早すぎるテクノロジ
- TPO / STP、的にハマってないテクノロジ
※ 合わないテクノロジを採用してしまう ≒ 未熟なエンジニアリングと言える。
高いQ(品質)のためには、
- 一時的にCD(原価、納期)が犠牲になることがある。
- しかし、長期的に見ると、キャパシティ ≒ CD(原価、納期)の向上に繋がる。
低い品質は負債となり得る。
短期的な原価低減や短納期が負債の原因と成り得る。
本質から離れてマーケティングにも使われていると思う。
この中で言われている、
「何故か人々は"非常に"感銘を受ける。」
が、プロモーションに利用されている。
「技術的負債 高速開発」などのキーワードで検索してみよう。
-
技術的負債 - Wikipedia
https://ja.wikipedia.org/wiki/%E6%8A%80%E8%A1%93%E7%9A%84%E8%B2%A0%E5%82%B5 -
「技術的負債」とは何か。原典とその対応策を探る - Publickey
https://www.publickey1.jp/blog/13/post_232.html -
コードのクリーンアップ - 技術的負債の返済に役立つ 9 つの戦術
https://msdn.microsoft.com/ja-jp/magazine/ee335722.aspx -
「技術的負債」に対する新しい見方
https://www.infoq.com/jp/news/2008/09/tech-debt-wkshp -
【翻訳】技術的負債という概念の生みの親
Ward Cunningham 自身による説明 - t-wadaのブログ
https://t-wada.hatenablog.jp/entry/ward-explains-debt-metaphor
-
技術的負債とどうやって戦うか
https://qiita.com/kamykn/items/ad687e772da454e3f614
正誤
- 「概要」直下の見出し「期限」は、内容(1992年ウォード・カニンガムによる)から 「起源」の誤記と判断して修正した。
- 「ファクタリングにとどまらず、リアーキテクティングも含まれる。」→ 「リファクタリングにとどまらず、〜」(直前が「より深い洞察へ向かう リファクタリング」であるため)。
- 「開発ールの営業に使われる可能性がある。」→「開発ツールの営業〜」。
移行メモ
- 元 Wiki では見出しそのものが他ページ・同ページ内へのリンクになっていた箇所 (「エンジニアリング or テクノロジ」「エンジニアリング」「テクノロジ」 「アーキテクチャ宇宙飛行士との関連」)は、GitHub Wiki では見出しから アンカが生成されるため、見出しをプレーン・テキストとし、 リンクは直下の本文に置いた。
- PukiWiki のページ内アンカ(
#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替え、 他ページのアンカを指すリンクは「〜(ページ名の該当節を参照)」の形に置き換えた。- 同名の見出し(「その他」)が衝突するため、括弧で文脈を補って一意にした。
Tags: 移行, 技術的負債, technical debt, ウォード・カニンガム, リファクタリング, リアーキテクティング, DDD, QCD
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。