.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

期限

  • 1992年ウォード・カニンガムの経験報告による。
  • 「設計上の負債(design debt)」とも言う。

内容

  • 技術的な「複雑さ」と「債務」を比較したもの。
  • 下記が引き起こす新しい比喩。
    • 行き当たりばったりなアーキテクチャ
    • 余裕のないソフトウェア開発
  • 「技術的」の意味は、
    • 「ドメイン理解と現時点のプログラムの(設計と実装の)乖離」であり、
    • ≒ エンジニアリングであり、テクノロジ的なと言う意味では無さそう。

詳細

現在の進捗のために、将来のキャパシティ(ソフトウェアの開発能力)を犠牲にする。

経験報告

  • 最初のコードを出荷することは、借金をしに行くのと同じ。
  • 進行中のプロジェクトは、将来借金を返すコストを増大させている。

小さな負債

小さな負債は、代価を得て即座に書き直す機会を得るまでの開発を加速する。

大きな負債

危険なのは、設計上の借金が返済されなかった場合。

  • 借金には利息がかかる。
  • 品質の良くないコードを使い続ける=無駄な利息を払い続けることになる。
  • しまいには、借金の残高が減らなくなり、その利息も支払えなくなる。

設計上の借金

アーキテクチャの手抜きによるコスト

設計

  • 不完全なオブジェクト指向
  • 複雑すぎて変更が難しいコード

実装

  • 欠陥のある実装
  • コンパイラの警告
  • 静的コード解析ツールの解析結果への対応
  • ソースコード中の積み残し項目の解決

その他

  • 文書化
  • 組織で共有されない知識
  • テストコードの記述

借金の返済方法

リファクタリング

ドメイン理解と現時点のプログラムの乖離の解消

リアーキテクティング

ドメイン駆動設計(DDD)における
「より深い洞察へ向かうリファクタリング」は、
ファクタリングにとどまらず、リアーキテクティングも含まれる。

OSSでは

OSSでは、手元で変更したコードをプロジェクトに送らないことは技術的負債。

  • 手元で必要なメンテナンスをすることが「利息の支払い」にあたる。
  • プロジェクトに送れば、他のユーザがメンテナンスしなくて済む。

その他

エンジニアリング or テクノロジ

エンジニアリング

未熟なエンジニアリング

テクノロジ

  • 巨神兵的早すぎるテクノロジ
  • TPO / STP、的にハマってないテクノロジ

※ 合わないテクノロジを採用してしまう ≒ 未熟なエンジニアリングと言える。

QCD

高いQ(品質)のためには、

  • 一時的にCD(原価、納期)が犠牲になることがある。
  • しかし、長期的に見ると、キャパシティ ≒ CD(原価、納期)の向上に繋がる。

Q(品質)

低い品質は負債となり得る。

CD(原価、納期)

短期的な原価低減や短納期が負債の原因と成り得る。

マーケティング的観点

本質から離れてマーケティングにも使われていると思う。

アーキテクチャ宇宙飛行士との関連

この中で言われている、

「何故か人々は"非常に"感銘を受ける。」

が、プロモーションに利用されている。

開発ールの営業に使われる可能性がある。

技術的負債 高速開発」などのキーワードで検索してみよう。

参考

Qiita


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-06-24 (水) 09:47:14 (91d)