JP4393893B2 - パターン体系構築装置、パターン適用装置およびプログラム、競合要素検出プログラム、ならびにソフトウェア開発支援プログラム - Google Patents

パターン体系構築装置、パターン適用装置およびプログラム、競合要素検出プログラム、ならびにソフトウェア開発支援プログラム Download PDF

Info

Publication number
JP4393893B2
JP4393893B2 JP2004064669A JP2004064669A JP4393893B2 JP 4393893 B2 JP4393893 B2 JP 4393893B2 JP 2004064669 A JP2004064669 A JP 2004064669A JP 2004064669 A JP2004064669 A JP 2004064669A JP 4393893 B2 JP4393893 B2 JP 4393893B2
Authority
JP
Japan
Prior art keywords
pattern
patterns
conflict
storage unit
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004064669A
Other languages
English (en)
Other versions
JP2005251127A (ja
Inventor
忠弘 上原
友隆 松田
順二 猪股
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2004064669A priority Critical patent/JP4393893B2/ja
Priority to US11/016,756 priority patent/US20050198616A1/en
Publication of JP2005251127A publication Critical patent/JP2005251127A/ja
Application granted granted Critical
Publication of JP4393893B2 publication Critical patent/JP4393893B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、パターン体系構築装置、及び、パターン適用装置に関する。
オブジェクト指向ソフトウェア技術とは、現実世界のもの(オブジェクト)を構成単位としてソフトウェアを開発しようとする技術であり、近年多くのオブジェクト指向分析・設計手法が提案されている。
オブジェクト指向分析・設計手法では、分析や設計で記述すべき仕様書の作成手順が定められ、またこれらの仕様書を作成するために仕様書作成作業を支援するためのソフトウェア分析・設計支援装置が用いられている。
これらのソフトウェア分析・設計支援装置では、例えば良い設計をするために過去に作成された設計のノウハウなどをパターン化し、再利用可能な形式でまとめた設計パターンが利用されることがある。このパターンは開発プロジェクト内でノウハウを共有するためにも用いられている。
このようなパターンとして、分析時には、分析モデルに適用するための分析パターンがあり、また、設計時にはある問題を解決するために構成された複数のオブジェクトの構造、例えばクラス群とそのクラス群の振舞を記述した設計パターンがあり、実装時にはソースコードのコーディングノウハウとしての実装パターンがある。パターンを利用してソフトウェアのモデルおよびプログラムを開発すれば、ソフトウェアの生産性が向上する。
このような分析パターンや設計パターンについては、例えば、下記非特許文献1をはじめとして、近年それらをまとめた書籍も出版されている。これら書籍では、具体的な開発対象モデルと、分析パターンや設計パターンとは、互いに独立しており、その分析パターンや設計パターンを個々に適用して仕様書を作成するという程度に留まっている。また書籍などで紹介されている既存のパターンには様々なものがあるため、それらを理解し、開発対象モデルに適切なパターンを探し出し、開発対象のアプリケーションへの使い方を判断して、実際に適用するという一連の作業が大変困難であるという問題がある。更にたとえパターンを理解したとしても、実際に開発対象アプリケーションに適用できるパターンの割合が低いという問題点もある。
従来のパターン適用を支援する装置には、下記特許文献1に開示されるパターンを適用して仕様書を作成する装置や、下記特許文献2に開示されるパターンがモデルに対して正しく適用されているかチェックする装置がある。しかし両者ともパターンの構成要素と開発者が設計するモデルの構成要素の対応をパターン適用時にユーザが指定するものであり、パターン適用作業の効率を大きく改善するものではない。
そこで、このような問題を解決すべく、本出願人による、下記特許文献3に開示される装置がある。
この特許文献3に開示される装置は、パターンを定義し格納する手段と、パターン間の関連を定義し格納する手段と、その関連に従って利用すべきパターンをオブジェクト指向ソフトウェア開発者にナビゲートする手段と、パターンに従って、開発対象モデルの詳細化を自動化し、適合するソースコードを自動生成する手段とを有する装置である。
この装置では、パターン間の関連の定義情報には、あるパターンを適用した後に考慮すべきソフトウェア開発上の観点と、その観点に対応する選択肢、その選択肢を選んだことによって決定される次に適用すべきパターン、の3点が定義されている。また、パターン適用におけるその他の制約条件を知るには、パターンの説明ドキュメント中の自然言語による記述を参照している。
しかしながら、特許文献3に開示される装置にも下記の問題が生じている。
すなわち、第1に、パターン間の関連の設定はパターン体系を作成する開発者が注意深く行なう必要があった。例えば、あるパターンで規定するモデル要素が次に適用されるパターンでは、別の特性を持って規定される、といったことがないようにしなければならなかった。
第2に、複数のパターンをナビゲートに沿って逐次適用していくときに、ソフトウェア開発上の観点がない場合に、一度のパターン適用で開発対象モデルが詳細化される方が効率的であるが、そのようなパターンの合成技術については言及していなかった。
第3に、パターンを適用する際のガイドとしてナビゲート手段があるが、パターンを適用するタイミングや前提条件を記述しているのは、自然言語であることから、開発者の理解不足等によって、誤ったパターン適用を行なう可能性があった。
E.Gamma他著「オブジェクト指向における再利用のためのデザインパターン」ソフトバンク 特開平9−237180号公報「ソフトウェア設計支援装置及びソフトウェア設計方法」 特開平9−198242号公報「オブジェクト指向設計支援装置」 特開2000−305766号公報「オブジェクト指向ソフトウェア開発支援装置および開発支援方法」
本発明の第1の課題は、パターン体系の定義を効率よく行ってパターン体系を構築することが可能なパターン体系構築装置を提供することである。
本発明の第2の課題は、パターンを効率よく適用することが可能なパターン適用装置を提供することである。
本発明の第3の課題は、パターン適用の誤りを回避することが可能なパターン適用装置を提供することである。
本発明の第1態様のパターン体系構築装置は、図1に示すように、オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部11と、前記複数のパターンのうちの2つのパターンに対して順序関係を定義することを可能としたパターン体系定義部12と、該複数のパターンのうちの2つのパターンに対して定義された順序関係を格納するパターン間関連情報格納部14と、該定義された順序関係において、競合要素を検出するパターン間競合検出部13と、を備え、前記パターン体系定義部12は、前記パターン間競合検出部13を起動可能としたことを特徴とするパターン体系構築装置である。
ここで、複数のパターンのうちの指定された2つのパターンについて、パターン間競合検出部13により競合部分が示されるので、パターン開発者自身が競合部分について調査する手間が省け、パターン体系の定義を効率よく行うことができる。
本発明の第2態様のパターン適用装置は、図2に示すように、オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部21と、該複数のパターンのうちの2つのパターンに対して定義された複数の順序関係を格納すると共に、前記順序関係における解決可能な競合要素に対して指定された競合解決情報を前記順序関係と対応付けて格納することが可能なパターン間関連情報格納部22と、前記パターン情報格納部に格納されているパターンを開発対象モデルに適用して該モデルを詳細化するパターン適用部23と、前記開発対象モデルとパターンとを指定して前記パターン適用部23を起動することが可能なパターン体系ナビゲート部24と、を備えることを特徴とするパターン適用装置である。
上記第2態様において、前記パターン適用部23は、前記開発対象モデルに2つのパターンを適用するに際して、それら2つのパターンに対応する競合解決情報が存在するときに、前記競合解決情報を反映して適用を行うようにしてもよい。
この場合、解決情報が存在すると判定された場合には、競合解決情報が反映されてモデルに適用されることから、ソフトウェア開発者自身が競合解決する手間が省け、パターンを効率よく適用することが可能となる。
また、上記第2態様において、前記パターン情報格納部21は、順序関係が定義された2つのパターンをマージして得られるパターンの情報を該順序関係と対応付けて格納し、前記パターン適用部23は、前記開発対象モデルに2つのパターンを適用する場合、それら2つのパターンに対応するマージパターンが前記パターン情報格納部21内に存在するか否かを判定し、存在する場合には、そのマージパターンを前記開発対象モデルに適用するようにしてもよい。
この場合、適用予定の2つのパターンに対応するマージパターンが前記パターン情報格納部21内に存在すると判定された場合には、そのマージパターンが前記開発対象モデルに適用されることから、ソフトウェア開発者自身によるソースコードの関連箇所の修正等の手間が省け、パターンを効率よく適用することが可能となる。
また、上記第2態様において、図3に示すように、前記パターン情報格納部21は、パターンを適用する際の前提条件を示すパターン適用前提条件を前記パターンと対応付けてさらに格納し、前記開発対象モデルに前記パターンを適用するに際して、前記パターン適用前提条件に基づいて、適用可否を判定する適用可能性判定部25を更に備えるようにしてもよい。
このようにすれば、適用可能性判定部25により、適用可否が判定されることになるので、例えば、パターンについてのドキュメントを読まなかったり誤解したりして、前提条件や適用方法を守らずに誤ったパターンを適用することが回避できる。
本発明のパターン体系定義装置では、複数のパターンのうちの指定された2つのパターンについて、パターン間競合検出部により競合部分が示されるので、パターン開発者自身が競合部分について調査する手間が省け、パターン体系の定義を効率よく行うことができる。
また、本発明のパターン適用装置では、解決情報が存在すると判定された場合には、競合解決情報が反映されてモデルに適用されることから、ソフトウェア開発者自身が競合解決する手間が省け、パターンを効率よく適用することが可能となる。
また、本発明のパターン適用装置では、適用予定の2つのパターンに対応するマージパターンが前記パターン情報格納部21内に存在すると判定された場合には、そのマージパターンが前記開発対象モデルに適用されることから、ソフトウェア開発者自身によるソースコードの関連箇所の修正等の手間が省け、パターンを効率よく適用することが可能となる。
また、本発明のパターン適用装置では、適用可能性判定部により、適用可否が判定されることになるので、例えば、パターンについてのドキュメントを読まなかったり誤解したりして、前提条件や適用方法を守らずに誤ったパターンを適用することが回避できる。
以下、本発明の実施の形態を、図面を参照しながら詳細に説明する。
図4は、本発明のオブジェクト指向ソフトウェア開発支援装置の構成を示す図である。図に示されるように、オブジェクト指向ソフトウェア開発支援装置50は、パターン体系構築装置と、そのパターン体系を用いるパターン適用装置とから構成される。
図4において、中央部の破線からの上半分は、パターン体系構築装置に対応し、また、その破線からの下半分は、パターン適用装置に対応する。
まず、パターン体系構築装置について説明する。
パターン体系構築装置は、パターン定義部51、パターン体系定義部52、パターン間競合検出部53、パターンマージ部54、パターン情報格納部55、パターン間関連情報格納部56、を備える。そして、パターンの開発を行なうパターン開発者によって用いられる。
パターン定義部51は、パターンを定義する際に、パターン開発者によって用いられるエディタである。定義されたパターンは、パターン情報格納部55に格納される。パターン体系定義部52は、パターン情報格納部55に格納されるパターンに基づいて、パターン体系を構築する際に、パターン開発者によって用いられるエディタである。パターン体系は、2つのパターンに対して定義される順序関係を複数含んで構成され、そのような定義された順序関係がパターン間関連情報格納部56に格納される。
パターン間競合検出部53は、パターン体系定義部52からのパターン開発者による指示によって起動され、パターン体系において、階層的に上下に配置された(順序関係が定義された)同カテゴリに属するパターン間(分析パターン同士、設計パターン同士)における、競合要素を検出する処理と、その検出された競合候補を提示する処理と、上記検出された競合要素中の解決可能な要素に対して、パターン開発者により入力された競合解決情報をそれらパターン間の順序関係に対応付けてパターン間関連情報格納部56に格納する処理とを含む。
パターンマージ部54は、パターン間競合検出部53からのパターン開発者による指示によって起動され、少なくとも順序関係が指定された2つのパターンに対するマージ処理を行なう。このマージ処理の結果として、最終的なマージ結果の一部分が生成される。残りの部分としては、例えば、競合を解決したことに伴うより優先順位が低いパターンのソースコードの雛型の関連箇所の修正が、そのパターンマージ部54を介してパターン開発者により行われる。
図5は、パターン定義部を介して定義されたパターンの一例を示す図である。
図5に示すように、パターンは、カテゴリ、名前、観点、説明、などの各項目を含む。「カテゴリ」は、そのパターンが、分析パターン、設計パターン、実装パターンのいずれに相当するのかを示す。また、「観点」や「説明」は自然言語で記述されたドキュメントであり、パターン開発者や後述の一般開発者に必要に応じて参照される。なお、図からは定かでないが、パターン情報中には、この他に「定義」の項目が含まれ、その「定義」の項目には、図16、図17、などの図面に示されるパターン定義情報が含まれる。
図6は、パターン体系定義部を介して定義されたパターン体系の例(その1)を示す図である。
図6に示すように、パターン体系は、上位の分析パターンから、設計パターンを介し、下位の実装パターンまでを階層的に示したものであり、より具体的には、あるパターンを適用した後に考慮すべきソフトウェア開発上の観点と、その観点に対応する選択肢(ケース)、その選択肢を選んだことによって決定される次に適用すべきパターン、の3点によってその主要部分が構成されている。
図7は、パターン体系構築装置の動作を示すフローチャートである。
図7において、まず、パターン開発者によってパターン情報定義部が起動され、パターン情報の入力が行われる。そして、ステップS101で、パターン開発者により定義されたパターン情報がパターン情報格納部に格納される。このようにして定義された(格納された)パターンに対し、選択的にパターン適用の前提条件を設定することができる。その場合、ステップS102において、設定されたパターン適用前提条件が、パターン情報と対応付けられてパターン情報格納部に格納される。
格納パターン適用の前提条件としては、例えば、図8に示すように、「エンティティというステレオタイプを持つクラスがモデルに存在すること」、「エンティティというステレオタイプを持つクラスがパターンの$$Target$$に対応していること」、「パターン1によって生成されたObjectManagerクラスが存在すること」、などの情報、つまり、開発対象モデル上に存在すべきモデル要素の種類や構造、特性を指定する。ここで、「ステレオタイプ」とは、クラス(モデル)を分類する際の1つの識別子であり、また、「エンティティ」は、そのクラス(モデル)がDB等に格納すべき属性を有するクラスであることを示している。
パターン適用の前提条件の設定の有無を問わず、続いて、パターン開発者によってパターン体系定義部が起動される。そして、パターン開発者によって2つのパターンが指定されると共に、それら指定されたパターン間に順序関係が定義される。その場合、ステップS103において、定義された順序関係がパターン間関連情報格納部に格納される。
このようにして定義された順序関係に対し、選択的にパターンの対応関係(マッピング情報)を設定することができる。その場合、ステップS104において、パターンの対応関係が順序関係と対応付けられてパターン間関連情報格納部に格納される。なお、マッピング情報とは、後に適用するパターンのパラメータを先に適用するパターンのどの要素に対応付けるかを示す情報である。
次のステップS105では、ステップS103の順序関係、または、ステップS104の処理を行った場合は、ステップS104のパターンの対応関係も加味して、競合要素の検出・提示が行われる。
この検出・提示処理においては、例えば、パターン1とパターン2とに順序関係が定義されていた場合、パターン1の各モデル要素(クラス、メソッド、属性、関連など)と同じ要素がパターン2に存在するかを名前(メソッドの場合はシグニチャ、関連の場合は両端のロール名の対)でチェックし、存在する場合には、そのモデル要素のプロパティ(属性の場合は型や初期値など、メソッドの場合は可視性や返却値の型など)が一致するかチェックする。そして、一致しなければ、競合要素として提示する。
図9は、順序関係を定義しただけで競合要素が生じてしまうパターンの組の一例を示す図である。図9の上半分では、「パターン1を適用した後に、パターン2を適用する」という、ステップS103に対応する順序関係の定義が行われる。
ここで、パターン1とパターン2は共に「クラスXを付加する」というパターンであり、この場合、パターン1のクラスXのメソッド「+AOpe():Y」と、パターン2のクラスXのメソッド「+AOpe():Z」とが、同一のシグニチャのメソッドであるにもかかわらず、返却値の型がYとZとで一致していない。このような場合、図9の下半分に示すように、対応するモデル要素が強調して表示されると共に、「クラスXのAOpeメソッドが競合する」旨のメッセージが表示される。
ステップS105で検出された競合要素において競合が解決できる場合には、パターン開発者により解決方法が競合解決情報として設定される。その場合、ステップS106で、設定された競合解決情報が、順序関係と対応付けられてパターン間関連情報格納部に格納される。
なお、ステップS105で検出された競合要素において競合が解決されない場合も当然あり得るが、そのような場合には、マッピング情報が存在する場合は、マッピング情報を変更することを促すメッセージをパターン開発者に通知(画面に表示)させてもよいし、また、マッピング情報が存在しない場合には、そのような順序関係自体を指定できない旨を示すメッセージをパターン開発者に通知(画面に表示)させてもよい。
また、競合が解決可能な場合には、選択的に、ステップS107において、ステップS103で順序関係が定義されたパターン同士を1つのパターンにマージすることができる。
図10は、あるパターンの組を例にとって、順序関係の定義からマージまでの処理を説明する図である。
図10において、まず、パターン開発者からの指示により、2つのパターンがロードされる。そして、これらの間に順序関係が定義される。すなわち、「複数ドメインオブジェクトの格納」パターン(以下、前パターン)を適用した後に「金額集計処理」パターン(以下、後パターン)を適用することがパターン開発者の指示によって定義される。そして、その順序関係の定義に続いて、マッピング情報が指定される。この場合、後パターンの$$Target$$を前パターンの$$Target$$に、また、後パターンの$$attrlist$$を前パターンの$$attr$$に、それぞれマッピングする指定が行なわれることにより、そのマッピング情報が指定される。これらの指定された順序関係、マッピング情報に基づいて、パターン間競合検出部は、競合の検出・提示処理を行い、その処理結果として、例えば「get***メソッドの返却値の型が競合」というメッセージが提示される。
パターン開発者は、このメッセージを参照して、例えば、いずれか一方の型に返却値を揃えるか、別要素を双方の返却値に設定するかして、競合解決を行なう。いずれか一方の型に返却値を揃える場合、競合解決またはマージを行なうに際して、前パターンを後パターンに優先させるのか、後パターンを前パターンに優先させるのかに基づいて、いずれのパターンのメソッドの返却値にその競合要素の返却値を揃えるのかが決まる。図では、「前パターンの「get***メソッド」の返却値($$Type$$)を優先して、「get***メソッド」の返却値を設定する」という競合解決情報が設定される。そして、それらパターンをマージして得られる、「複数ドメインオブジェクトの格納+金額集計処理」パターンにおいても、その優先順位の関係から、例えば、後パターンの「集計処理(list:List):Money」のソースコードの雛型が修正される。なお、パラメータ「$$Type$$」は、メソッドの返却値が$$attrlist$$の属性値に対応することを示している。
以下、図11〜図13を用いて、別のパターンの組について、順序関係の定義からマージまでの処理を説明する。
図11は、パターン定義部を介して定義されたパターン体系の例(その2)を示す図である。
図11のパターン体系は、「観点:オブジェクトの一意性の特定」に対するパターン体系であり、この体系中には、設計パターン間に2つの順序関係が定義されている。すなわち、「ID付加パターン−D001」と「get付加パターン−D002」との間と、そして、「ID付加パターン−D001」と「XML化パターン−D003」との間とに、順序関係が定義されている。
図12は、図11に定義されたパターン間の順序関係のうちの1つをより具体的に説明する図である。
図12において、パターン1は、図11の「ID付加パターン−D001」に対応し、また、パターン2は、図11の「get付加パターン−D002」に対応する。
図中、“$$”が先頭と末尾に配置された文字列は、パラメータを示している。それらのパラメータは、通常行なわれるように、モデルへの適用(付加)時に、そのモデルに対応する、モデル名、モデルの属性、メソッド等が設定される。
例えば、“$$Target$$”は、パターンの適応対象となるモデル名が設定されるパラメータである。また、“$$attrlist$$”は、その適応対象のモデルがもつ全ての属性が設定可能なパラメータである。なお、図中で、例えば「#getId():int」という表記は、getIdというメソッド名を有するメソッドのスコープ(可視性)が“#(プロテクテッド)”で、そのメソッドの返却値が“int(整数型)”であることを示している。
図12の1段目において、「パターン1を適用した後にパターン2を適用する」という順序関係が、パターン1とパターン2に対してパターン開発者によって設定されたことが示されている。
図12の2段目では、1段目で行なわれた順序関係の設定に続いて、パターン1とパターン2において、「“$$attrlist$$”に“Id”を対応付ける」というマッピング情報がパターン開発者によって設定されたことが示されている。
その結果、図12の3段目に示すように、パターン2が生成する“get+属性”なる名称をもつメソッドとして、“getId”なる名称をもつメソッドが生成されるが、このメソッドと同じ名称のメソッドをパターン1も有している。そして、そのメソッドのスコープがパターン1では“#(プロテクテッド)”であるのに対して、パターン2では“+(パブリック)”であることから、この“getId”なる名称をもつメソッドが競合要素として特定され、4段目に示すように、競合要素に対応する箇所が強調して表示される。
図13は、図12のパターン1とパターン2とをマージする場合を説明する図である。
図13において、図12と同様に、「パターン1を適用した後にパターン2を適用する」という順序関係がパターン開発者によって定義され、続いて、「“$$attrlist$$”に“Id”を対応付ける」というマッピング情報がパターン開発者によって設定される。この結果、上記したように、“getId”というメソッドに競合が生じるが、「パターン1側のメソッドgetIdのスコープを“+(パブリック)”に設定する」というパターン2を優先する競合解決情報がパターン開発者によって指定され競合が解決される。
そして、パターン間の優先順位の関係から、パターン1の関連箇所が修正され、そのような競合解決情報を反映したパターン1とパターン2とがマージされて1つのパターン(合成されたパターン)が得られる。
なお、マージされたパターンは、パターン情報格納部55に1つのパターンとして格納されると共に、そのマージされたパターンが一部に用いられるパターン体系も、パターン開発者によって、必要に応じて、パターン体系定義部52を介して入力(構築)され、パターン関連情報格納部56に格納される。
続いて、再び図4に戻り、パターン適用装置について説明する。
図4のパターン適用装置は、パターン情報格納部55、パターン間関連情報格納部56、パターン体系ナビゲート部59、パターン適用部58、適用可能性判定部57、を備える。そして、オブジェクト指向ソフトウェアの開発を行なう一般開発者によって、そのソフトウェア開発の一部分としての開発対象モデルに対しパターンを適用する際に用いられる。
ここで、例えば、パターン情報格納部55には、パターン情報に対応して、上記のパターン適用前提条件が格納されている。また、パターン間関連情報格納部56には、2つのパターンに対して定義される順序関係が複数格納される。例えば、あるパターン体系は、それらの順序関係の一部から構成される。また、パターン間関連情報格納部56には、この他に、上記したマッピング情報や競合解決情報も一部の順序関係に対応して格納されている。
パターン体系ナビゲート部59は、一般開発者によって用いられるユーザインターフェイスである。一般開発者は、パターン体系ナビゲート部59を介してパターン適用部58を起動する。また、パターン体系ナビゲート部59では、パターン間に定義された複数の順序関係から導かれるパターン体系に従って利用すべきパターンを一般開発者にナビゲートしている。
パターン適用部58は、上記パターン情報格納部55に格納されているパターンを開発対象モデルに適用してそのモデルを詳細化する。開発対象モデルは、モデル格納部61に格納される。なお、ソースコードは、ソースコード格納部62に格納される。
図14は、適用対象のモデルに対して、すでに、先行して1つのパターンが適用されている場合に、2つ目のパターン適用を行なう場合の処理のフローチャートである。
図14において、一般開発者によって、適用対象モデルに対して適用する2つ目のパターンが指示される。その指示情報に基づいて、ステップS201において、パターン適用部が起動される。
ステップS202において、その2つ目のパターンに対応するパターン適用前提条件が存在するかが判定され、存在する場合は、ステップS203において、その2つ目のパターンのモデルへの適用が、そのパターン適用前提条件を満たしているかがパターン適用可能性判定部によって判定される。
ステップS203において、満たされていないと判定された場合、一連の処理を終了する。この場合は、その2つ目のパターンがそのモデルには適用できないことになる。
ステップS203において、パターン適用前提条件が満たされていると判定された場合、ステップS204に進み、前回適用パターンとの関連情報(順序関係)に競合解決情報があるか判定される。競合解決情報が存在する場合、ステップS205に進み、パターンの競合部分がその競合解決情報に従って変更される。そして、ステップS206に進む。
また、ステップS204で、競合解決情報が存在しないと判定された場合も、ステップS206に進み、そこで、2つ目のパターンが適用対象モデルに対して適用され、モデルの詳細化が行なわれる。
図15〜図17は、開発対象モデルに対し、図6のいずれかの設計パターンが適用される場合を説明する図である。なお、パターン体系ナビゲート部59は、同カテゴリに属し、順序関係が定義されたパターン間で上位の(先の、前の)パターンが指定された場合には、対応する下位の(次の、後の)パターンを続けて、一般開発者にナビゲートする。
まず、図15は、ある開発対象のモデルに対して、1つ目のパターンを適用する場合を説明する図である。
図15において、モデル格納部からパターン適用前の開発対象モデルが取得され、このモデルに対して、パターン情報格納部に格納されるパターンの1つ、ここでは、図6の設計パターンD001に対応する「複数ドメインオブジェクトの格納」パターン(以下、前パターン)が適用される。この前パターンは開発対象モデルに適用された場合には、複数のドメインオブジェクトからデータを取得し、それらをRDBに格納するクラスとメソッドとがその開発対象モデルに追加される。図では、このようなクラスとして「$$Target$$複数一括格納クラス」が、また、このようなメソッドとして「insert()メソッド」が、それぞれ示されている。また、「insert()メソッド」に対応するソースコードも示されている。
適用時には、前パターンのパラメータである$$Target$$、$$attrList$$に対して、パターン体系ナビゲート部により示される入力画面中から、以下のような設定が一般開発者によって入力される。
$$Target$$=受注伝票
$$attrList$$=商品、個数、金額
この設定に対応して、開発対象モデルに対して前パターンが適用され、図の左下部分に示すように、開発対象モデルに、受注伝票一括格納クラスとそのクラスが有する「insertメソッド()」追加される。また、その「insert()メソッド」においては、対応するソースコード上に、上記の設定に伴う変化が反映される。
図16は、図15の1つ目のパターンが適用済みの開発対象のモデルに対して、2つ目のパターンを適用する場合を説明する図である。
図16において、モデル格納部から取得された開発対象モデルには、図15を参照して説明した方法により、既に、1つ目のパターンが適用されている。この1つ目のパターン適用済みのモデルに対して、図6のパターン体系に基づいて、パターン体系ナビゲート部によって、2つ目のパターンとして、図6の設計パターンD003に対応する「集計処理」パターン(以下、後パターン)が適用される。
この後パターンは開発対象モデルに適用された場合には、複数のドメインオブジェクトから任意のメソッドで取得されるデータを取得し、それらを合算するクラスとメソッドをその開発対象モデルに追加する。図では、このようなクラスとして「$$Target$$集計クラス」が、また、このようなメソッドとして「集計処理()メソッド」が、それぞれ示されている。また、「集計処理()メソッド」に対応するソースコードも示されている。
適用時には、後パターンのパラメータである$$Target$$、$$operation$$に対して、パターン体系ナビゲート部により示される入力画面中から、以下のような設定が一般開発者によって入力される。
$$Target$$=受注伝票
$$attrList$$=get金額()
この設定に対応して、前パターン適用済みの開発対象モデルに対して後パターンが適用され、図の左下部分に示すように、前パターン適用済みの開発対象モデルに、受注伝票集計クラスと、そのクラスが有する「集計処理()メソッド」とが追加される。また、その「集計処理()メソッド」においては、対応するソースコード上に、上記の設定に伴う変化が反映される。
図17は、別の開発対象のモデルに対して、1つのパターンを適用する場合を説明する図である。
図17において、モデル格納部からパターン適用前の開発対象モデルが取得され、このモデルに対して、パターン情報格納部に格納されるパターンの1つ、ここでは、図6の設計パターンD002に対応する「単数ドメインオブジェクトの格納」パターンが適用される。このパターンは開発対象モデルに適用された場合には、一つのドメインオブジェクトからデータを取得し、それらをRDBに格納するクラスとメソッドとがその開発対象モデルに追加される。図では、このようなクラスとして「$$Target$$単件格納クラス」が、また、このようなメソッドとして「insert2()メソッド」が、それぞれ示されている。また、「insert2()メソッド」に対応するソースコードも示されている。
適用時には、「単数ドメインオブジェクトの格納」パターンのパラメータである$$Target$$、$$attrList$$に対して、パターン体系ナビゲート部により示される入力画面中から、以下のような設定が一般開発者によって入力される。
$$Target$$=受注一括伝票
$$attrList$$=商品、個数、金額
この設定に対応して、開発対象モデルに対して「単数ドメインオブジェクトの格納」パターンが適用され、図の左下部分に示すように、開発対象モデルに、受注一括伝票単件格納クラスが追加され、そのクラスにRDBへの格納処理を行う「insert2()メソッド」が追加される。また、その「insert2()メソッド」においては、対応するソースコード上に、上記の設定に伴う変化が反映される。
なお、図に示されるように、受注一括伝票(のモデル)に追加される「get***メソッド」は、「***」にて示される属性の配列の何番目のデータを取得するかを指定するための引数をもつ。さらに、受注一括伝票(のモデル)には、配列の件数を表す属性(図中、「件数」にて示される)と、その件数を取得するための「get件数()メソッド」が追加される。
図18は、図15の1つ目のパターンが適用済みの開発対象のモデルに対して、図16とは異なる2つ目のパターンを適用する場合を説明する図である。
図18において、モデル格納部から取得された開発対象モデルには、図15を参照して説明した方法により、既に、1つ目のパターンが適用されている。この1つ目のパターン適用済みのモデルに対して、右側部分に示すように、図16とは異なる2つ目のパターンが適用される。これにより、2つ目のパターンを適用後のモデルでは、「get金額()メソッド」の返却値が「Money」型となる。
2つ目のパターンを適用前の、すなわち、1つ目のパターンを適用済みのモデルでは、「get金額()メソッド」の返却値は「int」型であったので、この「get金額()メソッド」の返却値において競合が生じることとなる。
このような競合に対して、例えば、上記特許文献3に開示される従来技術においては、一般開発者が競合が発生するか否かを判断していた。そして、競合要素が見つかり、その競合が解決した後も、モデルの詳細化の過程において、そのモデルに対応するソースコードも必要に応じて、例えば、前パターンと後パターンとの優先順位に基づいて、書き換える作業も一般開発者は行なっていた。
一方、本実施形態においては、競合が生じる場合については、パターン開発の時点において、それらのパターン間に対して、上記した競合解決情報が、それらパターン間の順序関係と対応付けられてパターン情報格納部に格納されている場合がある。そのような場合には、パターン適用部によって、2つ目のパターンの適用時に、その競合解決情報が自動的に反映される。よって、パターンを効率よく適用することが可能となる。
なお、パターンマージ部によって、対応する順序関係について、マージ処理が既に行なわれていた場合には、パターン適用部によって1つ目のパターン適用時に、その旨が一般開発者に提示される。この場合、例えば、パターン間の優先順位に基づくソースコードの雛型の修正作業についても、そのマージ処理時に修正済みであり、一般開発者は適用時にそのような修正を行なう必要がなくなる。
例えば、図6の設計パターンD001とD003とがすでにマージ済みである場合、開発対象モデルへの設計パターンD001の適用時に「D001とD003とをマージしたパターンが存在する」旨が、パターン体系ナビゲート部により一般開発者に提示されるので、そのような情報の提示を受けた一般開発者側としては、例えば、パターンD001とD003を続けて適用する場合には、「マージされたパターンを用いる」旨を示す指示をパターン体系ナビゲート部を介して与えることにより、開発対象モデルに対して「マージされたパターン」が適用される。よって、個々のパターンを個別に適用する場合に発生する、上述のソースコードの修正作業等が必要なくなり、パターンを効率よく適用することが可能となる。
なお、図6では、パターンD001の直後に設けられた観点に対応する選択肢(ケース)は1つ(パターンD003)しかないため、パターンD001の適用時に「D001とD003とをマージしたパターンが存在する」旨が提示されていたが、選択肢が複数ある場合、例えば、パターンD001の直後に設けられた観点に対応する選択肢が2つある場合は、それらマージパターンのリストが一覧表示される。一般開発者は、マージパターンを用いる場合には、その一覧中のいずれかのマージパターンを選択し、または、マージを行なわない場合はどのマージパターンも選択しない指示をパターン体系ナビゲート部を介して行なう。
図19は、パターン適用の前提条件に従って、パターン適用上の誤りを回避する場合を説明する図である。
図19において、開発対象モデルに対して、「単数ドメインオブジェクトの格納」パターンを適用しようとした場合に、適用可能性判定部は、そのパターンに対応付けられて、パターン情報格納部に格納されているパターン適用前提条件を参照し、その開発対象モデルへのそのパターンの適用が、そのパターン適用前提条件を満たすかを判定する。図においては、「単数ドメインオブジェクトの格納」パターンをモデルに適用するに際しては、適用対象のモデル(クラス)が「エンティティ」というステレオタイプをもつと共に、そのモデル(クラス)の全ての属性が配列でなければならない、というパターン適用前提条件が示されている。これにより、一般開発者の、例えば、理解不足等による誤ったパターン適用を回避することができる。
図20は、本発明のオブジェクト指向ソフトウェア開発支援装置やパターン体系定義装置を含むオブジェクト指向ソフトウェア開発支援装置における各開発者の作業分担を説明する図(その1)である。
図20においては、上記説明において、「パターン開発者」とされていたものが、より細かく「パターン部品開発者」と「アーキテクト」とに分けられている。
ここで、「パターン部品開発者」は、本実施形態における、競合検出処理を行う元となるパターン部品を専ら開発する。また、「アーキテクト」は、パターン部品を開発すると共に、開発されたパターン部品から2つのパターンを指定することにより、パターン間の順序関係を定義する作業を行なう。例えば、その2つのパターンの指定によって、パターン間競合検出部が起動され、上記した競合検出処理が行われる。競合検出処理の結果として、例えば、上記した競合解決情報が、パターン間関連情報格納部に格納される。
「一般開発者」は、パターン体系ナビゲート部を介して、開発対象モデルにパターンを順次、適用する。この開発対象モデルとパターンとの指定に対応してパターン適用部が起動される。パターン適用部は、例えば、開発対象モデルへの2つ目のパターンの適用において、対応する順序関係に競合解決情報が設定されていた場合は、その競合解決情報を反映して、その2つ目のパターンの開発対象モデルへの適用が行なわれる。
図21は、本発明のオブジェクト指向ソフトウェア開発支援装置やパターン体系定義装置を含むオブジェクト指向ソフトウェア開発支援装置における各開発者の作業分担を説明する図(その2)である。
図21においては、図20との相違点を主に説明する。図21では図20と比較して、パターンマージ部が追加されている。上記説明との関係では、このパターンマージ部を用いた(順序関係が指定された)パターン間のマージ作業は、「アーキテクト」によって行なわれる。
図22は、プログラムのローディングを説明する図である。
図22に示されるように、本発明のソフトウェア開発支援装置は当然一般的なコンピュータシステムによって実現することが可能であるが、そのようなコンピュータ85は基本的には本体86とメモリ87とから構成される。可搬型記憶媒体89から本発明の処理のためのプログラムなどをメモリ87にロードして実行することも、またプログラム提供者側からネットワーク88を介して本発明の処理のためのプログラムなどをメモリ87にロードして実行することも可能である。
本発明は下記構成でもよい。
(付記1) オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部と、
前記複数のパターンのうちの2つのパターンに対して順序関係を定義することを可能としたパターン体系定義部と、
該複数のパターンのうちの2つのパターンに対して定義された順序関係を格納するパターン間関連情報格納部と、
該定義された順序関係において、競合要素を検出するパターン間競合検出部と、を備え、
前記パターン定義部は、前記パターン間競合検出部を起動可能としたことを特徴とするパターン体系構築装置。
(付記2) 前記パターン体系定義部は、先に適用するパターンによって生成されるモデル要素を、次に適用するパターンのパラメータとして用いるというマッピング情報を定義することができると共に、該定義されたマッピング情報を前記順序関係と対応付けて前記パターン間関連情報格納部に格納することを可能とし、
前記パターン間競合検出部は、該マッピング情報を加味して競合検出を行うことを特徴とする付記1記載のパターン体系定義装置。
(付記3) 前記パターン体系定義部は、解決可能な競合要素に対して競合解決情報を指定することができ、かつ、該指定された競合解決情報を前記順序関係と対応付けて前記パターン間関連情報格納部に格納することを可能としたことを特徴とする付記1記載のパターン体系定義装置。
(付記4) 順序関係が定義された2つのパターンに対してマージ処理を行うことが可能なパターンマージ部をさらに備えることを特徴とする付記1記載のパターン体系構築装置。
(付記5) オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部と、
該複数のパターンのうちの2つのパターンに対して定義された複数の順序関係を格納すると共に、前記順序関係における解決可能な競合要素に対して指定された競合解決情報を前記順序関係と対応付けて格納することが可能なパターン間関連情報格納部と、
前記パターン情報格納部に格納されているパターンを開発対象モデルに適用して該モデルを詳細化するパターン適用部と、
前記開発対象モデルとパターンとを指定して前記パターン適用部を起動することが可能なパターン体系ナビゲート部と、を備えることを特徴とするパターン適用装置。
(付記6) 前記パターン適用部は、前記開発対象モデルに2つのパターンを適用するに際して、それら2つのパターンに対応する競合解決情報の有無を判定する判定部を含み、該競合解決情報が存在すると判定された場合に、前記競合解決情報を反映して適用を行うことを特徴とする付記5記載のパターン適用装置。
(付記7) 前記パターン情報格納部は、パターンを適用する際の前提条件を示すパターン適用前提条件を前記パターンと対応付けてさらに格納し、
前記開発対象モデルに前記パターンを適用するに際して、前記パターン適用前提条件に基づいて、適用可否を判定する適用可能性判定部を更に備えることを特徴とする付記5記載のパターン適用装置。
(付記8) 前記パターン間関連情報格納部は、順序関係が定義された2つのパターンをマージして得られるパターンの情報を該順序関係と対応付けて格納し、
前記パターン体系ナビゲート部は、前記開発対象モデルに2つのパターンを適用する場合、それら2つのパターンに対応するマージパターンが前記パターン情報格納部内に存在するか否かを判定し、存在する場合には、そのマージパターンを前記開発対象モデルに適用するか否かを決定させることを促す情報を利用者に提示することを特徴とする付記5記載のパターン適用装置。
(付記9) 前記パターン体系ナビゲート部は、前記パターン間関連情報格納部に格納された1以上の順序関係から生成されたパターン体系に基づいてナビゲーションを行うと共に、前記順序関係の上位のパターンが指定されたときに、その上位パターンと、対応する1以上の下位のパターンとからなる各順序関係において、マージパターンが前記パターン情報格納部内に存在するか否かを判定し、存在する場合には、対応する1以上のマージパターンのいずれを前記開発対象モデルに適用するのか、又は、いずれのマージパターンも適用しないのかを決定することを促す情報を利用者に提示することを特徴とする付記8記載のパターン適用装置。
(付記10) オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部と、
前記複数のパターンのうちの2つのパターンに対して順序関係を定義することを可能としたパターン体系定義部と、
該複数のパターンのうちの2つのパターンに対して定義された順序関係を格納するパターン間関連情報格納部と、
該定義された順序関係において、競合要素を検出するパターン間競合検出部と、を備え、
前記パターン定義部は、前記パターン間競合検出部を起動可能とすると共に、解決可能な競合要素に対して競合解決情報を指定することができ、かつ、該指定された競合解決情報を前記順序関係と対応付けて前記パターン間関連情報格納部に格納することを可能とし、
前記パターン情報格納部に格納されているパターンを開発対象モデルに適用して該モデルを詳細化するパターン適用部と、
前記開発対象モデルとパターンとを指定して前記パターン適用部を起動することが可能なパターン体系ナビゲート部と、を更に備えることを特徴とするオブジェクト指向ソフトウェア開発支援装置。
(付記11) オブジェクト指向ソフトウェアの開発支援に用いられるパターン間の競合を検出する処理をコンピュータに実現させるためのプログラムにおいて、
前記コンピュータの記憶手段に格納されている複数のパターンの内から順序関係が定義された2つのパターンに対して、競合要素を検出する処理を前記コンピュータに実行させることを特徴とする競合要素検出プログラム。
(付記12) オブジェクト指向ソフトウェアの開発支援に用いられる開発対象モデルにパターンを適用する処理をコンピュータに実現させるためのプログラムにおいて、
前記開発対象モデルに2つのパターンを適用する場合に、適用された2つのパターンに対応する競合解決情報の有無を判定する処理と、
該競合解決情報が存在すると判定された場合に、前記競合解決情報を反映して前記開発対象モデルへの適用を行う処理と、を前記コンピュータに実行させることを特徴とするパターン適用プログラム。
(付記13) オブジェクト指向ソフトウェアの開発支援に用いられる開発対象モデルにパターンを適用する際のナビゲーション処理をコンピュータに実現させるためのプログラムにおいて、
前記コンピュータの記憶手段に格納された1以上の順序関係からパターン体系を生成する処理と、
前記順序関係の上位のパターンが指定されたときに、前記パターン体系に基づいて、その上位パターンと、対応する1以上の下位のパターンとからなる各順序関係において、マージパターンが前記コンピュータの記憶手段内に存在するか否かを判定する処理と、
存在する場合には、対応する1以上のマージパターンのいずれを前記開発対象モデルに適用するのか、又は、いずれのマージパターンも適用しないのかを利用者に決定させることを促す情報を前記コンピュータの表示手段に表示させる処理と、を前記コンピュータに実行させることを特徴とするパターン適用ナビゲーションプログラム。
(付記14) オブジェクト指向ソフトウェアの開発支援を行うプログラムであって、複数のパターンのうちから順序関係が定義された2つのパターンに対して、競合要素を検出する処理と、
前記競合要素の競合解決情報を格納する処理と、
開発対象モデルに2つのパターンを適用する際に前記競合解決情報が存在するときに前記競合解決情報を反映して適用を行う処理と、をコンピュータに実行させることを特徴とするソフトウェア開発支援プログラム。
本発明の第1態様のパターン体系構築装置の構成を示すブロック図である。 本発明の第2態様のパターン適用装置の構成を示すブロック図である。 本発明の第2態様のパターン適用装置の変形例の構成を示すブロック図である。 本発明の一実施形態のオブジェクト指向ソフトウェア開発支援装置の構成を示す図である。 パターン定義部を介して定義されたパターンの一例を示す図である。 パターン体系定義部を介して定義されたパターン体系の例(その1)を示す図である。 パターン体系構築装置の動作を示すフローチャートである。 パターン適用前提条件の一例を示す図である。 順序関係を定義しただけで競合要素が生じてしまうパターンの組の一例を示す図である。 あるパターンの組を例にとって、順序関係の定義からマージまでの処理を説明する図である。 パターン定義部を介して定義されたパターン体系の例(その2)を示す図である。 図11に定義されたパターン間の順序関係のうちの1つをより具体的に説明する図である。 図12のパターン1とパターン2とをマージする場合を説明する図である。 適用対象のモデルに対して、すでに、先行して1つのパターンが適用されている場合に、2つ目のパターン適用を行なう場合の処理のフローチャートである。 ある開発対象のモデルに対して、1つ目のパターンを適用する場合を説明する図である。 図15の1つ目のパターンが適用済みの開発対象のモデルに対して、2つ目のパターンを適用する場合を説明する図である。 別の開発対象のモデルに対して、1つのパターンを適用する場合を説明する図である。 図15の1つ目のパターンが適用済みの開発対象のモデルに対して、図16とは異なる2つ目のパターンを適用する場合を説明する図である。 パターン適用の前提条件に従って、パターン適用上の誤りを回避する場合を説明する図である。 本発明のオブジェクト指向ソフトウェア開発支援装置における各開発者の作業分担を説明する図(その1)である。 本発明のオブジェクト指向ソフトウェア開発支援装置における各開発者の作業分担を説明する図(その2)である。 プログラムのローディングを説明する図である。
符号の説明
11,21,55 パターン情報格納部
12,52 パターン体系定義部
13,53 パターン間競合検出部
14,22,56 パターン間関連情報格納部
23,58 パターン適用部
24,59 パターン体系ナビゲート部
25,57 適用可能性判定部
61 モデル格納部
62 ソースコード格納部

Claims (9)

  1. オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部と、
    前記複数のパターンのうちの2つのパターンに対して順序関係を定義する、パターン体系定義部と、
    該複数のパターンのうちの2つのパターンに対して定義された、パターン間の順序関係を格納するパターン間関連情報格納部と、
    該定義されたパターン間順序関係において、前記2つのパターンの各々が持つ要素同士が競合する場合に、その競合する要素の双方のことを競合要素として検出する、パターン間競合検出部と、
    を備え、
    前記パターンは、複数のデータ要素を含んだデータ構造であり、
    前記複数のデータ要素の各々は、名前およびプロパティを有し、
    前記パターン間競合検出部は、前記2つのパターンの各々が持つデータ要素同士について、各々のパターン内でのデータ要素同士が、名前が同じであってプロパティが一致しない場合に、競合するとみなし、
    前記パターン体系定義部は、利用者が入力手段を用いて前記2つのパターン指定したときに、前記パターン間競合検出部を起動して、表示手段に前記競合要素を表示させる
    ことを特徴とするパターン体系構築装置。
  2. 前記パターン体系定義部は、先に適用するパターンによって生成されるモデル要素を、次に適用するパターンのパラメータとして用いるというマッピング情報を定義すると共に、該定義されたマッピング情報を前記順序関係と対応付けて前記パターン間関連情報格納部に格納し、
    前記パターン間競合検出部は、該マッピング情報にしたがって、後に適用するパターンのパラメータを先に適用するパターンによって生成された要素の中から決定して競合検出を行う
    ことを特徴とする請求項1記載のパターン体系構築装置。
  3. 前記パターン体系定義部は、解決可能な競合要素に対して競合解決情報を指定し、かつ、該指定された競合解決情報を前記順序関係と対応付けて前記パターン間関連情報格納部に格納し、
    前記競合解決情報は、データ要素がメソッドであるときに、メソッドの返却値の型を揃えることもしくは別要素を双方の返却値に設定すること、またはメソッドのスコープを揃えることを記載したものである
    ことを特徴とする請求項1記載のパターン体系構築装置。
  4. 順序関係が定義された2つのパターンに対してマージ処理を行う、パターンマージ部をさらに備えることを特徴とする請求項1記載のパターン体系構築装置。
  5. オブジェクト指向ソフトウェアの開発に利用可能な複数のパターンを格納するパターン情報格納部と、
    該複数のパターンのうちの2つのパターンに対して定義された複数のパターン間順序関係を格納すると共に、前記順序関係における解決可能な競合要素に対して指定された競合解決情報を前記順序関係と対応付けて格納する、パターン間関連情報格納部と、
    ソフトウェアである開発対象モデルを格納する、モデル格納部と、
    前記2つのパターンに対応する競合解決情報が存在するかどうかを判断したうえで、前記パターン情報格納部に格納されている前記2つのパターンを、前記2つのパターンに対応する競合解決情報が存在するときに、前記競合解決情報を反映して前記開発対象モデルに付加して該モデルを詳細化するパターン適用部と、
    前記開発対象モデルとパターンとを指定して前記パターン適用部を起動する、パターン体系ナビゲート部と、
    表示手段と、
    利用者が指示を入力するための、入力手段と、
    を備え、
    前記パターンは、複数のデータ要素を含んだデータ構造であり、
    前記複数のデータ要素の各々は、名前およびプロパティを有し、
    前記2つのパターンの各々が持つデータ要素同士が競合する場合に、その競合するデータ要素の双方のことを競合要素と定め、
    前記2つのパターンの各々が持つデータ要素同士について、名前が同じであってプロパティが一致しない場合に、競合するとみなし、
    前記競合解決情報は、データ要素がメソッドであるときに、メソッドの返却値の型を揃えることもしくは別要素を双方の返却値に設定すること、またはメソッドのスコープを揃えることを記載したものであり、
    前記パターン情報格納部は、順序関係が定義された2つのパターンをマージして得られるパターンの情報を該順序関係と対応付けて格納し、
    前記パターン体系ナビゲート部は、前記開発対象モデルに2つのパターンを適用する場合、それら2つのパターンに対応するマージパターンが前記パターン情報格納部内に存在するか否かを判定し、存在する場合には、そのマージパターンを前記開発対象モデルに適用するか否かを利用者が前記入力手段を介して決定させることを促す情報を、前記表示手段を介して利用者に提示する
    ことを特徴とするパターン適用装置。
  6. 前記パターン情報格納部は、パターンを適用する際の前提条件を示すパターン適用前提条件を前記パターンと対応付けてさらに格納し、
    前記開発対象モデルに前記パターンを適用するに際して、前記パターン適用前提条件に基づいて、適用可否を判定する適用可能性判定部を更に備えることを特徴とする請求項5記載のパターン適用装置。
  7. オブジェクト指向ソフトウェアの開発支援に用いられるパターン間の競合を検出する処理をコンピュータに実現させるためのプログラムであって、前記コンピュータは、表示手段と、利用者が指示を入力するための入力手段と、記憶手段とを含んでおり、前記プログラムが、
    前記コンピュータの前記記憶手段に格納されている複数のパターンの内からパターン間順序関係が定義された2つのパターンに対して、前記2つのパターンの各々が持つ要素同士が競合する場合に、その競合する要素の双方のことを競合要素として検出する処理と、
    前記利用者が前記入力手段を用いて前記2つのパターン指定したときに、前記競合要素を前記表示手段に表示させる処理と
    を前記コンピュータに実行させることを含み、
    前記パターンは、複数のデータ要素を含んだデータ構造であり、
    前記複数のデータ要素の各々は、名前およびプロパティを有し、
    前記2つのパターンの各々が持つデータ要素同士について、各々のパターン内でのデータ要素同士が、名前が同じであってプロパティが一致しない場合に、競合するとみなす
    ことを特徴とする競合要素検出プログラム。
  8. オブジェクト指向ソフトウェアの開発支援に用いられる開発対象モデルにパターンを適用する処理をコンピュータに実現させるためのプログラムであって、前記コンピュータは、表示手段と、利用者が指示を入力するための入力手段とを含んでおり、前記プログラムが、
    前記開発対象モデルに2つのパターンを適用する場合に、適用された2つのパターンに対応する該競合解決情報が存在するときに、前記競合解決情報を反映して前記開発対象モデルへの適用を行う処理と、
    前記利用者が前記入力手段を用いて前記2つのパターン指定したときに、前記競合解決情報を前記表示手段に表示させる処理と
    を前記コンピュータに実行させる
    ことを含み、
    前記パターンは、複数のデータ要素を含んだデータ構造であり、
    前記複数のデータ要素の各々は、名前およびプロパティを有し、
    前記開発対象モデルは、前記コンピュータの有するモデル格納部に格納されたソフトウェアであり、
    前記競合解決情報は、データ要素がメソッドであるときに、メソッドの返却値の型を揃えることもしくは別要素を双方の返却値に設定すること、またはメソッドのスコープを揃えることを記載したものである
    ことを特徴とするパターン適用プログラム。
  9. コンピュータを用いてオブジェクト指向ソフトウェアの開発支援を行うプログラムであって、前記コンピュータは、表示手段と、利用者が指示を入力するための入力手段とを含んでおり、前記プログラムが、
    複数のパターンのうちからパターン間順序関係が定義された2つのパターンに対して、競合要素を検出する処理と、
    前記競合要素の競合解決情報を格納する処理と、
    開発対象モデルに2つのパターンを適用する際に前記競合解決情報が存在するときに前記競合解決情報を反映して適用を行う処理と、
    前記利用者が前記入力手段を用いて前記2つのパターン指定したときに、前記競合要素を前記表示手段に表示させる処理と
    前記コンピュータに実行させる
    ことを含み、
    前記パターンは、複数のデータ要素を含んだデータ構造であり、
    前記複数のデータ要素の各々は、名前およびプロパティを有し、
    前記競合要素は、前記定義されたパターン間順序関係において、前記2つのパターンの各々が持つデータ要素同士が競合する場合に、その競合するデータ要素の双方のことであり、
    前記2つのパターンの各々が持つデータ要素同士について、名前が同じであってプロパティが一致しない場合に、競合するとみなし、
    前記開発対象モデルは、前記コンピュータの有するモデル格納部に格納されたソフトウェアであり、
    前記競合解決情報は、データ要素がメソッドであるときに、メソッドの返却値の型を揃えることもしくは別要素を双方の返却値に設定すること、またはメソッドのスコープを揃えることを記載したものである
    ことを特徴とするソフトウェア開発支援プログラム。
JP2004064669A 2004-03-08 2004-03-08 パターン体系構築装置、パターン適用装置およびプログラム、競合要素検出プログラム、ならびにソフトウェア開発支援プログラム Expired - Fee Related JP4393893B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004064669A JP4393893B2 (ja) 2004-03-08 2004-03-08 パターン体系構築装置、パターン適用装置およびプログラム、競合要素検出プログラム、ならびにソフトウェア開発支援プログラム
US11/016,756 US20050198616A1 (en) 2004-03-08 2004-12-21 Pattern system generation apparatus and pattern application apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004064669A JP4393893B2 (ja) 2004-03-08 2004-03-08 パターン体系構築装置、パターン適用装置およびプログラム、競合要素検出プログラム、ならびにソフトウェア開発支援プログラム

Publications (2)

Publication Number Publication Date
JP2005251127A JP2005251127A (ja) 2005-09-15
JP4393893B2 true JP4393893B2 (ja) 2010-01-06

Family

ID=34909369

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004064669A Expired - Fee Related JP4393893B2 (ja) 2004-03-08 2004-03-08 パターン体系構築装置、パターン適用装置およびプログラム、競合要素検出プログラム、ならびにソフトウェア開発支援プログラム

Country Status (2)

Country Link
US (1) US20050198616A1 (ja)
JP (1) JP4393893B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060265697A1 (en) * 2005-05-20 2006-11-23 Sun Microsystems, Inc. Pattern query language
US20060265700A1 (en) * 2005-05-20 2006-11-23 Sun Microsystems, Inc. Method and apparatus for pattern-based system design analysis
US7634766B2 (en) * 2005-05-20 2009-12-15 Sun Microsystems, Inc. Method and apparatus for pattern-based system design analysis using a meta model
US8010938B2 (en) * 2006-11-27 2011-08-30 International Business Machines Corporation Computer method and system for pattern specification using meta-model of a target domain
US10372443B2 (en) * 2016-10-18 2019-08-06 Oracle International Corporation Multi-platform pattern-based user interfaces

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3765949B2 (ja) * 1999-02-17 2006-04-12 富士通株式会社 オブジェクト指向ソフトウェア開発支援装置および開発支援方法
US6678882B1 (en) * 1999-06-30 2004-01-13 Qwest Communications International Inc. Collaborative model for software systems with synchronization submodel with merge feature, automatic conflict resolution and isolation of potential changes for reuse
US7322025B2 (en) * 2001-07-17 2008-01-22 Tata Consultancy Services Limited Method and apparatus for versioning and configuration management of object models
US6904588B2 (en) * 2001-07-26 2005-06-07 Tat Consultancy Services Limited Pattern-based comparison and merging of model versions

Also Published As

Publication number Publication date
JP2005251127A (ja) 2005-09-15
US20050198616A1 (en) 2005-09-08

Similar Documents

Publication Publication Date Title
US7761786B2 (en) Reusable XPath validation expressions
US6651240B1 (en) Object-oriented software development support apparatus and development support method
JP5174468B2 (ja) 自動ビジネスプロセスアプリケーションを設計するための統合システム、ツールおよび方法
US7080303B2 (en) Method and system for computer based testing using plugins to expand functionality of a test driver
US7475289B2 (en) Test manager
US20050235260A1 (en) User interface application development device and development method
CN108762743B (zh) 一种数据表操作代码生成方法及装置
EP2530583A1 (en) Computer-implemented method, system and computer program product for displaying a user interface component
US20090125875A1 (en) Method for manufacturing a final product of a target software product
US20070061740A1 (en) Content based user interface design
US7895575B2 (en) Apparatus and method for generating test driver
US7475388B2 (en) Method and apparatus for defining and instrumenting reusable java server page code snippets for website testing and production
JP4393893B2 (ja) パターン体系構築装置、パターン適用装置およびプログラム、競合要素検出プログラム、ならびにソフトウェア開発支援プログラム
US11947441B2 (en) Visual testing of implemented product code from a codified user experience design
US7620937B2 (en) System and method for debugging programs
JP5758311B2 (ja) テストコード生成装置、テストコード生成方法、テストコード生成プログラム
JP5504212B2 (ja) テストケース自動生成システム、テストケース自動生成方法、およびテストケース自動生成プログラム
US8938707B2 (en) Method and system for creating an executable verification plan
Glória et al. xOOHDM: Integrated development environment for creating and executing models in Web applications design
JP2007066204A (ja) ソフトウエア開発支援システム
JP5243908B2 (ja) モデルの品質を検証するためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
JP2006099452A (ja) Si対象ファイルおよびsi関連ファイル管理システム
Freeman Testing ASP. NET Core Applications
Verma Developing Real-World Extensions for Visual Studio Editor
JPH09237180A (ja) ソフトウェア設計支援装置及びソフトウェア設計方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090512

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090804

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090910

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091013

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091014

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121023

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121023

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131023

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees