オブジェクト指向技術は アプリケーションの実行速度向上などには直接寄与しない. オブジェクト指向とは, アプリケーションの内部に 関わりの深いいくつかの変数をオブジェクトとみなし, そのオブジェクトに対する操作をインターフェースとして 定義することでオブジェクトを単位とする構造を作り, その構造間の関わりを最小限にすることで, アプリケーションの作成を容易にするための技術である. この構造間の独立性,モジュラリティにより, 人間にとっての理解しやすさ, 構造毎のテストが可能, 構造の部品化・再利用が可能 などの効果が期待され, オブジェクト指向言語 [Smalltalk, Eiffel, CLOS, Self, C++, Objective-C, Java], 分析・設計手法 [ OMT, Booch Sheller-Mirror, Fusion, UML] などが数多く提案され普及してきた. オブジェクト指向言語に於いては カプセル化,継承機構,ポルモルフィズム等の手法で このモジュラリティの実現を支援している.
しかし, 実際にオブジェクト指向が普及するにつれて, いくつかの問題点もあげられてきた. オブジェクトの設計の難しさ, 特に部品化・再利用のための設計の難しさ. オブジェクト数の増加やその間のメッセージ通信の 複雑化に伴う理解の難しさ. そのため再利用可能なものも利用されないという問題. などである. 直接アプリケーション自体には効果が現れず, むしろ初期の設計に多くの手間と時間がかかることから オブジェクト指向技術の導入そのものに消極的な開発者・会社も多い.
これに対して,近年オブジェクト指向技術の実践の中で 設計手法という形で いくつかの解決策 が提示されてきて,それなりの効果をあげている. その一つであり最近最も注目を集めているものとして, パターン言語 [PLoP1, PLoP2] と呼ばれるものがある.
続く節では部品化と再利用についての現状について オブジェクト指向およびパターン言語との関わりを 中心に概説する.
従来取り扱われてきたソフトウェア部品としては, ソースコードや仕様書などがあるが, それらは再利用が困難な形で提供されてきた.
オブジェクト指向技術はより再利用性の高い形態での部品提供を 行なっている. 具体的な部品としては以下の2つがある。
一つのアプリケーションまたはライブラリ. 一部を入れ換えることによって類似の問題領域に使用することが 可能.
ある目的に特化した比較的小さな部品集合. コードを追加することなどにより, 良く似たアプリケーションを作成する. 大きなものは Framework とも言える.
これらは具体的な言語・アプリケーションに依存している。 ソースコード・機械コードとして、 主に従来のライブラリという形態で提供される.
そのような具象部品に加えて抽象部品といえるものが存在する. 具象部品の作成の指針・理解支援に用いられるようなものであり, パターン言語として現在注目を集めている.
パターン言語(Pattern Language) とは, 基本的にアプリケーション自体が解決しようとしている問題には依存しないが、 アプリケーションに共通に現れる構造や解法について、 その性質を記述したものである. パターン言語は一般に, Architecture,Design Pattern, Ideom の3種に大別される [PLoP1].
言語の非依存性が最も強い. 形式化が最も困難.
オブジェクト指向言語の構造に幾分か依存. 言語・アプリケーションには非依存.
言語依存.アプリケーションには非依存.
抽象部品
急速なインターネットの普及に伴い, ソフトウェア開発も地理的に離れた者同士が協同して 作業するという形態が増えつつある. オブジェクト指向技術の普及も, モジュールに分割されたアプリケーションを 独立して開発できるということで, この傾向に拍車をかけている. このような分散開発環境においては, 従来の協同開発で問題とされてきたことに加えて 遠隔であることから発生する種々の問題が解決されなければならない.
分散開発における問題点には以下のようなものがある.
従来から,ソースコードだけでなく 仕様や要求,メモ,テストコード他多様な部品が 開発には必要とされてきた. このような部品を統合的に管理しようとする 試みとして, [Tek] などがある. これはハイパーテキストを用いて部品を相互に 結び付けようとしたものである.
分散透明とは, 物理的な位置を気にせずに情報にアクセスできるということであり, 分散計算,分散データベースなどで,取り扱われてきた. オブジェクト分散計算としては [OZ++] などがある.
従来の開発で問題とされ,多くの研究が行なわれてきた. 商用化されてもいる. 版管理機構として代表的なものとして [SCCS, RCS] などがあげられる. また,複数人数での版管理機構として [CVS] など 実際に利用されている. (リモートでも利用は可能.分散透明ではない)
協調作業支援は Groupware もしくは CSCW で研究が行なわれてきた [GW]. 近年その結果をソフトウェア開発へ応用しようとする試みとして [Vessey, Kraul] などがある.