(57)【要約】【課題】  パターン体系の定義を効率よく行ってパターン体系を構築することが可能なパターン体系構築装置を提供することである。【解決手段】  本発明のパターン体系構築装置は、オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部１１と、前記複数のパターンのうちの２つのパターンに対して順序関係を定義することを可能としたパターン体系定義部１２と、該複数のパターンのうちの２つのパターンに対して定義された順序関係を格納するパターン間関連情報格納部１４と、該定義された順序関係において、競合要素を検出するパターン間競合検出部１３と、を備え、前記パターン体系定義部１２は、前記パターン間競合検出部を起動可能としたことを特徴とするパターン体系構築装置である。【選択図】図１
2005251127.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部と、
前記複数のパターンのうちの２つのパターンに対して順序関係を定義することを可能としたパターン体系定義部と、
該複数のパターンのうちの２つのパターンに対して定義された順序関係を格納するパターン間関連情報格納部と、
該定義された順序関係において、競合要素を検出するパターン間競合検出部と、を備え、
前記パターン体系定義部は、前記パターン間競合検出部を起動可能としたことを特徴とするパターン体系構築装置。
【請求項２】
前記パターン体系定義部は、先に適用するパターンによって生成されるモデル要素を、次に適用するパターンのパラメータとして用いるというマッピング情報を定義することができると共に、該定義されたマッピング情報を前記順序関係と対応付けて前記パターン間関連情報格納部に格納することを可能とし、
前記パターン間競合検出部は、該マッピング情報を加味して競合検出を行うことを特徴とする請求項1記載のパターン体系定義装置。
【請求項３】
前記パターン体系定義部は、解決可能な競合要素に対して競合解決情報を指定することができ、かつ、該指定された競合解決情報を前記順序関係と対応付けて前記パターン間関連情報格納部に格納することを可能としたことを特徴とする請求項1記載のパターン体系定義装置。
【請求項４】
順序関係が定義された２つのパターンに対してマージ処理を行うことが可能なパターンマージ部をさらに備えることを特徴とする請求項１記載のパターン体系構築装置。
【請求項５】
オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部と、
該複数のパターンのうちの２つのパターンに対して定義された複数の順序関係を格納すると共に、前記順序関係における解決可能な競合要素に対して指定された競合解決情報を前記順序関係と対応付けて格納することが可能なパターン間関連情報格納部と、
前記パターン情報格納部に格納されているパターンを開発対象モデルに適用して該モデルを詳細化するパターン適用部と、
前記開発対象モデルとパターンとを指定して前記パターン適用部を起動することが可能なパターン体系ナビゲート部と、を備えることを特徴とするパターン適用装置。
【請求項６】
前記パターン適用部は、前記開発対象モデルに２つのパターンを適用するに際して、それら２つのパターンに対応する競合解決情報が存在するときに、前記競合解決情報を反映して適用を行うことを特徴とする請求項５記載のパターン適用装置。
【請求項７】
前記パターン情報格納部は、順序関係が定義された２つのパターンをマージして得られるパターンの情報を該順序関係と対応付けて格納し、
前記パターン体系ナビゲート部は、前記開発対象モデルに２つのパターンを適用する場合、それら２つのパターンに対応するマージパターンが前記パターン情報格納部内に存在するか否かを判定し、存在する場合には、そのマージパターンを前記開発対象モデルに適用するか否かを決定させることを促す情報を利用者に提示することを特徴とする請求項５記載のパターン適用装置。
【請求項８】
前記パターン情報格納部は、パターンを適用する際の前提条件を示すパターン適用前提条件を前記パターンと対応付けてさらに格納し、
前記開発対象モデルに前記パターンを適用するに際して、前記パターン適用前提条件に基づいて、適用可否を判定する適用可能性判定部を更に備えることを特徴とする請求項５記載のパターン適用装置。
【請求項９】
オブジェクト指向ソフトウェアの開発支援に用いられるパターン間の競合を検出する処理をコンピュータに実現させるためのプログラムにおいて、
前記コンピュータの記憶手段に格納されている複数のパターンの内から順序関係が定義された２つのパターンに対して、競合要素を検出する処理を前記コンピュータに実行させることを特徴とする競合要素検出プログラム。
【請求項１０】
オブジェクト指向ソフトウェアの開発支援に用いられる開発対象モデルにパターンを適用する処理をコンピュータに実現させるためのプログラムにおいて、
前記開発対象モデルに２つのパターンを適用する場合に、適用された２つのパターンに対応する該競合解決情報が存在するときに、前記競合解決情報を反映して前記開発対象モデルへの適用を行う処理と、を前記コンピュータに実行させることを特徴とするパターン適用プログラム。
【請求項１１】
オブジェクト指向ソフトウェアの開発支援を行うプログラムであって、複数のパターンのうちから順序関係が定義された２つのパターンに対して、競合要素を検出する処理と、
前記競合要素の競合解決情報を格納する処理と、
開発対象モデルに２つのパターンを適用する際に前記競合解決情報が存在するときに前記競合解決情報を反映して適用を行う処理と、をコンピュータに実行させることを特徴とするソフトウェア開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パターン体系構築装置、及び、パターン適用装置に関する。
【背景技術】
【０００２】
オブジェクト指向ソフトウェア技術とは、現実世界のもの（オブジェクト）を構成単位としてソフトウェアを開発しようとする技術であり、近年多くのオブジェクト指向分析・設計手法が提案されている。
【０００３】
オブジェクト指向分析・設計手法では、分析や設計で記述すべき仕様書の作成手順が定められ、またこれらの仕様書を作成するために仕様書作成作業を支援するためのソフトウェア分析・設計支援装置が用いられている。
【０００４】
これらのソフトウェア分析・設計支援装置では、例えば良い設計をするために過去に作成された設計のノウハウなどをパターン化し、再利用可能な形式でまとめた設計パターンが利用されることがある。このパターンは開発プロジェクト内でノウハウを共有するためにも用いられている。
【０００５】
このようなパターンとして、分析時には、分析モデルに適用するための分析パターンがあり、また、設計時にはある問題を解決するために構成された複数のオブジェクトの構造、例えばクラス群とそのクラス群の振舞を記述した設計パターンがあり、実装時にはソースコードのコーディングノウハウとしての実装パターンがある。パターンを利用してソフトウェアのモデルおよびプログラムを開発すれば、ソフトウェアの生産性が向上する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
このような分析パターンや設計パターンについては、例えば、下記非特許文献１をはじめとして、近年それらをまとめた書籍も出版されている。これら書籍では、具体的な開発対象モデルと、分析パターンや設計パターンとは、互いに独立しており、その分析パターンや設計パターンを個々に適用して仕様書を作成するという程度に留まっている。また書籍などで紹介されている既存のパターンには様々なものがあるため、それらを理解し、開発対象モデルに適切なパターンを探し出し、開発対象のアプリケーションへの使い方を判断して、実際に適用するという一連の作業が大変困難であるという問題がある。更にたとえパターンを理解したとしても、実際に開発対象アプリケーションに適用できるパターンの割合が低いという問題点もある。
【０００７】
従来のパターン適用を支援する装置には、下記特許文献１に開示されるパターンを適用して仕様書を作成する装置や、下記特許文献２に開示されるパターンがモデルに対して正しく適用されているかチェックする装置がある。しかし両者ともパターンの構成要素と開発者が設計するモデルの構成要素の対応をパターン適用時にユーザが指定するものであり、パターン適用作業の効率を大きく改善するものではない。
【０００８】
そこで、このような問題を解決すべく、本出願人による、下記特許文献３に開示される装置がある。
この特許文献３に開示される装置は、パターンを定義し格納する手段と、パターン間の関連を定義し格納する手段と、その関連に従って利用すべきパターンをオブジェクト指向ソフトウェア開発者にナビゲートする手段と、パターンに従って、開発対象モデルの詳細化を自動化し、適合するソースコードを自動生成する手段とを有する装置である。
【０００９】
この装置では、パターン間の関連の定義情報には、あるパターンを適用した後に考慮すべきソフトウェア開発上の観点と、その観点に対応する選択肢、その選択肢を選んだことによって決定される次に適用すべきパターン、の３点が定義されている。また、パターン適用におけるその他の制約条件を知るには、パターンの説明ドキュメント中の自然言語による記述を参照している。
【００１０】
しかしながら、特許文献３に開示される装置にも下記の問題が生じている。
すなわち、第１に、パターン間の関連の設定はパターン体系を作成する開発者が注意深く行なう必要があった。例えば、あるパターンで規定するモデル要素が次に適用されるパターンでは、別の特性を持って規定される、といったことがないようにしなければならなかった。
【００１１】
第２に、複数のパターンをナビゲートに沿って逐次適用していくときに、ソフトウェア開発上の観点がない場合に、一度のパターン適用で開発対象モデルが詳細化される方が効率的であるが、そのようなパターンの合成技術については言及していなかった。
【００１２】
第３に、パターンを適用する際のガイドとしてナビゲート手段があるが、パターンを適用するタイミングや前提条件を記述しているのは、自然言語であることから、開発者の理解不足等によって、誤ったパターン適用を行なう可能性があった。
【非特許文献１】Ｅ．Ｇamma他著「オブジェクト指向における再利用のためのデザインパターン」ソフトバンク
【特許文献１】特開平９−２３７１８０号公報「ソフトウェア設計支援装置及びソフトウェア設計方法」
【特許文献２】特開平９−１９８２４２号公報「オブジェクト指向設計支援装置」
【特許文献３】特開２０００−３０５７６６号公報「オブジェクト指向ソフトウェア開発支援装置および開発支援方法」
【００１３】
本発明の第１の課題は、パターン体系の定義を効率よく行ってパターン体系を構築することが可能なパターン体系構築装置を提供することである。
【００１４】
本発明の第２の課題は、パターンを効率よく適用することが可能なパターン適用装置を提供することである。
本発明の第３の課題は、パターン適用の誤りを回避することが可能なパターン適用装置を提供することである。
【課題を解決するための手段】
【００１５】
本発明の第１態様のパターン体系構築装置は、図１に示すように、オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部１１と、前記複数のパターンのうちの２つのパターンに対して順序関係を定義することを可能としたパターン体系定義部１２と、該複数のパターンのうちの２つのパターンに対して定義された順序関係を格納するパターン間関連情報格納部１４と、該定義された順序関係において、競合要素を検出するパターン間競合検出部１３と、を備え、前記パターン体系定義部１２は、前記パターン間競合検出部１３を起動可能としたことを特徴とするパターン体系構築装置である。
【００１６】
ここで、複数のパターンのうちの指定された２つのパターンについて、パターン間競合検出部１３により競合部分が示されるので、パターン開発者自身が競合部分について調査する手間が省け、パターン体系の定義を効率よく行うことができる。
【００１７】
本発明の第２態様のパターン適用装置は、図２に示すように、オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部２１と、該複数のパターンのうちの２つのパターンに対して定義された複数の順序関係を格納すると共に、前記順序関係における解決可能な競合要素に対して指定された競合解決情報を前記順序関係と対応付けて格納することが可能なパターン間関連情報格納部２２と、前記パターン情報格納部に格納されているパターンを開発対象モデルに適用して該モデルを詳細化するパターン適用部２３と、前記開発対象モデルとパターンとを指定して前記パターン適用部２３を起動することが可能なパターン体系ナビゲート部２４と、を備えることを特徴とするパターン適用装置である。
【００１８】
上記第２態様において、前記パターン適用部２３は、前記開発対象モデルに２つのパターンを適用するに際して、それら２つのパターンに対応する競合解決情報が存在するときに、前記競合解決情報を反映して適用を行うようにしてもよい。
【００１９】
この場合、解決情報が存在すると判定された場合には、競合解決情報が反映されてモデルに適用されることから、ソフトウェア開発者自身が競合解決する手間が省け、パターンを効率よく適用することが可能となる。
【００２０】
また、上記第２態様において、前記パターン情報格納部２１は、順序関係が定義された２つのパターンをマージして得られるパターンの情報を該順序関係と対応付けて格納し、前記パターン適用部２３は、前記開発対象モデルに２つのパターンを適用する場合、それら２つのパターンに対応するマージパターンが前記パターン情報格納部２１内に存在するか否かを判定し、存在する場合には、そのマージパターンを前記開発対象モデルに適用するようにしてもよい。
【００２１】
この場合、適用予定の２つのパターンに対応するマージパターンが前記パターン情報格納部２１内に存在すると判定された場合には、そのマージパターンが前記開発対象モデルに適用されることから、ソフトウェア開発者自身によるソースコードの関連箇所の修正等の手間が省け、パターンを効率よく適用することが可能となる。
【００２２】
また、上記第２態様において、図３に示すように、前記パターン情報格納部２１は、パターンを適用する際の前提条件を示すパターン適用前提条件を前記パターンと対応付けてさらに格納し、前記開発対象モデルに前記パターンを適用するに際して、前記パターン適用前提条件に基づいて、適用可否を判定する適用可能性判定部２５を更に備えるようにしてもよい。
【００２３】
このようにすれば、適用可能性判定部２５により、適用可否が判定されることになるので、例えば、パターンについてのドキュメントを読まなかったり誤解したりして、前提条件や適用方法を守らずに誤ったパターンを適用することが回避できる。
【発明の効果】
【００２４】
本発明のパターン体系定義装置では、複数のパターンのうちの指定された２つのパターンについて、パターン間競合検出部により競合部分が示されるので、パターン開発者自身が競合部分について調査する手間が省け、パターン体系の定義を効率よく行うことができる。
【００２５】
また、本発明のパターン適用装置では、解決情報が存在すると判定された場合には、競合解決情報が反映されてモデルに適用されることから、ソフトウェア開発者自身が競合解決する手間が省け、パターンを効率よく適用することが可能となる。
【００２６】
また、本発明のパターン適用装置では、適用予定の２つのパターンに対応するマージパターンが前記パターン情報格納部２１内に存在すると判定された場合には、そのマージパターンが前記開発対象モデルに適用されることから、ソフトウェア開発者自身によるソースコードの関連箇所の修正等の手間が省け、パターンを効率よく適用することが可能となる。
【００２７】
また、本発明のパターン適用装置では、適用可能性判定部により、適用可否が判定されることになるので、例えば、パターンについてのドキュメントを読まなかったり誤解したりして、前提条件や適用方法を守らずに誤ったパターンを適用することが回避できる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態を、図面を参照しながら詳細に説明する。
図４は、本発明のオブジェクト指向ソフトウェア開発支援装置の構成を示す図である。図に示されるように、オブジェクト指向ソフトウェア開発支援装置５０は、パターン体系構築装置と、そのパターン体系を用いるパターン適用装置とから構成される。
【００２９】
図４において、中央部の破線からの上半分は、パターン体系構築装置に対応し、また、その破線からの下半分は、パターン適用装置に対応する。
まず、パターン体系構築装置について説明する。
【００３０】
パターン体系構築装置は、パターン定義部５１、パターン体系定義部５２、パターン間競合検出部５３、パターンマージ部５４、パターン情報格納部５５、パターン間関連情報格納部５６、を備える。そして、パターンの開発を行なうパターン開発者によって用いられる。
【００３１】
パターン定義部５１は、パターンを定義する際に、パターン開発者によって用いられるエディタである。定義されたパターンは、パターン情報格納部５５に格納される。パターン体系定義部５２は、パターン情報格納部５５に格納されるパターンに基づいて、パターン体系を構築する際に、パターン開発者によって用いられるエディタである。パターン体系は、２つのパターンに対して定義される順序関係を複数含んで構成され、そのような定義された順序関係がパターン間関連情報格納部５６に格納される。
【００３２】
パターン間競合検出部５３は、パターン体系定義部５２からのパターン開発者による指示によって起動され、パターン体系において、階層的に上下に配置された（順序関係が定義された）同カテゴリに属するパターン間（分析パターン同士、設計パターン同士）における、競合要素を検出する処理と、その検出された競合候補を提示する処理と、上記検出された競合要素中の解決可能な要素に対して、パターン開発者により入力された競合解決情報をそれらパターン間の順序関係に対応付けてパターン間関連情報格納部５６に格納する処理とを含む。
【００３３】
パターンマージ部５４は、パターン間競合検出部５３からのパターン開発者による指示によって起動され、少なくとも順序関係が指定された２つのパターンに対するマージ処理を行なう。このマージ処理の結果として、最終的なマージ結果の一部分が生成される。残りの部分としては、例えば、競合を解決したことに伴うより優先順位が低いパターンのソースコードの雛型の関連箇所の修正が、そのパターンマージ部５４を介してパターン開発者により行われる。
【００３４】
図５は、パターン定義部を介して定義されたパターンの一例を示す図である。
図５に示すように、パターンは、カテゴリ、名前、観点、説明、などの各項目を含む。「カテゴリ」は、そのパターンが、分析パターン、設計パターン、実装パターンのいずれに相当するのかを示す。また、「観点」や「説明」は自然言語で記述されたドキュメントであり、パターン開発者や後述の一般開発者に必要に応じて参照される。なお、図からは定かでないが、パターン情報中には、この他に「定義」の項目が含まれ、その「定義」の項目には、図１６、図１７、などの図面に示されるパターン定義情報が含まれる。
【００３５】
図６は、パターン体系定義部を介して定義されたパターン体系の例（その１）を示す図である。
図６に示すように、パターン体系は、上位の分析パターンから、設計パターンを介し、下位の実装パターンまでを階層的に示したものであり、より具体的には、あるパターンを適用した後に考慮すべきソフトウェア開発上の観点と、その観点に対応する選択肢（ケース）、その選択肢を選んだことによって決定される次に適用すべきパターン、の３点によってその主要部分が構成されている。
【００３６】
図７は、パターン体系構築装置の動作を示すフローチャートである。
図７において、まず、パターン開発者によってパターン情報定義部が起動され、パターン情報の入力が行われる。そして、ステップＳ１０１で、パターン開発者により定義されたパターン情報がパターン情報格納部に格納される。このようにして定義された（格納された）パターンに対し、選択的にパターン適用の前提条件を設定することができる。その場合、ステップＳ１０２において、設定されたパターン適用前提条件が、パターン情報と対応付けられてパターン情報格納部に格納される。
【００３７】
格納パターン適用の前提条件としては、例えば、図８に示すように、「エンティティというステレオタイプを持つクラスがモデルに存在すること」、「エンティティというステレオタイプを持つクラスがパターンの$$Target$$に対応していること」、「パターン１によって生成されたObjectManagerクラスが存在すること」、などの情報、つまり、開発対象モデル上に存在すべきモデル要素の種類や構造、特性を指定する。ここで、「ステレオタイプ」とは、クラス（モデル）を分類する際の１つの識別子であり、また、「エンティティ」は、そのクラス（モデル）がＤＢ等に格納すべき属性を有するクラスであることを示している。
【００３８】
パターン適用の前提条件の設定の有無を問わず、続いて、パターン開発者によってパターン体系定義部が起動される。そして、パターン開発者によって２つのパターンが指定されると共に、それら指定されたパターン間に順序関係が定義される。その場合、ステップＳ１０３において、定義された順序関係がパターン間関連情報格納部に格納される。
【００３９】
このようにして定義された順序関係に対し、選択的にパターンの対応関係（マッピング情報）を設定することができる。その場合、ステップＳ１０４において、パターンの対応関係が順序関係と対応付けられてパターン間関連情報格納部に格納される。なお、マッピング情報とは、後に適用するパターンのパラメータを先に適用するパターンのどの要素に対応付けるかを示す情報である。
【００４０】
次のステップＳ１０５では、ステップＳ１０３の順序関係、または、ステップＳ１０４の処理を行った場合は、ステップＳ１０４のパターンの対応関係も加味して、競合要素の検出・提示が行われる。
【００４１】
この検出・提示処理においては、例えば、パターン１とパターン２とに順序関係が定義されていた場合、パターン１の各モデル要素（クラス、メソッド、属性、関連など）と同じ要素がパターン２に存在するかを名前（メソッドの場合はシグニチャ、関連の場合は両端のロール名の対）でチェックし、存在する場合には、そのモデル要素のプロパティ（属性の場合は型や初期値など、メソッドの場合は可視性や返却値の型など）が一致するかチェックする。そして、一致しなければ、競合要素として提示する。
【００４２】
図９は、順序関係を定義しただけで競合要素が生じてしまうパターンの組の一例を示す図である。図９の上半分では、「パターン１を適用した後に、パターン２を適用する」という、ステップＳ１０３に対応する順序関係の定義が行われる。
【００４３】
ここで、パターン１とパターン２は共に「クラスＸを付加する」というパターンであり、この場合、パターン１のクラスＸのメソッド「＋ＡＯｐｅ（）：Ｙ」と、パターン２のクラスＸのメソッド「＋ＡＯｐｅ（）：Ｚ」とが、同一のシグニチャのメソッドであるにもかかわらず、返却値の型がＹとＺとで一致していない。このような場合、図９の下半分に示すように、対応するモデル要素が強調して表示されると共に、「クラスＸのＡＯｐｅメソッドが競合する」旨のメッセージが表示される。
【００４４】
ステップＳ１０５で検出された競合要素において競合が解決できる場合には、パターン開発者により解決方法が競合解決情報として設定される。その場合、ステップＳ１０６で、設定された競合解決情報が、順序関係と対応付けられてパターン間関連情報格納部に格納される。
【００４５】
なお、ステップＳ１０５で検出された競合要素において競合が解決されない場合も当然あり得るが、そのような場合には、マッピング情報が存在する場合は、マッピング情報を変更することを促すメッセージをパターン開発者に通知（画面に表示）させてもよいし、また、マッピング情報が存在しない場合には、そのような順序関係自体を指定できない旨を示すメッセージをパターン開発者に通知（画面に表示）させてもよい。
【００４６】
また、競合が解決可能な場合には、選択的に、ステップＳ１０７において、ステップＳ１０３で順序関係が定義されたパターン同士を１つのパターンにマージすることができる。
【００４７】
図１０は、あるパターンの組を例にとって、順序関係の定義からマージまでの処理を説明する図である。
図１０において、まず、パターン開発者からの指示により、２つのパターンがロードされる。そして、これらの間に順序関係が定義される。すなわち、「複数ドメインオブジェクトの格納」パターン（以下、前パターン）を適用した後に「金額集計処理」パターン（以下、後パターン）を適用することがパターン開発者の指示によって定義される。そして、その順序関係の定義に続いて、マッピング情報が指定される。この場合、後パターンの$$Target$$を前パターンの$$Target$$に、また、後パターンの$$attrlist$$を前パターンの$$attr$$に、それぞれマッピングする指定が行なわれることにより、そのマッピング情報が指定される。これらの指定された順序関係、マッピング情報に基づいて、パターン間競合検出部は、競合の検出・提示処理を行い、その処理結果として、例えば「get＊＊＊メソッドの返却値の型が競合」というメッセージが提示される。
【００４８】
パターン開発者は、このメッセージを参照して、例えば、いずれか一方の型に返却値を揃えるか、別要素を双方の返却値に設定するかして、競合解決を行なう。いずれか一方の型に返却値を揃える場合、競合解決またはマージを行なうに際して、前パターンを後パターンに優先させるのか、後パターンを前パターンに優先させるのかに基づいて、いずれのパターンのメソッドの返却値にその競合要素の返却値を揃えるのかが決まる。図では、「前パターンの「get＊＊＊メソッド」の返却値（$$Type$$）を優先して、「get＊＊＊メソッド」の返却値を設定する」という競合解決情報が設定される。そして、それらパターンをマージして得られる、「複数ドメインオブジェクトの格納＋金額集計処理」パターンにおいても、その優先順位の関係から、例えば、後パターンの「集計処理（list：List）：Money」のソースコードの雛型が修正される。なお、パラメータ「$$Type$$」は、メソッドの返却値が$$attrlist$$の属性値に対応することを示している。
【００４９】
以下、図１１〜図１３を用いて、別のパターンの組について、順序関係の定義からマージまでの処理を説明する。
図１１は、パターン定義部を介して定義されたパターン体系の例（その２）を示す図である。
【００５０】
図１１のパターン体系は、「観点：オブジェクトの一意性の特定」に対するパターン体系であり、この体系中には、設計パターン間に２つの順序関係が定義されている。すなわち、「ＩＤ付加パターン−Ｄ００１」と「ｇｅｔ付加パターン−Ｄ００２」との間と、そして、「ＩＤ付加パターン−Ｄ００１」と「ＸＭＬ化パターン−Ｄ００３」との間とに、順序関係が定義されている。
【００５１】
図１２は、図１１に定義されたパターン間の順序関係のうちの１つをより具体的に説明する図である。
図１２において、パターン１は、図１１の「ＩＤ付加パターン−Ｄ００１」に対応し、また、パターン２は、図１１の「ｇｅｔ付加パターン−Ｄ００２」に対応する。
【００５２】
図中、“$$”が先頭と末尾に配置された文字列は、パラメータを示している。それらのパラメータは、通常行なわれるように、モデルへの適用（付加）時に、そのモデルに対応する、モデル名、モデルの属性、メソッド等が設定される。
【００５３】
例えば、“$$Target$$”は、パターンの適応対象となるモデル名が設定されるパラメータである。また、“$$attrlist$$”は、その適応対象のモデルがもつ全ての属性が設定可能なパラメータである。なお、図中で、例えば「#getId():int」という表記は、getIdというメソッド名を有するメソッドのスコープ（可視性）が“#（プロテクテッド）”で、そのメソッドの返却値が“int（整数型）”であることを示している。
【００５４】
図１２の１段目において、「パターン１を適用した後にパターン２を適用する」という順序関係が、パターン１とパターン２に対してパターン開発者によって設定されたことが示されている。
【００５５】
図１２の２段目では、１段目で行なわれた順序関係の設定に続いて、パターン１とパターン２において、「“$$attrlist$$”に“Id”を対応付ける」というマッピング情報がパターン開発者によって設定されたことが示されている。
【００５６】
その結果、図１２の３段目に示すように、パターン２が生成する“get＋属性”なる名称をもつメソッドとして、“getId”なる名称をもつメソッドが生成されるが、このメソッドと同じ名称のメソッドをパターン１も有している。そして、そのメソッドのスコープがパターン１では“#（プロテクテッド）”であるのに対して、パターン２では“＋（パブリック）”であることから、この“getId”なる名称をもつメソッドが競合要素として特定され、４段目に示すように、競合要素に対応する箇所が強調して表示される。
【００５７】
図１３は、図１２のパターン１とパターン２とをマージする場合を説明する図である。
図１３において、図１２と同様に、「パターン１を適用した後にパターン２を適用する」という順序関係がパターン開発者によって定義され、続いて、「“$$attrlist$$”に“Id”を対応付ける」というマッピング情報がパターン開発者によって設定される。この結果、上記したように、“getId”というメソッドに競合が生じるが、「パターン１側のメソッドgetIdのスコープを“＋（パブリック）”に設定する」というパターン２を優先する競合解決情報がパターン開発者によって指定され競合が解決される。
【００５８】
そして、パターン間の優先順位の関係から、パターン１の関連箇所が修正され、そのような競合解決情報を反映したパターン１とパターン２とがマージされて１つのパターン（合成されたパターン）が得られる。
【００５９】
なお、マージされたパターンは、パターン情報格納部５５に１つのパターンとして格納されると共に、そのマージされたパターンが一部に用いられるパターン体系も、パターン開発者によって、必要に応じて、パターン体系定義部５２を介して入力（構築）され、パターン関連情報格納部５６に格納される。
【００６０】
続いて、再び図４に戻り、パターン適用装置について説明する。
図４のパターン適用装置は、パターン情報格納部５５、パターン間関連情報格納部５６、パターン体系ナビゲート部５９、パターン適用部５８、適用可能性判定部５７、を備える。そして、オブジェクト指向ソフトウェアの開発を行なう一般開発者によって、そのソフトウェア開発の一部分としての開発対象モデルに対しパターンを適用する際に用いられる。
【００６１】
ここで、例えば、パターン情報格納部５５には、パターン情報に対応して、上記のパターン適用前提条件が格納されている。また、パターン間関連情報格納部５６には、２つのパターンに対して定義される順序関係が複数格納される。例えば、あるパターン体系は、それらの順序関係の一部から構成される。また、パターン間関連情報格納部５６には、この他に、上記したマッピング情報や競合解決情報も一部の順序関係に対応して格納されている。
【００６２】
パターン体系ナビゲート部５９は、一般開発者によって用いられるユーザインターフェイスである。一般開発者は、パターン体系ナビゲート部５９を介してパターン適用部５８を起動する。また、パターン体系ナビゲート部５９では、パターン間に定義された複数の順序関係から導かれるパターン体系に従って利用すべきパターンを一般開発者にナビゲートしている。
【００６３】
パターン適用部５８は、上記パターン情報格納部５５に格納されているパターンを開発対象モデルに適用してそのモデルを詳細化する。開発対象モデルは、モデル格納部６１に格納される。なお、ソースコードは、ソースコード格納部６２に格納される。
【００６４】
図１４は、適用対象のモデルに対して、すでに、先行して１つのパターンが適用されている場合に、２つ目のパターン適用を行なう場合の処理のフローチャートである。
図１４において、一般開発者によって、適用対象モデルに対して適用する２つ目のパターンが指示される。その指示情報に基づいて、ステップＳ２０１において、パターン適用部が起動される。
【００６５】
ステップＳ２０２において、その２つ目のパターンに対応するパターン適用前提条件が存在するかが判定され、存在する場合は、ステップＳ２０３において、その２つ目のパターンのモデルへの適用が、そのパターン適用前提条件を満たしているかがパターン適用可能性判定部によって判定される。
【００６６】
ステップＳ２０３において、満たされていないと判定された場合、一連の処理を終了する。この場合は、その２つ目のパターンがそのモデルには適用できないことになる。
ステップＳ２０３において、パターン適用前提条件が満たされていると判定された場合、ステップＳ２０４に進み、前回適用パターンとの関連情報（順序関係）に競合解決情報があるか判定される。競合解決情報が存在する場合、ステップＳ２０５に進み、パターンの競合部分がその競合解決情報に従って変更される。そして、ステップＳ２０６に進む。
【００６７】
また、ステップＳ２０４で、競合解決情報が存在しないと判定された場合も、ステップＳ２０６に進み、そこで、２つ目のパターンが適用対象モデルに対して適用され、モデルの詳細化が行なわれる。
【００６８】
図１５〜図１７は、開発対象モデルに対し、図６のいずれかの設計パターンが適用される場合を説明する図である。なお、パターン体系ナビゲート部５９は、同カテゴリに属し、順序関係が定義されたパターン間で上位の（先の、前の）パターンが指定された場合には、対応する下位の（次の、後の）パターンを続けて、一般開発者にナビゲートする。
【００６９】
まず、図１５は、ある開発対象のモデルに対して、１つ目のパターンを適用する場合を説明する図である。
図１５において、モデル格納部からパターン適用前の開発対象モデルが取得され、このモデルに対して、パターン情報格納部に格納されるパターンの１つ、ここでは、図６の設計パターンD001に対応する「複数ドメインオブジェクトの格納」パターン（以下、前パターン）が適用される。この前パターンは開発対象モデルに適用された場合には、複数のドメインオブジェクトからデータを取得し、それらをＲＤＢに格納するクラスとメソッドとがその開発対象モデルに追加される。図では、このようなクラスとして「$$Target$$複数一括格納クラス」が、また、このようなメソッドとして「insert()メソッド」が、それぞれ示されている。また、「insert()メソッド」に対応するソースコードも示されている。
【００７０】
適用時には、前パターンのパラメータである$$Target$$、$$attrList$$に対して、パターン体系ナビゲート部により示される入力画面中から、以下のような設定が一般開発者によって入力される。
$$Target$$＝受注伝票
$$attrList$$＝商品、個数、金額
この設定に対応して、開発対象モデルに対して前パターンが適用され、図の左下部分に示すように、開発対象モデルに、受注伝票一括格納クラスとそのクラスが有する「insertメソッド()」追加される。また、その「insert()メソッド」においては、対応するソースコード上に、上記の設定に伴う変化が反映される。
【００７１】
図１６は、図１５の１つ目のパターンが適用済みの開発対象のモデルに対して、２つ目のパターンを適用する場合を説明する図である。
図１６において、モデル格納部から取得された開発対象モデルには、図１５を参照して説明した方法により、既に、１つ目のパターンが適用されている。この１つ目のパターン適用済みのモデルに対して、図６のパターン体系に基づいて、パターン体系ナビゲート部によって、２つ目のパターンとして、図６の設計パターンD003に対応する「集計処理」パターン（以下、後パターン）が適用される。
【００７２】
この後パターンは開発対象モデルに適用された場合には、複数のドメインオブジェクトから任意のメソッドで取得されるデータを取得し、それらを合算するクラスとメソッドをその開発対象モデルに追加する。図では、このようなクラスとして「$$Target$$集計クラス」が、また、このようなメソッドとして「集計処理()メソッド」が、それぞれ示されている。また、「集計処理()メソッド」に対応するソースコードも示されている。
【００７３】
適用時には、後パターンのパラメータである$$Target$$、$$operation$$に対して、パターン体系ナビゲート部により示される入力画面中から、以下のような設定が一般開発者によって入力される。
$$Target$$＝受注伝票
$$attrList$$＝get金額()
この設定に対応して、前パターン適用済みの開発対象モデルに対して後パターンが適用され、図の左下部分に示すように、前パターン適用済みの開発対象モデルに、受注伝票集計クラスと、そのクラスが有する「集計処理()メソッド」とが追加される。また、その「集計処理()メソッド」においては、対応するソースコード上に、上記の設定に伴う変化が反映される。
【００７４】
図１７は、別の開発対象のモデルに対して、１つのパターンを適用する場合を説明する図である。
図１７において、モデル格納部からパターン適用前の開発対象モデルが取得され、このモデルに対して、パターン情報格納部に格納されるパターンの１つ、ここでは、図６の設計パターンD002に対応する「単数ドメインオブジェクトの格納」パターンが適用される。このパターンは開発対象モデルに適用された場合には、一つのドメインオブジェクトからデータを取得し、それらをＲＤＢに格納するクラスとメソッドとがその開発対象モデルに追加される。図では、このようなクラスとして「$$Target$$単件格納クラス」が、また、このようなメソッドとして「insert2()メソッド」が、それぞれ示されている。また、「insert2()メソッド」に対応するソースコードも示されている。
【００７５】
適用時には、「単数ドメインオブジェクトの格納」パターンのパラメータである$$Target$$、$$attrList$$に対して、パターン体系ナビゲート部により示される入力画面中から、以下のような設定が一般開発者によって入力される。
$$Target$$＝受注一括伝票
$$attrList$$＝商品、個数、金額
この設定に対応して、開発対象モデルに対して「単数ドメインオブジェクトの格納」パターンが適用され、図の左下部分に示すように、開発対象モデルに、受注一括伝票単件格納クラスが追加され、そのクラスにＲＤＢへの格納処理を行う「insert2()メソッド」が追加される。また、その「insert2()メソッド」においては、対応するソースコード上に、上記の設定に伴う変化が反映される。
【００７６】
なお、図に示されるように、受注一括伝票（のモデル）に追加される「get＊＊＊メソッド」は、「＊＊＊」にて示される属性の配列の何番目のデータを取得するかを指定するための引数をもつ。さらに、受注一括伝票（のモデル）には、配列の件数を表す属性（図中、「件数」にて示される）と、その件数を取得するための「get件数()メソッド」が追加される。
【００７７】
図１８は、図１５の１つ目のパターンが適用済みの開発対象のモデルに対して、図１６とは異なる２つ目のパターンを適用する場合を説明する図である。
図１８において、モデル格納部から取得された開発対象モデルには、図１５を参照して説明した方法により、既に、１つ目のパターンが適用されている。この１つ目のパターン適用済みのモデルに対して、右側部分に示すように、図１６とは異なる２つ目のパターンが適用される。これにより、２つ目のパターンを適用後のモデルでは、「get金額()メソッド」の返却値が「Money」型となる。
【００７８】
２つ目のパターンを適用前の、すなわち、１つ目のパターンを適用済みのモデルでは、「get金額()メソッド」の返却値は「int」型であったので、この「get金額()メソッド」の返却値において競合が生じることとなる。
【００７９】
このような競合に対して、例えば、上記特許文献３に開示される従来技術においては、一般開発者が競合が発生するか否かを判断していた。そして、競合要素が見つかり、その競合が解決した後も、モデルの詳細化の過程において、そのモデルに対応するソースコードも必要に応じて、例えば、前パターンと後パターンとの優先順位に基づいて、書き換える作業も一般開発者は行なっていた。
【００８０】
一方、本実施形態においては、競合が生じる場合については、パターン開発の時点において、それらのパターン間に対して、上記した競合解決情報が、それらパターン間の順序関係と対応付けられてパターン情報格納部に格納されている場合がある。そのような場合には、パターン適用部によって、２つ目のパターンの適用時に、その競合解決情報が自動的に反映される。よって、パターンを効率よく適用することが可能となる。
【００８１】
なお、パターンマージ部によって、対応する順序関係について、マージ処理が既に行なわれていた場合には、パターン適用部によって１つ目のパターン適用時に、その旨が一般開発者に提示される。この場合、例えば、パターン間の優先順位に基づくソースコードの雛型の修正作業についても、そのマージ処理時に修正済みであり、一般開発者は適用時にそのような修正を行なう必要がなくなる。
【００８２】
例えば、図６の設計パターンD001とD003とがすでにマージ済みである場合、開発対象モデルへの設計パターンD001の適用時に「D001とD003とをマージしたパターンが存在する」旨が、パターン体系ナビゲート部により一般開発者に提示されるので、そのような情報の提示を受けた一般開発者側としては、例えば、パターンD001とD003を続けて適用する場合には、「マージされたパターンを用いる」旨を示す指示をパターン体系ナビゲート部を介して与えることにより、開発対象モデルに対して「マージされたパターン」が適用される。よって、個々のパターンを個別に適用する場合に発生する、上述のソースコードの修正作業等が必要なくなり、パターンを効率よく適用することが可能となる。
【００８３】
なお、図６では、パターンD001の直後に設けられた観点に対応する選択肢（ケース）は１つ（パターンD003）しかないため、パターンD001の適用時に「D001とD003とをマージしたパターンが存在する」旨が提示されていたが、選択肢が複数ある場合、例えば、パターンD001の直後に設けられた観点に対応する選択肢が２つある場合は、それらマージパターンのリストが一覧表示される。一般開発者は、マージパターンを用いる場合には、その一覧中のいずれかのマージパターンを選択し、または、マージを行なわない場合はどのマージパターンも選択しない指示をパターン体系ナビゲート部を介して行なう。
【００８４】
図１９は、パターン適用の前提条件に従って、パターン適用上の誤りを回避する場合を説明する図である。
図１９において、開発対象モデルに対して、「単数ドメインオブジェクトの格納」パターンを適用しようとした場合に、適用可能性判定部は、そのパターンに対応付けられて、パターン情報格納部に格納されているパターン適用前提条件を参照し、その開発対象モデルへのそのパターンの適用が、そのパターン適用前提条件を満たすかを判定する。図においては、「単数ドメインオブジェクトの格納」パターンをモデルに適用するに際しては、適用対象のモデル（クラス）が「エンティティ」というステレオタイプをもつと共に、そのモデル（クラス）の全ての属性が配列でなければならない、というパターン適用前提条件が示されている。これにより、一般開発者の、例えば、理解不足等による誤ったパターン適用を回避することができる。
【００８５】
図２０は、本発明のオブジェクト指向ソフトウェア開発支援装置やパターン体系定義装置を含むオブジェクト指向ソフトウェア開発支援装置における各開発者の作業分担を説明する図（その１）である。
【００８６】
図２０においては、上記説明において、「パターン開発者」とされていたものが、より細かく「パターン部品開発者」と「アーキテクト」とに分けられている。
ここで、「パターン部品開発者」は、本実施形態における、競合検出処理を行う元となるパターン部品を専ら開発する。また、「アーキテクト」は、パターン部品を開発すると共に、開発されたパターン部品から２つのパターンを指定することにより、パターン間の順序関係を定義する作業を行なう。例えば、その２つのパターンの指定によって、パターン間競合検出部が起動され、上記した競合検出処理が行われる。競合検出処理の結果として、例えば、上記した競合解決情報が、パターン間関連情報格納部に格納される。
【００８７】
「一般開発者」は、パターン体系ナビゲート部を介して、開発対象モデルにパターンを順次、適用する。この開発対象モデルとパターンとの指定に対応してパターン適用部が起動される。パターン適用部は、例えば、開発対象モデルへの２つ目のパターンの適用において、対応する順序関係に競合解決情報が設定されていた場合は、その競合解決情報を反映して、その２つ目のパターンの開発対象モデルへの適用が行なわれる。
【００８８】
図２１は、本発明のオブジェクト指向ソフトウェア開発支援装置やパターン体系定義装置を含むオブジェクト指向ソフトウェア開発支援装置における各開発者の作業分担を説明する図（その２）である。
【００８９】
図２１においては、図２０との相違点を主に説明する。図２１では図２０と比較して、パターンマージ部が追加されている。上記説明との関係では、このパターンマージ部を用いた（順序関係が指定された）パターン間のマージ作業は、「アーキテクト」によって行なわれる。
【００９０】
図２２は、プログラムのローディングを説明する図である。
図２２に示されるように、本発明のソフトウェア開発支援装置は当然一般的なコンピュータシステムによって実現することが可能であるが、そのようなコンピュータ８５は基本的には本体８６とメモリ８７とから構成される。可搬型記憶媒体８９から本発明の処理のためのプログラムなどをメモリ８７にロードして実行することも、またプログラム提供者側からネットワーク８８を介して本発明の処理のためのプログラムなどをメモリ８７にロードして実行することも可能である。
【００９１】
本発明は下記構成でもよい。
（付記１）  オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部と、
前記複数のパターンのうちの２つのパターンに対して順序関係を定義することを可能としたパターン体系定義部と、
該複数のパターンのうちの２つのパターンに対して定義された順序関係を格納するパターン間関連情報格納部と、
該定義された順序関係において、競合要素を検出するパターン間競合検出部と、を備え、
前記パターン定義部は、前記パターン間競合検出部を起動可能としたことを特徴とするパターン体系構築装置。
【００９２】
（付記２）  前記パターン体系定義部は、先に適用するパターンによって生成されるモデル要素を、次に適用するパターンのパラメータとして用いるというマッピング情報を定義することができると共に、該定義されたマッピング情報を前記順序関係と対応付けて前記パターン間関連情報格納部に格納することを可能とし、
前記パターン間競合検出部は、該マッピング情報を加味して競合検出を行うことを特徴とする付記1記載のパターン体系定義装置。
【００９３】
（付記３）  前記パターン体系定義部は、解決可能な競合要素に対して競合解決情報を指定することができ、かつ、該指定された競合解決情報を前記順序関係と対応付けて前記パターン間関連情報格納部に格納することを可能としたことを特徴とする付記１記載のパターン体系定義装置。
【００９４】
（付記４）  順序関係が定義された２つのパターンに対してマージ処理を行うことが可能なパターンマージ部をさらに備えることを特徴とする付記１記載のパターン体系構築装置。
【００９５】
（付記５）  オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部と、
該複数のパターンのうちの２つのパターンに対して定義された複数の順序関係を格納すると共に、前記順序関係における解決可能な競合要素に対して指定された競合解決情報を前記順序関係と対応付けて格納することが可能なパターン間関連情報格納部と、
前記パターン情報格納部に格納されているパターンを開発対象モデルに適用して該モデルを詳細化するパターン適用部と、
前記開発対象モデルとパターンとを指定して前記パターン適用部を起動することが可能なパターン体系ナビゲート部と、を備えることを特徴とするパターン適用装置。
【００９６】
（付記６）  前記パターン適用部は、前記開発対象モデルに２つのパターンを適用するに際して、それら２つのパターンに対応する競合解決情報の有無を判定する判定部を含み、該競合解決情報が存在すると判定された場合に、前記競合解決情報を反映して適用を行うことを特徴とする付記５記載のパターン適用装置。
【００９７】
（付記７）  前記パターン情報格納部は、パターンを適用する際の前提条件を示すパターン適用前提条件を前記パターンと対応付けてさらに格納し、
前記開発対象モデルに前記パターンを適用するに際して、前記パターン適用前提条件に基づいて、適用可否を判定する適用可能性判定部を更に備えることを特徴とする付記５記載のパターン適用装置。
【００９８】
（付記８）  前記パターン間関連情報格納部は、順序関係が定義された２つのパターンをマージして得られるパターンの情報を該順序関係と対応付けて格納し、
前記パターン体系ナビゲート部は、前記開発対象モデルに２つのパターンを適用する場合、それら２つのパターンに対応するマージパターンが前記パターン情報格納部内に存在するか否かを判定し、存在する場合には、そのマージパターンを前記開発対象モデルに適用するか否かを決定させることを促す情報を利用者に提示することを特徴とする付記５記載のパターン適用装置。
【００９９】
（付記９）  前記パターン体系ナビゲート部は、前記パターン間関連情報格納部に格納された１以上の順序関係から生成されたパターン体系に基づいてナビゲーションを行うと共に、前記順序関係の上位のパターンが指定されたときに、その上位パターンと、対応する１以上の下位のパターンとからなる各順序関係において、マージパターンが前記パターン情報格納部内に存在するか否かを判定し、存在する場合には、対応する１以上のマージパターンのいずれを前記開発対象モデルに適用するのか、又は、いずれのマージパターンも適用しないのかを決定することを促す情報を利用者に提示することを特徴とする付記８記載のパターン適用装置。
【０１００】
（付記１０）  オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部と、
前記複数のパターンのうちの２つのパターンに対して順序関係を定義することを可能としたパターン体系定義部と、
該複数のパターンのうちの２つのパターンに対して定義された順序関係を格納するパターン間関連情報格納部と、
該定義された順序関係において、競合要素を検出するパターン間競合検出部と、を備え、
前記パターン定義部は、前記パターン間競合検出部を起動可能とすると共に、解決可能な競合要素に対して競合解決情報を指定することができ、かつ、該指定された競合解決情報を前記順序関係と対応付けて前記パターン間関連情報格納部に格納することを可能とし、
前記パターン情報格納部に格納されているパターンを開発対象モデルに適用して該モデルを詳細化するパターン適用部と、
前記開発対象モデルとパターンとを指定して前記パターン適用部を起動することが可能なパターン体系ナビゲート部と、を更に備えることを特徴とするオブジェクト指向ソフトウェア開発支援装置。
【０１０１】
（付記１１）  オブジェクト指向ソフトウェアの開発支援に用いられるパターン間の競合を検出する処理をコンピュータに実現させるためのプログラムにおいて、
前記コンピュータの記憶手段に格納されている複数のパターンの内から順序関係が定義された２つのパターンに対して、競合要素を検出する処理を前記コンピュータに実行させることを特徴とする競合要素検出プログラム。
【０１０２】
（付記１２）  オブジェクト指向ソフトウェアの開発支援に用いられる開発対象モデルにパターンを適用する処理をコンピュータに実現させるためのプログラムにおいて、
前記開発対象モデルに２つのパターンを適用する場合に、適用された２つのパターンに対応する競合解決情報の有無を判定する処理と、
該競合解決情報が存在すると判定された場合に、前記競合解決情報を反映して前記開発対象モデルへの適用を行う処理と、を前記コンピュータに実行させることを特徴とするパターン適用プログラム。
【０１０３】
（付記１３）  オブジェクト指向ソフトウェアの開発支援に用いられる開発対象モデルにパターンを適用する際のナビゲーション処理をコンピュータに実現させるためのプログラムにおいて、
前記コンピュータの記憶手段に格納された１以上の順序関係からパターン体系を生成する処理と、
前記順序関係の上位のパターンが指定されたときに、前記パターン体系に基づいて、その上位パターンと、対応する１以上の下位のパターンとからなる各順序関係において、マージパターンが前記コンピュータの記憶手段内に存在するか否かを判定する処理と、
存在する場合には、対応する１以上のマージパターンのいずれを前記開発対象モデルに適用するのか、又は、いずれのマージパターンも適用しないのかを利用者に決定させることを促す情報を前記コンピュータの表示手段に表示させる処理と、を前記コンピュータに実行させることを特徴とするパターン適用ナビゲーションプログラム。
【０１０４】
（付記１４）  オブジェクト指向ソフトウェアの開発支援を行うプログラムであって、複数のパターンのうちから順序関係が定義された２つのパターンに対して、競合要素を検出する処理と、
前記競合要素の競合解決情報を格納する処理と、
開発対象モデルに２つのパターンを適用する際に前記競合解決情報が存在するときに前記競合解決情報を反映して適用を行う処理と、をコンピュータに実行させることを特徴とするソフトウェア開発支援プログラム。
【図面の簡単な説明】
【０１０５】
【図１】本発明の第１態様のパターン体系構築装置の構成を示すブロック図である。
【図２】本発明の第２態様のパターン適用装置の構成を示すブロック図である。
【図３】本発明の第２態様のパターン適用装置の変形例の構成を示すブロック図である。
【図４】本発明の一実施形態のオブジェクト指向ソフトウェア開発支援装置の構成を示す図である。
【図５】パターン定義部を介して定義されたパターンの一例を示す図である。
【図６】パターン体系定義部を介して定義されたパターン体系の例（その１）を示す図である。
【図７】パターン体系構築装置の動作を示すフローチャートである。
【図８】パターン適用前提条件の一例を示す図である。
【図９】順序関係を定義しただけで競合要素が生じてしまうパターンの組の一例を示す図である。
【図１０】あるパターンの組を例にとって、順序関係の定義からマージまでの処理を説明する図である。
【図１１】パターン定義部を介して定義されたパターン体系の例（その２）を示す図である。
【図１２】図１１に定義されたパターン間の順序関係のうちの１つをより具体的に説明する図である。
【図１３】図１２のパターン１とパターン２とをマージする場合を説明する図である。
【図１４】適用対象のモデルに対して、すでに、先行して１つのパターンが適用されている場合に、２つ目のパターン適用を行なう場合の処理のフローチャートである。
【図１５】ある開発対象のモデルに対して、１つ目のパターンを適用する場合を説明する図である。
【図１６】図１５の１つ目のパターンが適用済みの開発対象のモデルに対して、２つ目のパターンを適用する場合を説明する図である。
【図１７】別の開発対象のモデルに対して、１つのパターンを適用する場合を説明する図である。
【図１８】図１５の１つ目のパターンが適用済みの開発対象のモデルに対して、図１６とは異なる２つ目のパターンを適用する場合を説明する図である。
【図１９】パターン適用の前提条件に従って、パターン適用上の誤りを回避する場合を説明する図である。
【図２０】本発明のオブジェクト指向ソフトウェア開発支援装置における各開発者の作業分担を説明する図（その１）である。
【図２１】本発明のオブジェクト指向ソフトウェア開発支援装置における各開発者の作業分担を説明する図（その２）である。
【図２２】プログラムのローディングを説明する図である。
【符号の説明】
【０１０６】
１１，２１，５５  パターン情報格納部
１２，５２  パターン体系定義部
１３，５３  パターン間競合検出部
１４，２２，５６  パターン間関連情報格納部
２３，５８  パターン適用部
２４，５９  パターン体系ナビゲート部
２５，５７  適用可能性判定部
６１  モデル格納部
６２  ソースコード格納部
【図１】
2005251127.tif 000003
【図２】
2005251127.tif 000004
【図３】
2005251127.tif 000005
【図４】
2005251127.tif 000006
【図５】
2005251127.tif 000007
【図６】
2005251127.tif 000008
【図７】
2005251127.tif 000009
【図８】
2005251127.tif 000010
【図９】
2005251127.tif 000011
【図１０】
2005251127.tif 000012
【図１１】
2005251127.tif 000013
【図１２】
2005251127.tif 000014
【図１３】
2005251127.tif 000015
【図１４】
2005251127.tif 000016
【図１５】
2005251127.tif 000017
【図１６】
2005251127.tif 000018
【図１７】
2005251127.tif 000019
【図１８】
2005251127.tif 000020
【図１９】
2005251127.tif 000021
【図２０】
2005251127.tif 000022
【図２１】
2005251127.tif 000023
【図２２】
2005251127.tif 000024