今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

アジャイルソフトウェア開発の奥義

デザインパターンメーリングリストで LSP(The Liskov Substitution Principle) が話題に出たのでこちらでも補足。
LSP(The Liskov Substitution Principle)とは、リスコフの置換原則のことで、ソフトウェア原則のうちのひとつ。LSP を一言で要約したものを、「アジャイルソフトウェア開発の奥義」から引用。

派生型はその基本型と置換可能でなければならない。

本文では、Rectangle(長方形)を継承してSquare(正方形)を作るのはダメよ、と例を挙げている。Rectangle を使う人が Rectangle だと思って、底辺と高さに異なる値を設定しようとしたとき、Square はそれを受け付けないので。使う人には Rectangle ではなくなっている。つまり、置換可能ではなくなってしまっている。
LSP を説明したところの最後に「結論」が書かれている。とても興味深いので、ここも引用しておく。

「IS-A」という用語は、派生型の定義として用いるには意味が広すぎる。派生型の本当の定義は基本型と「置換できる」ということなのだ。「置換できる」の内容は、明示的な契約、または、非明示的な契約によって定義される。

ちなみに、ソフトウェア原則には以下のものがある。(自分のためのメモ)
これらについては、アジャイルソフトウェア開発の奥義の中で詳しく説明されている。

  • 単一責任の原則(SRP)
  • オープン・クローズドの原則(OCP)
  • リスコフの置換原則(LSP)
  • 依存関係逆転の原則(DIP)
  • インタフェース分離の原則(ISP)
  • 再利用・リリース等価の原則(REP)
  • 全再利用の原則(CRP)
  • 閉鎖性共通の原則(CCP)
  • 非循環依存関係の原則(ADP)
  • 安定依存の原則(SDP)
  • 安定度・抽象度等価の原則(SAP)