世界はらせん的に進化する:オブジェクト指向の世界(26)(2/2 ページ)
開発プロセスは時代と共に“進化”している。しかし、それは直線的にではなく、らせん形に揺れながら変わっているのだ。
振り子の揺れ・その1 《ウォーターフォール型⇒反復型》
メインフレーム全盛時代には、開発プロセスはベンダごとに試行錯誤を繰り返しながらそれぞれ独自スタイルの社内標準開発プロセスとして整備され、やがてそれら従来型がウォーターフォールと総称されるプロセスにほぼ収束してきました。
ウォーターフォール型プロセスの問題は変更・拡張に弱いことです。しかし変更・拡張は時代の要請で、変化するユーザーの要求に耐えられる開発プロセスとして反復型開発が提唱されました。その集大成の1つがRUPです。つまり、ウォーターフォール型というテーゼに対する、アンチテーゼとして反復型が登場したのです。
この流れは当初、プロトタイピングやスパイラル開発が試行されましたが、変更・拡張性に優れたオブジェクト指向技術の導入により、RUPやUPとして反復型開発プロセスが確立されました。
振り子の揺れ・その2 《RUP⇒アジャイル》
反復型開発の1つとして集大成されたRUPは大掛かりであり、短期・小規模開発には重過ぎると考える人たちがXPをはじめとするアジャイル開発を提唱しました。アジャイル派の価値観は、次のマニフェスト(Manifesto for Agile Software Development)にまとめられています。
- プロセスやツールより個人とその相互作用を重視
- 包括的なドキュメントより動作するソフトウェアを重視
- 契約上の交渉よりも顧客との協調を重視
- 計画に従うことよりも変化に対応することを重視
RUPもアジャイル開発も反復型に分類されますが、その内側ではRUPというテーゼに対して、アジャイル開発がアンチテーゼという位置付けです。RUPもアジャイル開発も、オブジェクト指向技術に支えられた反復型開発という技術的な立脚点は同じですが、価値観は異なります。
RUPに刺激を受けてアジャイル開発が出てきたといえますが、逆にアジャイル開発からの影響がRUP(改訂されたRUP7)にうかがえます。
従来のRUPは「6つのベストプラクティス」がベースになっていました。RUP7では、それらは6つの基本原則として再構築され、プラクティスはパターンとしてその下に位置付けられました。XPはもともと[価値]−[基本原則]−[プラクティス]−[プロセス]の4階建てですが、RUPは[ベストプラクティス]−[プロセス]の2階建てから[基本原則]−[パターン]−[プロセス]の3階建てに再構築されました。従来のRUPの6つのベストプラクティスはすべて新しい「基本原則」と「パターン」に吸収されています。
【関連記事】
連載:オブジェクト指向の世界(20) − RUP7で開発の「苦」から解放される − ソフトウェア開発の四諦・苦集滅道
(@IT情報マネジメント)
プラクティスとパターン
パターンとは繰り返し起きる問題に対する解決策です。特定の問題領域のパターンを集めたものがパターン言語です。
開発方法論におけるベストプラクティスとは、過去からのさまざまな人たちによる経験や試行錯誤から得られた知見を集大成したものです。つまり1つ1つのベストプラクティスはいわばパターンであり、特定の問題領域のベストプラクティス集はパターン言語としてとらえることができます。
RUPは大規模開発で繰り返し起きるいつもの問題を解決する6つのベストプラクティスを抽出し、それをベースにして開発プロセス、つまり誰が、何を、いつ、どのようにという手順として具体的に決めたものです。
XPやアジャイル開発は短期小規模開発を対象にしたもので、それぞれの個人や組織の経験に基づくプラクティスがベースとなっています。XPのプラクティスは提唱者であるケント・ベックの経験がベースでRUPに比べてかなり個性的です。XPはペア・プログラミングで有名になりましたが、プラクティスはさまざまです。それらのプラクティスはパターン言語化できます。
【関連記事】
連載:オブジェクト指向の世界(19) − RUPをパターン言語として考える
(@IT情報マネジメント)
振り子の揺れ・その3 《プロセス指向⇒パターン指向》
開発プロセスは1つには決められません。利害関係者や構築するシステムの規模や特性によって、プロジェクトごとに最適なものが必要です。RUPもそれぞれのプロジェクトごとにカスタマイズして利用するものです。
プロセスがどのようにしてできたのかその原点に立ち返れば、過去の経験から得られた知見がベースになっています。その知見であるプラクティスはパターンとしてとらえることができ、それらパターンの知識ベース作成のための1つの技法がパターン言語です。プラクティスをパターンとして知識ベースに蓄積・共有し、そこからプロジェクトに使えるパターンを検索して引き出し、そこから最適なプロセスを再構築できないでしょうか。つまり既存のプロセスをカスタマイズするのではなく、パターンからプロセスを再構築するということです。たとえていえば、ソフトウェア・パッケージをカスタマイズして使用するのではなく、既存の実績のある部品を組み合わせてアプリケーションを構築するスタイルです。
では何を根拠にしてパターンを抽出し、プロセスを再構築すればよいのでしょう。実績のあるパターンといってもプロジェクトの目的にそぐわないものもあるかもしれません。プロジェクトはまず第1に価値を明確にして利害関係者の間で共有しなければなりません。次に基本戦略となる基本原則を決める必要があります。その次の具体的な戦術として共有知である知識ベースから適当なものを検索して再利用し、そこからプロジェクトに最適なプロセスをデザインし再構築するわけです。
プロセス指向からパターン指向へ
今回は開発プロセスの進化について、現在主流となっているRUPとアジャイルを中心に、互いに影響し合ってどのように進んできたのかという観点で考えてみました。アレグザンダーの3部作を軸足にし、ヘーゲルの世界観である弁証法を端的に表現した「世界はらせん的に進化する」をヒントにしました。世界は一方向に行き過ぎたら必ず反動があり、元に戻るようでも一歩進歩しています。振り子は左右に振れながら上昇するのです。
開発プロセスは、メインフレームの世界で実績を積んできた従来型がウォーターフォール・プロセスとして形成されました。しかし、変更・拡張性の問題からそのアンチテーゼとして反復型プロセスが提唱され、やがて反復型は変更・拡張性に優れたオブジェクト指向技術を導入してRUPに集大成されました。インターネット時代になり、短期・小規模開発には軽量なプロセスが必要になると、RUPのアンチテーゼとしてアジャイル開発が提唱されます。RUPもアジャイル開発も経験に基づくプラクティスから構築されたプロセスですが、異なる価値観に基づいています。
プロセスはプロジェクトごとに最適化する必要があります。制約なしにアプリケーション・ソフトウェアを作りたいとき、パッケージのカスタマイズではなく、実績のある部品の組み合わせで構築を行うように、プロセスもカスタマイズではなくもっと自由にしたい――。そこで原点に戻って、プラクティスから最適なプロセスをデザインし再構築するのがプラクティス指向です。これはプロセス指向のアンチテーゼです。
プラクティスは問題の解決策という意味ではパターンだといえ、ここでアレグザンダーのパターン言語の技法が使えそうです。パターンの知識ベースを共有知とし、パターン言語として登録・追加し、検索・参照してプロジェクトに必要なプロセスを再構築できる仕掛けが今後の課題でしょう。つまり、「プロセス指向からパターン指向へ」が本稿の趣旨です。
筆者プロフィール
河合 昭男(かわい あきお)
大阪大学理学部数学科卒業、日本ユニシス株式会社にてメインフレームのOS保守、性能評価の後、PCのGUI系基本ソフト開発、クライアント/サーバシステム開発を通してオブジェクト指向分析・設計に携わる。
オブジェクト指向の本質を追究すべく1998年に独立後、有限会社オブジェクトデザイン研究所設立。OO/UML関連の教育コース講師・教材開発、Rational University認定講師、東京国際大学非常勤講師。
著書に『まるごと図解 最新オブジェクト指向が分かる』(技術評論社)、『まるごと図解 最新UMLが分かる』(技術評論社)、監修『JavaデベロッパーのためのUML入門』(ソフトバンククリエイティブ)、共著『明解UML――オブジェクト指向&モデリング入門』(秀和システム)など。『ITアーキテクト』(IDG)、『UML Press』(技術評論社)、『ソリューションIT』(リックテレコム)などの専門誌に執筆多数。
Webサイト:
- 情報を媒体に転写する? 形相と質料
- SFC学習パターンを新人研修に適用する- 暗黙知と形式知
- フラクタル - 自己相似形とべき乗則
- パターン言語事例 − 慶應SFCの『学習パターン』
- クラウドの潮流を考える――らせん的進化・その2
- 世界はらせん的に進化する
- オブジェクト指向を考える──普遍の知識
- UML2メタモデルを読む − 知識とは何か?(2)
- UML2メタモデルを読む− 知識とは何か?
- ソフトウェアは知識の結晶
- オブジェクト指向のソクラテス式対話編
- RUP7で開発の「苦」から解放される
- RUPをパターン言語として考える
- ネットコミュニティのQWAN(無名の質)
- パレートの法則 vs. ロングテール現象
- モノ・コト分析をパターン言語で表現
- モノ・コト分析の段階的モデリング
- モノとコトによるモデリング
- 分かりやすいモノ・コト方式のモデリング
- アリストテレス編(その2)“what & why”4原因説をビジネスモデルに応用
- アリストテレス編−“what & why”4つの原因説
- プラトン編−イデア論とクラス/インスタンス
- 分析手法のキホン:「分解と分類」
- 分析から設計へのモデル変換などについて
- パターンとパターン言語入門
- 名前のない品質とパターン言語
- 全体最適とアーキテクチャ
- 「ピカソ、113億円で落札」をUMLで表現する
- UMLで新聞記事を読む
- 第2回 自然言語をUMLで表現してみる
- 流れ去るものと不変なもの
Copyright © ITmedia, Inc. All Rights Reserved.