『パターン、Wiki、XP』読書メモ (その2)

さて、前回に引き続き、『パターン、Wiki、XP』の読書メモです。今回は第2部のソフトウェア開発編です。

前回: 『パターン、Wiki、XP』読書メモ (その1)

パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)

パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)

7章 オブジェクト指向

この章の内容はアレグザンダーとは直接関係しない。

8章 ソフトウェア開発へのパターンの適用

プログラムへのパターン適用に関するコミュニティ形成の過程。

9章 デザインパターン

GoFによる書籍『オブジェクト指向における再利用のためのデザインパターン』(1994) について。

  • この書籍に記述されるパターンは、アレグザンダーのパターン形式を発展させた、GoF形式と呼ばれるフォーマットで記述された。
  • GoF形式は、パターン名と分類、目的、別名、動機、適用可能性、構造、構成要素、協調関係、結果、実装、サンプルコード、使用例、関連するパターン、からなる。
  • デザインパターンとアレグザンダーのパターンランゲージに対する相違点として、背景とする歴史がずっと短いこと、パターン間に優先順位がないこと、扱う問題よりも解決方法に重点を置いていること、パターンの適用によって完全なプログラムを生成することは目的としていないこと、がある。

10章 プロセスへのパターンの適用

XPにつながる、ソフトウェア開発プロセスへのパターン適用の歴史。

  • GoFによるデザインパターンはプログラム設計に特化しており、『オレゴン大学の実験』で示された6つの原理のうち、「参加の原理」や「漸進的成長の原理」などを適用したものではなかった。
  • 1994年から1995年にかけて、コプリエンおよびカニンガムにより、ソフトウェア開発プロセスにおけるパターンの提案がなされた。
  • 1996年から、Chrysler社における事務処理ソフトウェア刷新プロジェクト (C3) にベックが参画し、その中で28個のプラクティス群が見いだされた。
  • C3プロジェクトは一定の成功を収めたものの、主流言語がSmalltalkからJavaに移行したのに伴い、中止になった。

11章 エクストリームプログラミング

ベックがC3プロジェクトなどでの経験を基に1999年に出版した書籍『XP エクストリーム・プログラミング入門』の紹介。XPは、ソフトウェア開発プロセスを対象としたパターンランゲージと言える。

  • プロジェクトメンバーが共通して目指すべき4つの価値: コミュニケーション、シンプル、フィードバック、勇気
  • 4つの価値から導かれる基本原則: 瞬時のフィードバック、シンプルの採用、インクリメンタルな変更、変化を取り入れる、質の高い作業
  • 価値と原則を達成するための12個のプラクティス: 短期リリース、シンプルな設計、テスティング、ペアプログラミング、共同所有、オンサイトのユーザ (ユーザを開発チームに加える)、etc.

(個々の項目は、2004年の第2版で大幅に変更・追加されたものの、基本的な考えは変わっていない)

ここまで

デザインパターンはソフトウェア設計においてアレグザンダーの6つの原則を部分的に取り入れ、XPはソフトウェア開発プロセスにおいて6つの原則をより包括的に取り入れた、というふうに理解しました。

11章末尾の "つまりXPの本当の目的は「新たな社会構造を作る」ことにあるのです。" という部分はなかなかアツいですね。

ただ、現実の受託開発では、特に参加の原理や漸進的成長の原理などを実現するのはかなりハードルが高いように思います。そういう意味では、XPを真に適用するための前提として、新たな社会構造を作ることが必要になる、ということかもしれません。