ソフトウェアパターン(そふとうぇあぱたーん)情報システム用語事典

software pattern

» 2008年03月31日 00時00分 公開
[@IT情報マネジメント編集部,@IT]

 ソフトウェア開発のさまざまな局面において繰り返し現れる出来事や問題から得られる知識を、再利用できるように抽象化・形式化してまとめたもの。ソフトウェア開発に関するコツや知恵、指針などである。

 パターンとは、特定の状況下で発生する一群の問題に適用できる解決策、あるいは解決の指針やルールをいう。文書として記述する場合は「名前」「コンテキスト」「フォース」「解決策」などのセットとして表現される。コンテキストとは解決すべき問題や問題が発生する状況である。フォースとは問題解決において考慮されるべき各種制約であり、解決策の選択における判断の根拠となるものである。

 ソフトウェアパターンは、こうしたパターンの概念をソフトウェア開発に適用したもので、ソフトウェア開発のあらゆる局面で数多くのパターンが提案がされている。最も有名なものに、ソフトウェア設計におけるパターンを示した「デザインパターン」がある。「アーキテクチャパターン」「アナリシスパターン」「イディオム(実装パターン)」「アンチパターン」もよく知られている。ほかにも開発プロセス、開発組織、セキュリティ、ビジネスモデル、データモデル、構成管理、リソース管理、ユーザーインターフェイス、ソフトウェアテスト、アプリケーション統合、データ移行に関するパターンなどがあり、一説には1000を超えるソフトウェアパターンがあるといわれる。

 ソフトウェアパターンは、ソフトウェア開発に関する問題解決における思考プロセスや成果の再利用を促進するとともに、ソフトウェア開発者たちに共通の語彙と概念を提供することで意思疎通を強化する。また、パターンはソフトウェアコードよりも汎用性が高く、再利用しやすいのも利点である。比ゆ的にいえば、さかな(ソフトウェア)を欲している人にさかなそのものを与えるのではなく、さかなの釣り方のコツを伝授する方が応用が利くといったところだ。

 パターンを記述する形式に特に定めはないが、適切な名前、パターンの一般性や有用性、適用範囲、すべてのフォース、解決策の手順、実例などを含むことが必要となる。物語形式で表現されたパターンもあるが、多くはパターン名に意義、コンテキスト、例題などをパートが付属する形式になっている。有名な形式にGoF形式、Coad形式、PoSA形式がある。

 ソフトウェアパターンはよく知られているように、建築家のC・アレグザンダーらが有機的な都市環境・建築物の設計するために提唱した「パターンランゲージ」に由来する。パターンランゲージのパターンには適用順序が定められており、自律的に空間や形態を生成する“ランゲージ”として機能させるという意図があった。

 これに対して現状のソフトウェアパターンの多くはパターンのカタログとして構成されており、一般にはソフトウェア活動におけるアンチョコないしサンプル集と見なされている。しかしながら、一部の研究者はオントロジーなどの技術を適用してソフトウェアパターンを体系化する試みを行っており、「ソフトウェアパターンランゲージ工学」も提唱されている。

参考文献

▼『オブジェクト指向における再利用のためのデザインパターン』 エリック・ガンマ、ラルフ・ジョンソン、リチャード・ヘルム、ジョン・ブリシディース=著/本位田真一、吉田和樹=訳/1995年10月/ソフトバンク出版事業部(『Design Patterns: Elements of Reusable Object-Oriented Software』の邦訳版)

▼『ソフトウェアアーキテクチャ――ソフトウェア開発のためのパターン体系』 フランク・ブッシュマン、ハンス・ローネルト、マイケル・スタル、レギーネ・ムニエ、ピーター・ゾンメルラード=著/金沢典子、桜井麻里、千葉寛之、水野貴之、関富登志=訳/1999年4月/トッパン(『Pattern-oriented software architecture』の邦訳版)


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ