JP5189880B2 - クラス構造生成方法、クラス構造生成プログラムおよびクラス構造生成装置 - Google Patents

クラス構造生成方法、クラス構造生成プログラムおよびクラス構造生成装置 Download PDF

Info

Publication number
JP5189880B2
JP5189880B2 JP2008096647A JP2008096647A JP5189880B2 JP 5189880 B2 JP5189880 B2 JP 5189880B2 JP 2008096647 A JP2008096647 A JP 2008096647A JP 2008096647 A JP2008096647 A JP 2008096647A JP 5189880 B2 JP5189880 B2 JP 5189880B2
Authority
JP
Japan
Prior art keywords
class
information
input
service interface
relationship
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
JP2008096647A
Other languages
English (en)
Other versions
JP2009251769A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008096647A priority Critical patent/JP5189880B2/ja
Publication of JP2009251769A publication Critical patent/JP2009251769A/ja
Application granted granted Critical
Publication of JP5189880B2 publication Critical patent/JP5189880B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、クラス構造生成方法、クラス構造生成プログラムおよびクラス構造生成装置の技術に関する。
ソフトウェア開発においては、開発対象を論理的なモジュールに分割して行うことが多い。特に近年では、プログラムとして実装される機能単位であるコンポーネント(モジュール)と、その機能を外部のコンポーネントから利用できるようにするためのサービスインタフェースなどでソフトウェアを構成する開発方法が注目されている。このように、開発対象をコンポーネントに分割することをコンポーネント分割と呼ぶ。
コンポーネント分割を行ってからソフトウェアを開発する利点として、プログラムの変更による影響が他の箇所へ波及することを極力避けることができるという点や、開発したコンポーネント単位で他のソフトウェアに再利用できる点が挙げられる。
コンポーネント分割の指針としては、同一の機能を1つのコンポーネントに集約し、その機能の変更によって起こる変更箇所を最小限に抑えるというものや、コンポーネント間の関係を疎にすることで、コンポーネント内部の変更の影響が他のコンポーネントに波及することを抑え、また、コンポーネントの独立性を高めて再利用を可能にするといったものがある。
コンポーネント分割の後、ソフトウェア開発設計者(以下、設計者と記載)は、コンポーネント分割で定義したサービスインタフェースやテーブル、およびそれらの間の関係を制約としてコンポーネント内部の設計を行う。オブジェクト指向設計などにおいて、コンポーネント内部の機能は、機能の最小単位であるメソッドを複数有するクラスという単位の集合で構成される。すなわち、コンポーネント内部の設計とはクラス構造の設計である。ここで、サービスインタフェースとは、コンポーネント内部の機能を、コンポーネント外部から使用するためのインタフェースである。
特許文献1では、設計者が入力したユースケースの記述に含まれる情報を解釈し、その解釈から得た情報と設計者が設計したデータ構造に関する情報から、クラス構造の設計を行う技術が開示されている。ここで、ユースケースとは自然言語によって記述されるソフトウェア開発の対象となるシステムの機能単位を表す。なお、特許文献1では、本明細書における「クラス」の意味で「オブジェクト」が用いられている。
特開平10−240510号公報
コンポーネント分割の指針として、同一機能の集約とコンポーネント間の疎結合とについて挙げたが、これらは同時に成立しない場合も存在する。例えば、集約した同一の機能が他のコンポーネントから何度も利用される機能である場合には、コンポーネント間の関係が増えて結合が強くなってしまう場合などが該当する。そのため、コンポーネント間の結合が密になることを避けるために、同一な機能や類似した機能が複数のコンポーネントにまたがって存在することが避けられない場合もある。
コンポーネント分割の後、同一の機能や類似した機能はそれぞれのコンポーネントで実装されるが、こうした機能に変更がある場合には、変更箇所や変更手順が、スムーズに把握できることが望まれる。そのために、コンポーネント内部の機能の実装の方法、つまりクラス構成は、コンポーネント内部だけではなく開発対象のソフトウェア全体において統一した制約を持つことが望まれる。特に、大規模なシステム開発においてこの考え方は非常に重要で、フレームワークによってクラス構造に制約が与えられる場合もあるのだが、開発プロジェクト全体でその制約を順守しきれない場合も多い。つまり、コンポーネントの設計者毎に、制約を設けるため、システム開発全体で統一された制約が実現されないことが多い。このような状況は、使用変更時の作業量が増大する原因となってしまう。
特許文献1では、設計者が入力したユースケース記述に含まれる情報からクラス構造の生成を行う技術が示されているが、一定の制約に従ったクラス構造を統一させるためには、ユースケース記述にも一定の制約が課される必要がある。しかしながら、ユースケースは、自然言語で記述されるため、設計者間の制約が異なることが生じることが多い。特に大規模なシステム開発においては、制約に従った正確なユースケース記述は設計者の負担となることが予想される。また、クラス構造の決定前の段階ではまだ変更の可能性が高いため、ユースケースのような文章を何度も記述することによって、設計・改善のサイクルの速度低下につながることが懸念される。
このような背景に鑑みて本発明がなされたのであり、本発明は、コンポーネント設計に係るクラス構造を生成することを目的とする。
前記課題を解決するため、本発明は、コンポーネントにおけるサービスインタフェース間の関係およびサービスインタフェース・テーブル間の関係に関する情報と、クラスの機能間の関係に関する情報とが入力されることにより、入力された各情報を基に、コンポーネントを構成するクラス間の関係を出力することを特徴とする。
本発明によれば、コンポーネント設計に係るクラス構造を生成することができる。
次に、本発明を実施するための最良の形態(「実施形態」という)について、適宜図面を参照しながら詳細に説明する。
図1は、本実施形態に係るクラス構造生成装置の構成例を示すブロック図である。
図1に示すように、本実施形態に係るクラス構造生成装置1は、情報の処理を行う処理部10、情報を記憶する記憶部20、情報の入力を行う入力部30および情報の表示を行う表示部40を有してなる。処理部10は、入力部30から情報を取得し、記憶部20に情報を記憶したり、記憶部20から情報を取得する。また、処理部10は、表示部40に情報を表示させる。
処理部10は、コンポーネント体系定義編集部11、サービス責務定義編集部12、クラス構造テンプレート適用部13、重複クラス構造検出部14、クラス構造調整部15およびクラス構造表示処理部16を有してなる。各部11〜16の機能については、図31から図39を参照して後記する。記憶部20は、コンポーネント体系定義記憶部21、サービス責務定義記憶部22、クラス構造テンプレート記憶部23、クラス構造記憶部24および重複クラス構造記憶部25を有する。各記憶部21〜25の詳細は、図2を参照して後記する。なお、入力部30、コンポーネント体系定義編集部11およびサービス責務定義編集部12が、請求項における入力部に該当する。また、重複クラス構造検出部14およびクラス構造調整部15が請求項におけるクラス構造調整部に該当する。
図2は、図1における各記憶部の構成例を示す図である。
コンポーネント体系定義記憶部21は、入力部30から入力された情報を基に、コンポーネント体系定義部編集部11(図1参照)によって、作成・編集されたコンポーネント体系に関する情報を格納している。図3に示すように、コンポーネント体系定義記憶部21は、コンポーネント定義表211、サービスインタフェース定義表212、テーブル定義表213、サービスインタフェース間依存関係定義表214、サービスインタフェース・テーブル間依存関係定義表215を有する。
サービス責務定義記憶部22は、入力部30を介して入力された情報を基に、サービス責務定義編集部12によって作成・編集されるサービス責務定義を格納している。図2に示すように、サービス責務定義記憶部22は、サービス入出力定義表221(サービス入出力情報)、テーブル使用方法定義表222(テーブル使用方法情報)を有する。
クラス構造テンプレート記憶部23は、入力部30を介して入力された情報を基に、コンポーネント体系定義編集部11(図1参照)によって作成・編集されるクラス間の構造に関する情報を格納している。図2に示すように、クラス構造テンプレート記憶部23は、クラス構造テンプレート定義表231、クラステンプレート定義表232、クラス間依存関係テンプレート定義表233、クラス・テーブル間依存関係テンプレート定義表234およびクラス構造テンプレート・クラステンプレート間依存関係定義表235を有する。
クラス構造記憶部24は、クラス構造テンプレート適用部13において生成されるクラスに関する情報を格納している。図2に示すように、クラス構造記憶部24は、クラス定義表241(クラス情報)、クラス間依存関係定義表242、クラス・テーブル間依存関係定義表243およびクラス・サービスインタフェース間依存関係定義表244を有する。
重複クラス構造記憶部25は、重複クラス構造検出部14によって生成される重複クラスに関する情報を格納している。図2に示すように、重複クラス構造記憶部25は、重複クラスグループ表251、重複クラス表252、重複関係元クラス表253、重複関係先クラス表254、重複関係先テーブル表255および統合クラス表256を有する。
なお、図2に示す各表211〜215,221,222,231〜235,241〜244,251〜256は、図9〜図30を参照して後で詳細に説明する。なお、サービスインタフェース定義表212、テーブル定義表213、サービスインタフェース間依存関係定義表214およびサービスインタフェース・テーブル間依存関係定義表215が、入出力情報に相当し、クラス構造テンプレート定義表231およびクラステンプレート232が、機能情報に相当し、クラス間依存関係テンプレート定義表233およびクラス・テーブル間依存関係テンプレート定義表234が関係情報に相当する。また、クラス定義表241が、クラス情報に相当する。さらに、サービスインタフェース間依存関係定義表214は、サービスインタフェース間関係情報に相当し、およびサービスインタフェース・テーブル間依存関係定義表215は、サービスインタフェース・テーブル間関係情報に相当する。また、サービス入出力定義表221は、処理情報の入出力方法の名称に相当し、テーブル使用方法定義表222は、テーブル参照方法の名称に相当する。
図3は、本実施形態に係るクラス構造生成装置のハードウェア構成の例を示す図である。
クラス構造生成装置1は、プロセッサ51、主記憶装置53、補助記憶装置52、キーボードやマウスなどの入力装置54、およびディスプレイなどの表示装置55を有する。
図1における各部11〜16は、補助記憶装置52に記憶されているクラス構成生成プログラムが主記憶装置53に展開され、プロセッサ51によって実行されることによって具現化する。
次に、図4〜図8を参照して、本実施形態の概要を説明する。
図4は、本実施形態に係るコンポーネント体系表示画面の例を示す図である。
図4のコンポーネント表示画面300は、図2を参照して前記した表211〜215,221,222,231〜235が入力部を介して入力されたときのコンポーネント体系を模式的に表示したものである。
図4において、設計したいソフトウェアは、「コンポーネント1」、「コンポーネント2」および「コンポーネント3」からなる。「コンポーネント1」は、外部からの入出力を受け付ける「サービスインタフェース1」を備え、そしてこの「サービスインタフェース1」が参照する「テーブル1」を有する。「コンポーネント2」は、「サービスインタフェース1」から入力を受け付ける「サービスインタフェース2」を有し、「コンポーネント3」は、「サービスインタフェース1」から入力を受け付ける「サービスインタフェース3」を有する。
図4に示す「クラス構造表示」ボタン320を選択入力すると、クラス構造生成装置1(図1)は、図2の符号211〜215,221,222,231〜235,241〜244,251〜256に示す各表を参照または生成してクラス間の関係を選択し、図5に示すクラス構造表示画面400を表示部40(図1)に出力する。
図5は、本実施形態に係るクラス構造表示画面の例を示す図である。
図5のクラス構造表示画面400では、「コンポーネント1」〜「コンポーネント3」を構成するクラスである「クラス1」〜「クラス7」と「テーブル1」との関係が表示されている。なお、図5における「コンポーネント体系表示」ボタン420が選択入力されると、図4に示す画面へ戻る。
次に、図6〜図8を参照して、本実施形態を金融商品契約ソフトウェアに適用した例を示す。
図6は、金融商品契約ソフトウェアにおける表示コンポーネント体系の例を示す図である。
図6に示す表示コンポーネント体系540は、表示部40(図1)のコンポーネント体系表示画面に表示される。
図6に示す表示コンポーネント体系40は、「保全異動コンポーネント」、「契約情報管理コンポーネント」および「共通機能コンポーネント」からなる。
「保全異動コンポーネント」は、サービスインタフェースとして「契約変更」サービスインタフェースおよび「異動請求進捗照会」サービスインタフェースを含み、テーブルとして「異動請求進捗管理情報」が含まれている。
また、「契約情報管理コンポーネント」には、「契約情報取得」サービスインタフェースおよび「契約情報更新」サービスインタフェースが含まれる。
そして、「共通機能コンポーネント」には、「帳票作成」サービスインタフェースが含まれる。
「契約情報取得」サービスインタフェースおよび「契約情報更新」サービスインタフェースは、「契約変更」サービスインタフェースから情報を取得し、「帳票作成」サービスインタフェースは、「契約変更」サービスインタフェースおよび「異動請求進捗照会」サービスインタフェースから情報を取得する。そして、「契約変更」サービスインタフェースおよび「異動請求進捗照会」サービスインタフェースは、テーブルである「異動請求進捗管理情報」を参照する。
図6に示すようなコンポーネント体系に対し、本実施形態のクラス構造生成方法を適用することによって、図7に示すような表示クラス構造(調整前)550を表示部40(図1参照)に出力する。なお、ここで、「調整」とは、後記する「統合」および「抽出」といったクラスの調整を指す。
図7は、金融商品契約ソフトウェアにおける表示クラス構造の例を示す図である。
図7では、各コンポーネントにおけるクラスとテーブルとの関係が表示されている。各クラスに関する詳細な説明は省略するが、符号551に示す「画面入力情報チェック」を示すクラスと、符号552に示す「画面入力情報チェック」を示すクラスとは、同一の機能を有するクラスである。
また、符号553に示す「契約変更画面入力情報取得」を示すクラスと、符号554に示す「異動請求進捗管理情報取得」を示すクラスとは、画面入力情報の機能を共通に有する。
このように同一の機能を有するクラスや、共通の機能を有するクラスが存在する場合は、クラス構造生成装置1が、後記する重複クラス構造検出処理およびクラス構造調整処理を行うことによって図8に示すような表示クラス構造(調整後)560が表示部40(図1)に表示される。
図8は、金融商品契約ソフトウェアにおける表示クラス構造の例を示す図である。
図8では、図7において同一の機能を有していたクラス551,552が、1つのクラス561(「画面入力情報チェック」クラス)に集約されている。このように同一の機能を有する複数のクラスを1つのクラスに集約することを本実施形態では「統合」と記載する)。
また、図8では、図7において共通の機能を有していたクラス553,554から、共通の機能であるクラス564(「画面入力情報取得」クラス)が抽出され、図7のクラス553,クラス554から「画面入力情報取得」の機能が抽出された後の機能を有するクラス562(「契約変更画面入力情報取得」クラス)およびクラス563(「異動請求進捗照会画面入力情報取得」クラス)は、新たに生成されたクラス564(画面入力情報取得)クラス)へ接続されている。クラス564は、図7のクラス553,554における共通の機能を抽出したクラスである。このように共通の機能を有する複数のクラスから、共通部分を抜き出したクラスを生成することを本実施形態では「抽出」と記載する。
次に、図9〜図30を参照して、本実施形態に使用される各表を説明し、その後、処理の説明を行う。なお、以下の記述において、依存関係とは、ある対象とある対象とが関係付けられている状況を示す。また。図9〜図30に示す各表の一番左側に記載されているIDは、該当する表の主キーとなり、クラス構造生成装置1の処理部10によって自動的に発行され、付与される識別情報である。そして、図9〜図30に示す各表において、同一の名称であるIDを有するとき、それらの表は、当該IDを介してリンクしている(対応付けられている)ことを示す。
(コンポーネント定義表)
図9は、コンポーネント定義表の例を示す図である。
コンポーネント定義表211は、コンポーネントに関する情報を格納するための表であり、入力部30(図1)およびコンポーネント体系定義編集部11(図1)を介してユーザが作成・編集する表である。
コンポーネント定義表211は、コンポーネントを一意に識別するための「コンポーネントID」と、コンポーネントの名称を表す「コンポーネント名」とをフィールドとして有する。
(サービスインタフェース定義表)
図10は、サービスインタフェース定義表の例を示す図である。
サービスインタフェース定義表212は、サービスインタフェースに関する情報を格納するための表であり、入力部30(図1)およびコンポーネント体系定義編集部11(図1)を介してユーザが作成・編集する表である。
サービスインタフェース定義表212は、サービスインタフェースを一意に識別するための「サービスインタフェースID」と、サービスインタフェースの名称を表す「サービスインタフェース名」と、サービスインタフェースが所属するコンポーネントを指定するための「所属コンポーネントID」とをフィールドとして有する。
(テーブル定義表)
図11は、テーブル定義表の例を示す図である。
テーブル定義表213は、テーブルに関する情報を格納するための表であり、入力部30(図1)およびコンポーネント体系定義編集部11(図1)を介してユーザが作成・編集する表である。
テーブル定義表213は、テーブルを一意に識別するための「テーブルID」と、テーブルの名称を表す「テーブル名」と、テーブルが所属するコンポーネントを指定するための「所属コンポーネントID」とをフィールドとして有する。
(サービスインタフェース間依存関係定義表)
図12は、サービスインタフェース間依存関係定義表の例を示す図である。
サービスインタフェース間の依存関係とは、サービスインタフェースを公開している機能が他の機能を呼び出すために、他の機能が有するサービスインタフェースを参照することを意味する。すなわち、サービスインタフェース間依存関係定義表214は、サービスインタフェース間の依存関係に関する情報を格納する表であり、入力部30(図1)およびコンポーネント体系定義編集部11(図1)を介してユーザが作成・編集する表である。
サービスインタフェース間依存関係定義表214は、サービスインタフェース間の関係を一意に識別するための「サービスインタフェース間依存関係ID」と、サービスインタフェース間依存関係元のサービスインタフェースIDである「関係元サービスインタフェースID」と、サービスインタフェース間依存関係の関係先のサービスインタフェースIDである「関係先サービスインタフェースID」とをフィールドとして有する。
(サービスインタフェース・テーブル間依存関係定義表)
図13は、サービスインタフェース・テーブル間依存関係定義表の例を示す図である。
サービスインタフェースとテーブルの間の依存関係とは、サービスインタフェースを公開している機能がテーブルを使用することを意味する。すなわち、サービスインタフェース・テーブル間依存関係定義表215は、サービスインタフェースとテーブルとの間の依存関係に関する情報を格納する表であり、入力部30(図1)およびコンポーネント体系定義編集部11(図1)を介してユーザが作成・編集する表である。
サービスインタフェース・テーブル間依存関係定義表215は、サービスインタフェース・テーブル間依存関係を一意に識別するための「サービスインタフェース・テーブル間依存関係ID」と、サービスインタフェース・テーブル間依存関係の関係元のサービスインタフェースIDである「関係元サービスインタフェースID」と、サービスインタフェース・テーブル間依存関係の関係先のテーブルIDである「関係先テーブルID」を有する。
(サービス入出力定義表)
図14は、サービス入出力定義表の例を示す図である。
図14に示すように、サービス入出力定義表221は、サービスインタフェースの機能を定義するための表である。すなわち、サービス入出力定義表221は、該当するサービスインタフェースにおける情報の入出力方法を特定するための表であり、入力部30(図1)およびサービス責務定義編集部12(図1)を介してユーザが作成・編集する表である。
サービス入出力定義表221は、「サービスインタフェースID(Identification)」、「画面入力」、「XML(Extensible Markup Language)ファイル入力」、「テキストファイル入力」、「画面出力」、「帳票出力」、「CSV(Comma Separated Values)ファイル出力」、「XMLファイル出力」などをフィールドとして有している。これらの各フィールドに相当する欄には、該当するサービスインタフェースが有する機能を「TRUE」または「FALSE」で規定している。例えば、図14の1行目の「S001」をサービスインタフェースIDに有するサービスインタフェースは、「画面入力」および「画面出力」を行うサービスインタフェースである。
図15は、テーブル使用方法定義表の例を示す図である。
テーブル使用方法定義表222は、サービスインタフェースがテーブルを使用するときの使用方法を定義するための表である。すなわち、テーブル使用方法定義表222は、サービスインタフェースがテーブルを参照する際の処理内容を特定するための表であり、入力部30(図1)およびサービス責務定義編集処理部12(図1)を介してユーザが作成・編集する表である。
テーブル使用方法定義表222は、「サービスインタフェース・テーブル間依存関係ID」、「テーブルデータ作成」、「テーブルデータ参照」、「テーブルデータ検索参照」、「テーブルデータ更新」、「テーブルデータ削除」などをフィールドとして有している。これらの各フィールドに相当する欄には、該当するサービスインタフェースがテーブルを使用する際の機能を「TRUE」または「FALSE」で規定している。例えば、図15の1行目の「STR001」をサービスインタフェース・テーブル間依存関係IDに該当するサービスインタフェース・テーブル間依存関係は、「テーブルデータ作成」である。
(クラス構造テンプレート定義表)
図16は、クラス構造テンプレート定義表の例を示す図である。
クラス構造テンプレート定義表231は、クラス設計を行うためのクラス構造のテンプレートを定義するためのテーブルであり、入力部30(図1)およびコンポーネント体系定義編集部11(図1)を介してユーザが作成・編集する表である。クラス構造のテンプレートは、図17〜図20で後記するクラステンプレート定義表232、クラス間依存関係テンプレート定義表233、クラス・テーブル間依存関係テンプレート定義表234、クラス構造テンプレート・クラステンプレート間依存関係定義表235などのテンプレートと組み合わせて使用される。
図16に示すように、クラス構造テンプレート定義表231は、クラス構造テンプレートを一意に識別するための「テンプレートID」と、クラス構造テンプレートを適用する基準を定義する「適用判断基準」と、どのクラス構造テンプレートを適用するかを判断するための「適用判断基準項目」とをフィールドとして有する。なお、「適用判断基準」および「適用判断基準項目」については、後記して説明する。
(クラステンプレート定義表)
図17は、クラステンプレート定義表の例を示す図である。
クラステンプレート定義表232は、クラスに用いられる情報を機能毎に定めたテンプレート(クラステンプレートと記載)を格納する表であり、入力部30(図1)およびコンポーネント体系定義編集部11(図1)を介してユーザが作成・編集する表である。
クラステンプレート定義表232は、以下の各情報などをフィールドとして有する。「クラステンプレートID」は、クラステンプレートを一意に識別するための情報である。「生成クラス名」は、クラステンプレートを用いて定義されたクラスの名称である。「名称取得対象」は、クラステンプレート適用の対象となるサービスインタフェース名や、テーブル名などが格納されており、サービスインタフェース名や、テーブル名が複数(サービス11,サービス12,などのように)格納されている。「統合」は、クラス構造の調整(前記した統合および抽出)において、統合の対象となるか否かを「TRUE」および「FALSE」で指定する情報である(統合可能情報)。「抽出」は、クラス構造の調整で抽出の対象とするか否かを「TRUE」または「FALSE」で指定する情報である(抽出可能情報)。なお、符号2321,2322については後記する。
(クラス間依存関係テンプレート定義表)
図18は、クラス間依存関係テンプレート定義表の例を示す図である。
クラス間依存関係テンプレート定義表233は、図16で定義されたクラステンプレート間の依存関係を示す表であり、入力部30(図1)およびコンポーネント体系定義編集部11(図1)を介してユーザが作成・編集する表である。クラス間依存関係テンプレート定義表233は、クラス間の依存関係に関するテンプレートを一意に識別するための「クラス間依存関係テンプレートID」と、対象となるクラス間依存関係テンプレートの関係元となるクラステンプレートIDである「関係元クラステンプレートID」、対象となるクラス間依存関係の関係先となるクラステンプレートIDである「関係先クラステンプレートID」、対象となるテンプレートIDである「テンプレートID」を有する。
(クラス・テーブル間依存関係テンプレート定義表)
図19は、クラス・テーブル間依存関係テンプレート定義表の例を示す図である。
クラス・テーブル間依存関係テンプレート定義表234は、クラステンプレートと、テーブルとの間の依存関係を示す表であり、入力部30(図1)およびコンポーネント体系定義編集部11(図1)を介してユーザが作成・編集する表である。クラス・テーブル間依存関係テンプレート定義表234は、以下の各情報をフィールドとして有する。「クラス・テーブル間依存関係テンプレートID」は、クラステンプレート・テーブル間依存関係に関するテンプレートを一意に識別するための情報である。「関係元クラステンプレートID」は、クラステンプレート・テーブル間依存関係の関係元となるクラステンプレートIDである。「テンプレートID」は、図16におけるクラステンプレートと同様である。
(クラス構造テンプレート・クラステンプレート間依存関係定義表)
図20は、クラス構造テンプレート・クラステンプレート間依存関係定義表の例を示す図である。
クラス構造テンプレート・クラステンプレート間依存関係定義表235は、図16の「テンプレートID」と、図17の「クラステンプレートID」とを関係付けるための表であり、入力部30(図1)およびコンポーネント体系定義編集部11(図1)を介してユーザが作成・編集する表である。クラス構造テンプレート・クラステンプレート間依存関係定義表235は、図16における「テンプレートID」と、図17における「クラステンプレートID」とが対応付けられて格納されている。
ここまでは、入力部30(図1)や、コンポーネント体系定義編集部11(図1)や、サービス責務12(図1)を介することによって、ユーザが作成・編集する表であるが、以降の表は、本実施形態に係るクラス構造生成方法を、クラス構造生成装置1(図1)が実行することにより、生成される表である。
(クラス定義表)
図21は、クラス定義表の例を示す図である。
クラス定義表241は、クラスに関する情報を格納するための表である。
クラス定義表241は、クラスを一意に識別するための「クラスID」と、クラスの名称を表す「クラス名」と、クラスが所属するコンポーネントのコンポーネントID(図9)である「所属コンポーネントID」と、対象となるクラステンプレートを示す「テンプレートクラスID」とをフィールドとして有する。
(クラス間依存関係定義表)
図22は、クラス間依存関係定義表の例を示す図である。
クラス間依存関係定義表242は、任意の2つクラス間の依存関係に関する情報を格納する表である。クラス間の依存関係とは、クラスの中で他のクラスを利用していることを意味する。クラス間依存関係定義表242は、以下の情報をフィールドとして有する。「クラス間依存関係ID」は、クラス間の依存関係を一意に識別するための情報である。「関係元クラスID」は、当該クラス間依存関係の関係元のクラスIDである。「関係先クラスID」は、、当該クラス間依存関係の関係先のクラスIDである。「抽出関係」は、関係元のクラスから関係先のクラスへの抽出関係の有無を「TRUE」および「FALSE」で示す。
(クラス・テーブル間依存関係定義表)
図23は、クラス・テーブル間依存関係定義表の例を示す図である。
クラス・テーブル間依存関係定義表243は、クラスと、テーブルとの依存関係に関する情報を格納する表である。クラス・テーブル間の依存関係とは、クラスの中でテーブルの利用があることを意味する。クラス・テーブル間依存関係定義表243は、以下の情報をフィールドとして有する。「クラス・テーブル間依存関係ID」は、クラスと、テーブル間の依存関係を一意に識別するため情報である。「関係元クラスID」は、当該依存関係における関係元のクラスIDである。「関係先テーブルID」は、当該依存関係の関係先のテーブルIDである。
(クラス・サービスインタフェース間依存関係定義表)
図24は、クラス・サービスインタフェース間依存関係定義表の例を示す図である。
クラス・サービスインタフェース間依存関係定義表244は、クラスと、サービスインタフェースとの依存関係に関する情報を格納する表である。クラス・サービスインタフェース間の依存関係とは、クラスはサービスインタフェースが提供する機能の1つであることを意味し、クラスが1つのサービスインタフェースのみの機能である場合にクラス・サービスインタフェース間の依存関係を定義する。クラス・サービスインタフェース間依存関係定義表244は、以下の情報をフィールドとして有する。「クラス・サービスインタフェース間依存関係ID」は、クラスと、サービスインタフェースとの間の依存関係を一意に識別するための情報である。「関係元クラスID」は、当該依存関係における関係元のクラスIDである。「関係先サービスインタフェースID」は、当該依存関係における関係先のサービスインタフェースIDである。
(重複クラスグループ表)
図25は、重複クラスグループ表の例を示す図である。
重複クラスグループ表251は、前記した統合や、抽出といったクラス調整の際に用いられる表であり、後記する重複クラス構造検出処理(図31参照)で生成される表である。
重複クラスグループ情報370は、以下の情報をフィールドとして有する。「重複クラスグループID」は、重複クラス検出部127において、重複(クラスの機能が同一もしくは共通の機能を含む)クラスとして検出されたクラスが属するグループ(重複クラスグループ)を一意に識別するための情報である。重複クラスグループは、重複クラス検出部において付されるグループであり、機能が重複しているクラスが属するグループである。クラスと重複クラスグループとは、図26で後記する重複クラス表252において管理されている。「所属コンポーネントID」は、重複クラスグループでまとめられたクラスが所属するコンポーネントIDである。「クラステンプレートID」は、重複クラスグループでまとめられたクラスを定義したクラステンプレートIDを表す。「調整方法」は、「統合」、「抽出」などのクラスの調整方法に関する情報が格納される。
(重複クラス表)
図26は、重複クラス表の例を示す図である。
重複クラス表252は、図25で説明した重複クラスグループに属するクラスが示されるための表である。
重複クラス情報372は、「重複クラスグループID」と、当該「重複クラスグループID」に属するクラスIDとが対応付けられて格納されている。
(重複関係元クラス表)
図27は、重複関係元クラス表の例を示す図である。
重複関係元クラス表253では、重複クラス検出部において検出された重複クラスの関係元のクラスに関する情報を格納するための表である。
重複関係元クラス表253は、重複クラスを呼び出しているクラスIDである「重複クラス関係元クラスID」と、「重複クラスグループID」とをフィールドとして有する。
図26を参照すると、「重複クラスグループID」が「G001」に含まれるクラスIDは、「C001」および「C002」である。図27に記述されている情報は、例えば「C003」→「C001」および「C004」→「C002」であったとき、「C001」および「C002」が「G001」に含まれたので、「C003」および「C004」→「G001」に統合されたことを示す。ここで、矢印は、「関係元」→「関係先」であることを示す。つまり、クラス「C003」の関係先がクラス「C001」であり、クラス「C004」の関係先がクラス「C002」であったとき、「C001」と「C002」とが同一の重複クラスグループ「G001」にまとまられたため、「C003」および「C004」の共通の関係先が、「G001」となったことを示す。
(重複関係先クラス表)
図28は、重複関係先クラス表の例を示す図である。
重複関係先クラス表254では、重複クラス検出部において検出された重複クラスの関係先のクラスに関する情報を格納するための表である。
重複関係先クラス表254は、重複クラスが呼び出されているクラスのID(図23)である「重複クラス関係先クラスID」と、「重複クラスグループID」とをフィールドとして有する。
図26を参照すると、「重複クラスグループID」が「G001」に含まれるクラスIDは、「C001」および「C002」である。図28に記述されている情報は、例えば「C001」→「C005」および「C002」→「C006」であったとき、「C001」および「C002」が「G001」に含まれたので、「G001」→「C005」および「C006」に統合されたことを示す。つまり、クラス「C005」の関係元がクラス「C005」であり、クラス「C006」の関係元がクラス「C002」であったとき、「C001」と「C002」とが同一の重複クラスグループ「G001」にまとまられたため、「C003」および「C004」の共通の関係元が、「G001」となったことを示す。
(重複関係先テーブル表)
図29は、重複関係先テーブル表の例を示す図である。
重複関係先テーブル表255は、重複クラスに含まれたクラスの関係先テーブルを格納するための表である。重複関係先テーブル表255は、重複クラスの含まれたクラスの関係先であったテーブルIDである「重複クラス関係先テーブルID」と、当該重複クラスが属する重複クラスグループIDである「重複クラスグループID」とをフィールドとして有する。
(統合クラス表)
図30は、統合クラス表の例を示す図である。
統合クラス表256は、「重複クラスグルーブID」に示される重複クラスグループを、新たなクラスとしたときのクラスIDが「統合クラスID」として格納されている。
以下、図1から図30を参照しつつ、図31〜図39に沿って、本実施形態に係るクラス構造生成処理を説明する。
図31は、本実施形態に係るクラス構造生成処理の全体的な流れを示すフローチャートである。
クラス構造生成処理が起動されると、処理部10は、表示部40に編集メニュー画面(図41で後記)を表示させ、入力部30を介して情報が入力されることによって、コンポーネント体系定義編集処理部11およびサービス責務定義編集処理部12が、定義編集処理を行う(S101)。
定義編集処理は、コンポーネント定義編集処理(S111)、サービスインタフェース定義編集処理(S112)、テーブル定義編集処理(S113)、サービスインタフェース間依存関係定義編集処理(S114)、サービスインタフェース・テーブル間依存関係定義編集処理(S115)、サービス入出力定義編集処理(S116)およびテーブル使用方法定義編集処理(S117)を含む。ステップS111〜S117の各処理は、メニュー画面から各処理を行うため編集画面を介して行われる。ステップS111〜S117を行うための編集画面は、図41〜図47を参照して後記する。なお、ステップS111〜S117の処理によって、コンポーネント定義表211(図9)、サービスインタフェース定義表212(図10)、テーブル定義表213(図11)、サービスインタフェース間依存関係定義表214(図12)、サービスインタフェース・テーブル間依存関係定義表215(図13)、サービス入出力定義表221(図14)およびテーブル使用方法定義表222(図15)が作成編集される。
さらに、定義編集処理は、クラス構造テンプレート定義編集処理(S118)、クラステンプレート定義編集処理(S119)、クラス間依存関係テンプレート定義編集処理(S120)、クラス・テーブル間依存関係テンプレート定義編集処理(S121)およびクラス構造テンプレート・クラステンプレート間依存関係定義編集処理(S122)を含む。ステップS118〜S122の処理によって、クラス構造テンプレート定義表231(図16)、クラステンプレート定義表232(図17)、クラス間依存関係テンプレート定義表233(図18)、クラス・テーブル間依存関係テンプレート定義表234(図19)およびクラス構造テンプレート・クラステンプレート間依存関係定義表235(図20)が作成・編集される。
次に、クラス構造テンプレート適用部13が、クラス構造テンプレート適用処理を行う(S102)。ステップS102の処理は、図32〜図36を参照して後記する。
そして、重複クラス構造検出部14が、重複クラス構造検出処理を行う(S103)。ステップS103の処理は、図37および図38を参照して後記する。
続いて、クラス構造調整部15が、クラス構造調整処理を行う(S104)。ステップS104の処理は、図39を参照して後記する。
そして、クラス構造表示処理部16は、生成されたクラス構造を表示部40に表示させる(S105)。クラス構造表示画面の例は、図5、図7および図8で前記した通りである。
(クラス構造テンプレート適用処理)
次に、図31のステップS102であるクラス構造テンプレート適用処理を説明する。
図32は、クラス構造テンプレート適用処理の全体的な流れを示すフローチャートである。
まず、クラス構造テンプレート適用部13は、サービスインタフェースの存在に基づくテンプレート適用処理を行う(S201)。これにより、サービスインタフェースに対応するクラスに関する情報が生成される。ステップS201の処理は、図33を参照して後記する。
そして、クラス構造テンプレート適用部13は、サービスインタフェース・テーブル間依存関係に基づくテンプレート適用処理を行う(S202)。ステップS202の処理は、図34を参照して後記する。これにより、テーブル参照のためのクラスに関する情報が生成される。
続いて、クラス構造テンプレート適用部13は、サービスインタフェース間依存関係に基づくテンプレート適用処理を行う(S203)。ステップS203の処理は、図35を参照して後記する。これにより、サービスインタフェース間を仲介するクラスに関する情報が生成される。
そして、クラス構造テンプレート適用部13は、サービスインタフェースに基づくテンプレート適用処理を行う(S204)。ステップS204の処理は、図36を参照して後記する。これにより、サービスインタフェースの入出力を実際に行うクラスに関する情報が生成される。
(サービスインタフェースの存在に基づくテンプレート適用処理)
図33は、本実施形態に係るサービスインタフェースの存在に基づくテンプレート適用処理(図32のステップS201)の流れを示すフローチャートである。
まず、クラス構造テンプレート適用部13は、サービスインタフェース定義表212(図10)を参照して、サービスインタフェースIDを1つ選択する(S301)。
続いて、クラス構造テンプレート適用部13は、ステップS301で選択したサービスインタフェースIDに対応するサービスインタフェース名と、所属コンポーネントIDをサービスインタフェース定義表212から取得する(S302)
ステップS302の次に、クラス構造テンプレート適用部13は、コンポーネント定義表211(図9)を参照して、取得した所属コンポーネントIDに対応するコンポーネント名を取得する。
<クラスに関する情報の生成・格納>
さらに、クラス構造テンプレート適用部13は、取得したサービスインタフェース名をキーとして、クラステンプレート定義表232(図17)の「名称取得対象」を検索し、「生成クラス名」に格納されている文字列(ここでは、「サービス」)と、対応しているクラステンプレートIDとを取得する。さらに、クラス構造テンプレート適用部13は、取得した「生成クラス名」の文字列の前に、ステップS302で取得したサービスインタフェース名を付したクラス名(例えば、サービスインタフェース名が「サービス11」であれば、「サービス11サービス」)を生成する。つまり、クラス構造テンプレート適用部13は、サービスインタフェース名を基に、クラス名を生成する(S303)。
次に、クラス構造テンプレート適用部13は、生成したクラス名に対応するクラスに関する情報を生成し、クラス定義表241(図21)に格納する(S304)。具体的には、クラス構造テンプレート適用部13は、生成したクラス名に対し、他のクラスと重複しないクラスIDを発行すると、クラス定義表241に各データを組として格納する。格納は、クラス構造テンプレート適用部13は、発行したクラスIDを、クラス定義表241の「クラスID」に格納し、ステップS303で生成したサービスに関するクラス名を「クラス名」に格納する。さらに、クラス構造テンプレート適用部13は、ステップS302で取得した所属コンポーネントIDを、クラス定義表241の「所属コンポーネントID」に格納し、ステップS303の段階で取得したクラステンプレートIDを、「クラステンプレートID」に格納する。
以上で、本処理におけるクラスに関する情報の生成・格納が終了する。
<生成したクラスと、生成元であるサービスインタフェースとの関係を格納>
ステップS304の次に、クラス構造テンプレート適用部13は、クラス・サービスインタフェース間の依存関係に関する情報を生成し、生成した情報をクラス・サービスインタフェース間依存関係定義表244(図24)に格納する(S305)。具体的には、クラス構造テンプレート適用部は、ステップS301で取得したサービスインタフェースIDと、ステップS304の段階で発行したクラスIDとに対して、クラス・サービスインタフェース間依存関係IDを発行し、これら3つのデータを組としてクラス・サービスインタフェース間依存関係定義表244に格納する。格納は、クラス構造テンプレート適用部13が、発行したクラス・サービスインタフェース依存関係IDを、「クラス・サービスインタフェース依存関係ID」に格納し、ステップS305で発行したクラスIDを「関係元クラスID」に格納し、ステップS302で取得したサービスインタフェースIDを「関係先サービスインタフェースID」に格納する。
以上で、本処理における生成したクラスと、生成元であるサービスインタフェースとの関係を格納する処理が終了する。
ステップS305の次に、クラス構造テンプレート適用部13は、ステップS302で取得したサービスインタフェース名をキーとして、クラステンプレート定義表232(図17)の「名称取得対象」をさらに検索し、対象となる名称取得対象(取得したサービスインタフェース名を有する名称取得対象)が存在するか否かを判定する(S306)。
ステップS306の結果、存在する場合(S306→Yes)、クラス構造テンプレート適用部13は、ステップS303へ処理を戻し、当該名称取得対象に対応する生成クラス名に関しステップS303〜S305の処理を行う。なお、図17の例に従えば、次の生成クラス名は、「コントローラ」となり、生成されるクラス名は、「サービス11コントローラ」となる。
このような処理により、サービスインタフェースに係り、機能の異なる(「サービス」と「コントローラ」)クラスを生成することができる。
<生成したクラス間の依存関係に関する情報の生成・格納>
ステップS306の結果、存在しない場合(S306→No)、クラス構造テンプレート適用部13は、以下の手順で、生成したクラス間の依存関係に関する情報の生成・格納を行う。
まず、クラス構造テンプレート適用部は、ステップS304の段階で発行したクラスIDのうち、クラス定義表241(図21)において同一の所属コンポーネントIDを有するクラスIDの対に対し、クラス間依存関係IDを発行すると、これら3つのデータを組としてクラス間依存関係定義表242(図22)の該当する項目へ格納する。具体的には、クラス構造テンプレート適用部13は、発行したクラス間依存関係IDを、クラス間依存関係定義表242の「クラス間依存関係ID」に格納し、ステップS305の段階で発行したクラスIDを「関係元クラスID」に格納し、ステップS305の段階で発行したもう一方のクラスIDを「関係先クラスID」に格納する。なお、このとき、クラス構造テンプレート適用部13は、「抽出関係」には、「FALSE」を格納する。また、ステップS303〜ステップS305の処理を一回しか行わなかった場合(つまり、サービスインタフェースに関するクラスを1つしか生成しなかった場合)は、ステップS307の処理は省略される。
以上で、生成したクラス間の依存関係に関する情報の生成・格納が終了する。
ステップS307の後、クラス構造テンプレート適用部13は、サービスインタフェース定義表212(図10)を検索して、まだ、未選択のサービスインタフェースIDが存在するか否かを判定する(S308)。
ステップS308の結果、存在する場合(S308→Yes)、クラス構造テンプレート適用部13は、ステップS301の処理へ戻って、次のサービスインタフェースIDを選択する。
ステップS308の結果、存在しない場合(S308→No)、クラス構造テンプレート適用部13は、図32のステップS202へ進む。
(サービスインタフェース・テーブル間依存関係に基づくテンプレート適用処理)
図34は、本実施形態に係るサービスインタフェース・テーブル間依存関係に基づくテンプレート適用処理(図32のステップS202)の流れを示すフローチャートである。
次に、クラス構造テンプレート適用部13は、サービスインタフェース・テーブル間依存関係定義表215(図13)を参照して、サービスインタフェース・テーブル間依存関係IDを1つ選択する(S401)。同時に、サービスインタフェース・テーブル間依存関係IDに対応している、関係元サービスインタフェースIDおよび関係先テーブルIDをも取得する(S402)。
続いて、クラス構造テンプレート適用部13は、取得したサービスインタフェース・テーブル間依存関係IDをキーとして、テーブル使用方法定義表222(図15)を参照して、「テーブルデータ作成」、「テーブルデータ参照」、「テーブルデータ検索参照」、「テーブルデータ更新」および「テーブルデータ削除」に格納されている各データ(テーブル使用方法データ)を参照する(S403)。
クラス構造テンプレート適用部13は、ステップS403で取得したテーブル使用方法データのうち、「TRUE」であるもののフィールド名を取得する(図15の例では「テーブルデータ作成」および「テーブルデータ検索参照」)。次に、クラス構造テンプレート適用部13は、クラス構造テンプレート定義表231(図16)の「適用判断基準項目」を参照し、取得したフィールド名と、「適用判断基準項目」の内容が一致する行であるクラス構造テンプレートレコードの一覧を取得する(S404)。ここで、クラス構造テンプレートレコードは、1つしか取得されない場合もあるし、複数取得される場合もある。
<クラスに関する情報の生成・格納>
そして、クラス構造テンプレート適用部13は、以下の手順でクラスに関する情報を生成し、生成した情報をクラス定義表241(図21)に格納する(S405)。
まず、クラス構造テンプレート適用部13は、ステップS404で取得したクラス構造テンプレートレコードに含まれるテンプレートIDを取得する。
そして、クラス構造テンプレート適用部13は、取得したテンプレートIDをキーとして、クラス構造テンプレート・クラステンプレート間依存関係定義表235(図20)を参照して、対応するクラステンプレートIDをすべて取得する。続いて、クラス構造テンプレート適用部13は、取得したクラステンプレートIDをキーとして、クラステンプレート定義表232(図17)の「クラステンプレートID」を検索し、対応する「生成クラス名」に格納されている文字列を取得する。
次に、クラス構造テンプレート適用部13は、ステップS402で取得した関係先テーブルIDをキーとして、テーブル定義表213(図11)から対応するテーブル名と所属コンポーネントIDを取得する。
そして、クラス構造テンプレート適用部13は、取得したテーブル名の後に、クラステンプレート定義表232(図17)の「生成クラス」から取得した文字列を付して、テーブルデータ参照に関するクラス名を生成する(例えば、「テーブル11テーブルデータ取得」など)。
そして、クラス構造テンプレート適用部13は、生成したクラス名に対し、他のクラスと重複しないクラスIDを発行すると、クラス名と、取得している所属コンポーネントIDと、処理の対象となっているクラステンプレートのクラステンプレートIDとをクラス定義表241の該当する項目に格納する。
次に、クラス構造テンプレート適用部13は、まだ選択されていないクラステンプレートIDがあれば、ステップS405の処理を繰り返し、選択されていないクラステンプレートがなければ、処理をステップS406に処理を進める。
以上で、本処理におけるクラスに関する情報の生成・格納が終了する。
<クラス間の依存関係に関する情報の生成・格納>
ステップS405の後、クラス構造テンプレート適用部13は、以下の手順でクラス間の依存関係に関する情報を生成し、生成した情報をクラス間依存関係定義表242(図2
2)に格納する(S406)。
まず、クラス構造テンプレート適用部13は、ステップS404で取得したクラス構造テンプレートレコードに含まれるテンプレートIDを取得する。
そして、クラス構造テンプレート適用部13は、当該取得したテンプレートIDをキーとして、クラス間依存関係テンプレート定義表233(図18)の「テンプレートID」のフィールドを検索し、対応する行であるクラス間依存関係テンプレートレコードを取得する。ここで、取得されるクラス間依存関係テンプレートレコードは、1つしかないときもあるし、複数あるときもある。次に、クラス構造テンプレート適用部13は、取得したクラス間依存関係テンプレートレコードのうち、1つを選択する。
クラス構造テンプレート適用部13は、選択したクラス間依存関係テンプレートレコードの関係元クラステンプレートIDおよび関係先クラステンプレートIDを取得する。
ここで取得した関係元クラステンプレートIDおよびステップS405の段階で発行したクラスの所属コンポーネントIDをキーとしてクラス定義表241(図21)の「クラステンプレートID」のフィールドと「所属コンポーネント」のフィールドを検索してクラスIDをすべて取得し、このクラスIDをクラス間依存関係定義表242の「関係元クラスID」に格納する。
それぞれの「関係先クラスID」には、ステップS405で生成したクラスのクラスIDを格納する。
さらに、クラス構造テンプレート適用部13は、クラス間依存関係IDを新たに発行すると、格納した「関係元クラスID」および「関係先クラスID」に対応するように、クラス間依存関係定義表242(図22)の該当する項目に格納する。
そして、クラス構造テンプレート適用部13は、取得したクラス間依存関係テンプレートレコードのうち、未選択のクラス間依存関係テンプレートレコードがあれば、ステップS406を繰り返し、未選択のクラス間依存関係テンプレートレコードがなければ、ステップS407の処理へ進む。
以上で、本処理におけるクラス間の依存関係に関する情報の生成・格納が終了する。
<クラス・テーブル間の依存関係に関する情報の生成・格納>
ステップS406の後、クラス構造テンプレート適用部13は、以下の手順でクラス・テーブル間の依存関係に関する情報を生成し、生成した情報をクラス・テーブル間依存関係定義表243(図23)に格納する(S407)。
まず、クラス構造テンプレート適用部13は、ステップS404で取得したクラス構造テンプレートレコードに含まれるテンプレートIDを取得する。
次に、クラス構造テンプレート適用部13は、取得したテンプレートIDをキーとして、クラス・テーブル間依存関係テンプレート定義表234(図19)の「テンプレートID」を検索し、対応する行であるクラス・テーブル間依存関係テンプレートレコードを取得する。ここで、取得されるレコードは、1つしかない場合もあるし、複数取得される場合もある。
次に、クラス構造テンプレート適用部13は、取得されたクラス・テーブル間依存関係テンプレートレコードのうち、1つを選択する。
クラス構造テンプレート適用部13は、選択したクラス・テーブル間依存関係テンプレートレコードの関係元クラステンプレートIDを取得する。
取得した関係元クラステンプレートIDが、ステップS405の段階で取得したクラステンプレートIDと等しい場合には、このクラスIDをクラス間依存関係定義表242の「関係元クラスID」に格納する。
さらに、クラス構造テンプレート適用部13は、ステップS402で取得した関係先テーブルIDをクラス・テーブル間依存関係定義表243(図23)の「関係先テーブルID」に追加格納し、取得した関係元クラステンプレートIDを「関係元クラスID」に格納し、さらに新たなクラス・テーブル間依存関係IDを発行すると、当該格納したデータに対応する「クラス・テーブル間依存関係ID」の項目に格納する。
そして、クラス構造テンプレート適用部13は、取得したクラス・テーブル間依存関係テンプレートのうち、未選択のクラス・テーブル間依存関係テンプレートがあれば、ステップS407を繰り返し、未選択のクラス・テーブル間依存関係テンプレートがなければ、ステップS408へ処理を進める。
以上で、本処理におけるクラス・テーブル間の依存関係に関する情報の生成・格納が終了する。
ステップS407の後、クラス構造テンプレート適用部13は、ステップS404で取得されたクラス構造テンプレートレコードのうち、未選択のクラス構造テンプレートレコードが存在するか否かを判定する(S408)。
ステップS408の結果、存在する場合(S408→Yes)、クラス構造テンプレート適用部13は、ステップS405へ処理を戻し、次のクラス構造テンプレートレコードについて処理を行う。
ステップS408の結果、存在しない場合(S408→No)、クラス構造テンプレート適用部13は、ステップS401で取得したサービスインタフェース・テーブル間依存関係IDのうち、未選択のサービスインタフェース・テーブル間依存関係IDが存在するか否かを判定する(S409)。
ステップS409の結果、存在する場合(S409→Yes)、クラス構造テンプレート適用部13は、ステップS401へ処理を戻し、次のサービスインタフェース・テーブル間依存関係IDについて処理を行う。
ステップS409の結果、存在しない場合(S409→No)、クラス構造テンプレート適用部13は、図32のステップS203へ処理を進める。
(サービスインタフェース間依存関係に基づくテンプレート適用処理)
図35は、本実施形態に係るサービスインタフェース間依存関係に基づくテンプレート適用処理(図32のステップS203)の流れを示すフローチャートである。
続いて、クラス構造テンプレート適用部13は、サービスインタフェース間依存関係定義表214(図12)からサービスインタフェース間依存関係IDを1つ選択する(S501)。
そして、クラス構造テンプレート適用部13は、ステップS501で選択したサービスインタフェース間依存関係からステップS501で取得したサービスインタフェース間依存関係IDに対応する関係元サービスインタフェースIDおよび関係元サービスインタフェースIDを取得する(S502)。
<サービス呼出のためのクラスに関する情報の生成・格納>
次に、クラス構造テンプレート適用部13は、以下の手順でサービス呼出のためのクラスに関する情報を生成し、クラス定義表241(図23)に格納する(S503)。なお、本実施形態では、「サービスの呼出」のクラスを生成しているが、サービスインタフェースとサービスインタフェースとを仲介する機能であれば、他のクラスに関する情報を生成してもよい。
まず、クラス構造テンプレート適用部13は、ステップS502で取得した関係先サービスインタフェースIDをキーとして、サービスインタフェース定義表212(図10)を検索して、サービスインタフェース名と所属コンポーネントIDとを取得する。次に、クラス構造テンプレート適用部13は、取得したサービスインタフェース名に、例えば「関係先」の文字列を付したものを、関係先サービスインタフェース名とする。これにより、一般的なサービスインタフェース名と、関係先のサービスインタフェース名とを区別することができる。
クラス構造テンプレート適用部13は、関係先サービスインタフェース名をキーとして、クラステンプレート定義表232(図17)の「名称取得対象」のフィールドを検索して、一致する関係先サービスインタフェース名を有する行における生成クラス名を取得する。ここでは、図17の例では、「サービス呼出」の文字列と、対応するクラステンプレートIDとが取得される。そして、クラス構造テンプレート適用部13は、取得した生成クラス名「サービス呼出」の前に、サービスインタフェース定義表212(図10)を検索して取得したサービスインタフェース名を付した文字列をサービス呼出のためのクラス名とする(例えば、「サービス12呼出」)。
さらに、クラス構造テンプレート適用部13は、生成したサービス呼出クラスに対し重複しないクラスIDを発行する。そして、クラス構造テンプレート適用部13は、クラス定義表241(図21)にデータを格納する。具体的には、クラス構造テンプレート適用部13は、発行したクラスIDを、クラス定義表241の「クラスID」に格納し、ステップS503で生成したサービス呼出のためのクラス名を「クラス名」に格納する。そして、クラス構造テンプレート適用部13は、クラステンプレートIDを、クラス定義表241の「クラステンプレートID」に格納する。このとき、該当する「コンポーネントID」の項目は、空欄にしておく。
以上で、本処理におけるサービス呼出のためのクラスに関する情報の生成・格納が終了する。
ステップS503の次に、クラス構造テンプレート適用部13は、以下の手順により、ステップS502で取得した関係元サービスインタフェースIDおよび関係先サービスインタフェースIDに係るクラスIDを取得する(S504)。
まず、クラス構造テンプレート適用部13は、ステップS502で取得した関係元サービスインタフェースIDをキーとして、クラス・サービスインタフェース間依存関係定義表244(図24)の「関係先サービスインタフェースID」を検索して、対応する関係元クラスIDを取得する。さらに、クラス構造テンプレート適用部13は、取得した関係元クラスIDをキーとして、クラス定義表241(図21)の「クラスID」を検索し、対応するクラス名に「コントローラ」の文字列が含まれているか否かを判定し、含まれていれば、このクラスIDをステップS504で発行したクラスIDに対する関係元クラスIDとして記憶する。
含まれていなければ、クラス構造テンプレート適用部13は、取得したクラスIDをキーとして、クラス間依存関係定義表242(図22)の「関係元クラスID」を検索し、対応する関係先クラスIDを取得する。そして、クラス構造テンプレート適用部13は、当該取得した関係先クラスIDをキーとして、クラス定義表241(図21)の「クラスID」を検索し、対応するクラス名に「コントローラ」の文字列が含まれているか否かを判定する。以下、同様にしてクラス名に「コントローラ」の文字列が含まれているクラスのクラスIDを取得するまで、この処理を繰り返す。なお、本実施形態では、「コントローラ」の文字列を検索したが、ソフトウェアの構造により、検索する文字列が変わることは当然である。
なお、この際、取得した関係元クラスIDをキーとして、クラス定義表241(図21)の「クラスID」を検索し、対応する所属コンポーネントIDを取得すると、ステップS503の段階で格納したクラス定義表241(図24)のクラスIDに対応する「所属コンポーネントID」の項目に、取得した所属コンポーネントIDを格納する。
次に、クラス構造テンプレート適用部13は、ステップS503で取得した関係先サービスインタフェースIDをキーとして、クラス・サービスインタフェース間依存関係定義表244(図24)の「関係先サービスインタフェースID」に対応する関係元クラスIDを取得する。なお、ソフトウェアの構成によっては、前記した手順と同様の手順によって、特定の文字列を有するクラスに関するクラスIDを取得してもよい。
<生成したクラスと、関係先および関係元のクラス間の依存関係に関する情報の生成・格納>
そして、クラス構造テンプレート適用部13は、以下の手順により、ステップS503で生成したクラスに関する情報と、ステップS502で取得した関係先および関係元のサービスインタフェースに関する依存関係に関する情報を生成し、クラス間依存関係定義表242(図22)に追加格納する(S505)
まず、クラス構造テンプレート適用部13は、ステップS503の段階で発行したクラスIDを、クラス間依存関係定義表242の「関係先クラスID」に格納し、ステップS505で関係元サービスインタフェースIDをキーとして、最終的に取得した関係元クラスIDを、「関係元クラスID」として追加格納する。さらに、クラス構造テンプレート適用部13は、この2つのクラスIDに対し、クラス間依存関係IDを発行し、クラス間依存関係定義表242の「クラス間依存関係ID」に格納する。
同様に、クラス構造テンプレート適用部13は、ステップS503で発行したクラスIDを、クラス間依存関係定義表242の「関係元クラスID」に格納し、ステップS505で関係先サービスインタフェースIDをキーとして、最終的に取得した関係元クラスIDを、「関係先クラスID」として追加格納する。さらに、クラス構造テンプレート適用部13は、この2つのクラスIDに対し、クラス間依存関係IDを発行し、クラス間依存関係定義表242の「クラス間依存関係ID」に格納する。
以上で、本処理における生成したクラスと、関係先および関係元のクラス間の依存関係に関する情報の生成・格納を終了する。
ステップS505の後、クラス構造テンプレート適用部13は、サービスインタフェース間依存関係表を参照して、未選択のサービスインタフェース間依存関係IDが存在するか否かを判定する(S506)。
ステップS506の結果、存在する場合(S506→Yes)、クラス構造テンプレート適用部13は、ステップS501の処理へ戻って、次のサービスインタフェース間依存関係IDを選択する。
ステップS506の結果、存在しない場合(S506→No)、クラス構造テンプレート適用部13は、ステップS204の処理へ進む。
(サービスインタフェースに基づくテンプレート適用処理)
図36は、本実施形態に係るサービスインタフェースに基づくテンプレート適用処理(図32のステップS204)の流れを示すフローチャートである。
次に、クラス構造テンプレート適用部13は、取得したサービスインタフェース定義表212からサービスインタフェースIDを1つ選択する(S601)。同時に、クラス構造テンプレート適用部13は、対応するサービスインタフェース名および所属コンポーネントIDを取得する(S602)。
そして、クラス構造テンプレート適用部13は、取得したサービスインタフェースIDをキーとして、サービス入出力定義表221(図14)を参照して「画面入力」、「XMLファイル入力」、などの各フィールドを検索する(S603)。
クラス構造テンプレート適用部13は、ステップS603で取得したサービス入出力定義表のうち、「TRUE」であるもののフィールド名を取得する(図15の例では、「S001」は「画面入力」と「画面出力」、「S002」は「画面入力」と「帳票出力」)。次に、クラス構造テンプレート適用部13は、クラス構造テンプレート定義表231(図16)の「適用判断基準項目」を参照し、取得したフィールド名と、「適用判断基準項目」の内容が一致する行であるクラス構造テンプレートレコードの一覧を取得する(S604)。ここで、クラス構造テンプレートレコードは、1つしか取得されない場合もあるし、複数取得される場合もある。
クラス構造テンプレート適用部13は、取得したクラス構造テンプレートレコードのうち、一つを選択する。
<クラスに関する情報の生成・格納>
クラス構造テンプレート適用部13は、以下に示す手順で画面入力のクラスに関する情報を生成し、クラス定義表241(図21)に格納する(S605)。
まず、クラス構造テンプレート適用部13は、クラステンプレート定義表232(図17)を検索して、「適用判断基準」が「サービス入出力」であり、かつ選択したクラス構造テンプレートレコードについて「適用判断基準項目」がステップS604で「TRUE」を検出した項目(この例の場合は、「画面入力」)の文字列が含まれているクラステンプレートIDを取得する。(図17の例では、この例の場合に使用するクラステンプレートIDは、符号2321,2322の行に対応するクラステンプレートIDである)。
次に、クラス構造テンプレート適用部13は、取得したクラステンプレートIDのうち、任意の1つを選択し(例えば、図17の符号2321に対応するID)、選択したテンプレートIDに対応する「生成クラス名」に格納されている文字列(ここでは、「画面入力情報取得」)を取得する。
そして、ステップS602で取得したサービスインタフェース名の文字列の後に、先に取得した生成クラス名の文字列(ここでは、「画面入力情報取得」)を付け加えた文字列(例えば、「サービス11画面入力情報取得」)を画面入力情報取得のためのクラス名として生成する。
そして、クラス構造テンプレート適用部13は、クラス定義表241(図21)にデータを格納する。具体的には、生成したクラス名を「クラス名」に格納し、ステップS602で取得した所属コンポーネントIDを「所属コンポーネントID」に格納し、取得したクラステンプレートIDを、クラス定義表241の「クラステンプレートID」に格納する。最後に、クラス構造テンプレート適用部13は、他のクラスと重複しないクラスIDを発行し、クラス定義表241の「クラスID」に格納する。
まだ処理を行っていないクラステンプレートIDについても同様の処理を行う。図17の行2322に対応するクラステンプレートIDが処理の対象となる場合も例に挙げる。なお、図17の符号2322の行のように、「名称取得対象」が「NULL」である場合は、「画面入力情報取得」の前に文字列を付加しない。
以上で、本処理におけるクラスに関する情報の生成・格納を終了する。
<クラス間の依存関係に関する情報の生成・格納>
ステップS605の後、クラス構造テンプレート適用部13は、以下の手順でクラス間の依存関係に関する情報を生成し、生成した情報をクラス間依存関係定義表242(図2
2)に格納する(S606)。
まず、クラス構造テンプレート適用部13は、ステップS604で選択したクラス構造テンプレートレコードに含まれるテンプレートIDを取得する。
そして、クラス構造テンプレート適用部13は、当該取得したテンプレートIDをキーとして、クラス間依存関係テンプレート定義表233(図18)の「テンプレートID」のフィールドを検索し、対応する行であるクラス間依存関係テンプレートレコードを取得する。ここで、取得されるクラス間依存関係テンプレートレコードは、1つしかないときもあるし、複数あるときもある。次に、クラス構造テンプレート適用部13は、取得したクラス間依存関係テンプレートレコードのうち、1つを選択する。
クラス構造テンプレート適用部13は、選択したクラス間依存関係テンプレートレコードの関係元クラステンプレートIDおよび関係先クラステンプレートIDを取得する。
関係元クラステンプレートIDがS605のクラステンプレートIDと一致する場合、クラス構造テンプレート適用部13は、関係先クラステンプレートIDおよびステップS405の段階で発行したクラスの所属コンポーネントIDをキーとしてクラス定義表241(図21)の「クラステンプレートID」のフィールドと「所属コンポーネントID」フィールドを検索してクラスIDをすべて取得し、このクラスIDをクラス間依存関係定義表242の「関係先クラスID」に格納する。
それぞれの「関係元クラスID」には、ステップS605で生成したクラスのクラスIDを格納する。
また、関係先クラステンプレートIDがS605のクラステンプレートIDと一致する場合、クラス構造テンプレート適用部13は、関係元クラステンプレートIDおよびステップS605の段階で発行したクラスの所属コンポーネントIDをキーとしてクラス定義表241(図21)の「クラステンプレートID」のフィールドと「所属コンポーネントID」フィールドを検索してクラスIDをすべて取得し、このクラスIDをクラス間依存関係定義表242の「関係元クラスID」に格納する。
それぞれの「関係先クラスID」には、ステップS605で生成したクラスのクラスIDを格納する。
例えば、関係元クラステンプレートが「コントローラ」型、関係先クラステンプレートが「画面入力」型であった場合には後者である。
さらに、クラス構造テンプレート適用部13は、クラス間依存関係IDを新たに発行すると、格納した「関係元クラスID」および「関係先クラスID」に対応するように、クラス間依存関係定義表242(図22)の該当する項目に格納する。
そして、クラス構造テンプレート適用部13は、取得したクラス間依存関係テンプレートレコードのうち、未選択のクラス間依存関係テンプレートレコードがあれば、ステップS606を繰り返し、未選択のクラス間依存関係テンプレートレコードがなければ、ステップS607の処理へ進む。
ステップS606の後、クラス構造テンプレート適用部13は、ステップS604で取得されたクラス構造テンプレートレコードのうち、未選択のクラス構造テンプレートレコードが存在するか否かを判定する(S607)。
ステップS607の結果、存在する場合(S607→Yes)、クラス構造テンプレート適用部13は、ステップS604へ処理を戻し、次のクラス構造テンプレートレコードについて処理を行う。
ステップS607の結果、存在しない場合(S607→No)、クラス構造テンプレート適用部13は、ステップS601で取得したサービスインタフェースIDのうち、未選択のサービスインタフェースIDが存在するか否かを判定する(S608)。
ステップS608の結果、存在する場合(S608→Yes)、クラス構造テンプレート適用部13は、ステップS601へ処理を戻し、次のサービスインタフェースIDについて処理を行う。
ステップS608の結果、存在しない場合(S608→No)、クラス構造テンプレート適用部13は、図31のステップS103の重複クラス構造検出処理へ進む。
(重複クラス検出処理)
図37は、本実施形態に係る重複クラス検出処理(図31のステップS103)の流れを示すフローチャートである。
なお、図37中に記載の「クラスA」は重複を調べるクラスを表し、「クラスB」は「クラスA」との比較対象のクラスを表すこととする。
まず、重複クラス構造検出部14は、クラス定義表241を仮リストにコピーして、仮リストを作成する(S701)。
次に、重複クラス構造検出部14は、仮リストの1番上のクラスIDを選択する(これをクラスAのIDとする)(S702)。
続いて、重複クラス構造検出部14は、仮リストからクラスAのIDに対応する(クラスAの)所属コンポーネントIDと、クラステンプレートIDとを取得する(S703)。
次に、重複クラス構造検出部14は、仮リストを参照して、クラスAのID以外のクラスIDを1つ選択する(これをクラスBのIDとする)(S704)。
続いて、重複クラス構造検出部14は、仮リストからクラスBのIDに対応する(クラスBの)所属コンポーネントIDと、クラステンプレートIDとを取得する(S705)。
そして、重複クラス構造検出部14は、クラスAの所属コンポーネントIDおよびクラステンプレートIDと、クラスBの所属コンポーネントIDおよびクラステンプレートIDとをそれぞれ比較する(S706)。
そして、重複クラス構造検出部14は、当該比較の結果、クラスAの所属コンポーネントIDおよびクラステンプレートIDと、クラスBの所属コンポーネントIDおよびクラステンプレートIDとが共に等しいか否かを判定する(S707)。つまり、重複クラス構造検出部14は、クラスAの所属コンポーネントと、クラスBの所属コンポーネントIDとが等しく、かつクラスAのクラステンプレートIDと、クラスBのクラステンプレートIDとが等しいか否かを判定する。
ステップS707の結果、共に等しくない場合(S707→No)、すなわち、重複クラス構造検出部14は、クラスAの所属コンポーネントと、クラスBの所属コンポーネントIDとが等しくない、またはクラスAのクラステンプレートIDと、クラスBのクラステンプレートIDとが等しくない場合、重複クラス構造検出部14は、ステップS709へ処理を進める。
ステップS707の結果、共に等しい場合(S707→Yes)、重複クラス構造検出部14は、重複クラスグループの定義処理を行う(S708)。ステップS708の処理は、図38を参照して後記する。
さらに、重複クラス構造検出部14は、クラスAのIDとクラスBのIDとに重複クラスグループIDを発行し、発行した重複クラスグループIDとクラスAのIDとクラスBのIDとを重複クラス表252(図26)に格納する(S709)。具体的には、重複クラス構造検出部14は、クラスAのIDを重複クラス表252の「重複クラスID」に格納し、発行した重複クラスグループIDを「重複クラスグループID」に格納する。続いて、重複クラス構造検出部14は、重複クラス表252のクラスAのIDを格納した行の次の行における「重複クラスID」にクラスBのIDを格納し、発行した重複クラスグループIDを「重複クラスグループID」に格納する。
そして、重複クラス構造検出部14は、仮リストを参照して、クラスBのIDとして選択されていないクラスIDが存在するか否かを判定する(S710)。
ステップS710の結果、クラスBのIDとして選択されていないクラスIDが存在する場合(S710→Yes)、重複クラス構造検出部14は、ステップS704の処理へ戻って、仮リストから次のクラスBのIDを選択する。
ステップS710の結果、クラスBのIDとして選択されていないクラスIDが存在しない場合(S710→Yes)、重複クラス構造検出部14は、仮リストを参照して、クラスAのIDとして選択されていないクラスIDが存在するか否かを判定する(S711)。
ステップS711の結果、クラスAのIDとして選択されていないクラスIDが存在する場合(S711→Yes)、重複クラス構造検出部14は、ステップS702の処理へ戻って、仮リストから次のクラスAのIDを選択する。
ステップS711の結果、クラスAのIDとして選択されていないクラスIDが存在しない場合(S711→No)、処理部10は、図31のステップS104のクラス構造調整処理へ進む。
(重複クラスグループの定義処理)
図38は、本実施形態に係る重複クラスグループの定義処理(図37のステップS708)の処理である。
まず、重複クラス構造検出部14は、図37のステップS707の比較で等しいと判定した所属コンポーネントIDとクラステンプレートIDを取得する(S801)。
次に、重複クラスグループ表251(図27)の「所属コンポーネントID」と「クラステンプレートID」のフィールドを検索し、ステップS801で取得した所属コンポーネントIDとクラステンプレートIDと同じIDが存在するか否かを判定する(S802)。
ステップS802の結果、存在する場合(S802→Yes)、処理部10は、図37のステップS709へ処理を進める。
ステップS802の結果、存在しない場合(S802→No)、重複クラス構造検出部14は、ステップS801で取得したクラステンプレートIDをキーとして、クラステンプレート定義表232(図17)の「クラステンプレートID」において該当する「統合」の項目を参照する。そして、重複クラス構造検出部14は、参照した「統合」の項目が「TRUE」であるか否かを判定することによって、統合が可能であるか否かを判定する(S803)。
ステップS803の結果、統合が可能である場合(S803→Yes)、すなわち、クラステンプレート定義表232(図17)の該当する「統合」の項目が「TRUE」である場合、重複クラス構造検出部14は、他の重複クラスグループIDと重複しない重複クラスグループIDを発行し、「調整方法」を統合として重複クラスグループ表251(図25)にデータを登録する(S804)。具体的には、重複クラス構造検出部14は、発行した重複クラスグループIDを重複クラスグループ表251の「重複クラスグループID」の項目に格納し、ステップS801で取得した所属コンポーネントIDおよびクラステンプレートIDを、「所属コンポーネントID」および「クラステンプレートID」にそれぞれ格納する。さらに、重複クラス構造検出部14は、重複クラスグループ表251の「調整方法」に「統合」を格納する。そして、処理部10は、図37のステップS709へ処理を進める。
ステップS803の結果、統合が可能でない場合(S803→No)、すなわち、クラステンプレート定義表232(図17)の該当する「統合」の項目が「FALSE」である場合、重複クラス構造検出部14は、ステップS801で取得したクラステンプレートIDをキーとして、クラステンプレート定義表232(図19)の「クラステンプレートID」において該当する「抽出」の項目を参照する。そして、重複クラス構造検出部14は、参照した「抽出」の項目が「TRUE」であるか否かを判定することによって、抽出が可能であるか否かを判定する(S805)。
ステップS805の結果、抽出が可能でない場合(S805→No)、すなわち、クラステンプレート定義表232(図19)の該当する「抽出」の項目が「FALSE」である場合、処理部10は、図37のステップS709へ処理を進める。
ステップS805の結果、抽出が可能である場合(S805→Yes)、すなわち、クラステンプレート定義表232(図19)の該当する「抽出」の項目が「TRUE」である場合、重複クラス構造検出部14は、他の重複クラスグループIDと重複しない重複クラスグループIDを発行し、「調整方法」を抽出として重複クラスグループ表251(図25)にデータを登録する(S806)。具体的には、重複クラス構造検出部14は、発行した重複クラスグループIDを重複クラスグループ表251の「重複クラスグループID」の項目に格納し、ステップS801で取得した所属コンポーネントIDおよびクラステンプレートIDを、「所属コンポーネントID」および「クラステンプレートID」にそれぞれ格納する。さらに、重複クラス構造検出部14は、重複クラスグループ表251の「調整方法」に「抽出」を格納する。そして、処理部10は、図37のステップS709へ処理を進める。
(クラス構造調整処理)
図39は、本実施形態に係るクラス構造調整処理(図31のステップS104)の流れを示すフローチャートである。
まず、クラス構造調整部15は、重複クラスグループ表251(図25)を参照し、重複クラスグループIDを1つ選択する(S901)。
次に、クラス構造調整部15は、ステップS901で取得した重複クラスグループIDに対応する重複クラスグループ表251(図25)の「調整方法」を参照し、該当するデータが「統合」であるか否かを判定する(S902)。
ステップS902の結果、「統合」ではない場合(S902→No)、クラス構造調整部15は、ステップS901で取得した重複クラスグループIDに対応する重複クラスグループ表251(図25)の「調整方法」を参照し、該当するデータが「抽出」であるか否かを判定する(S903)。なお、ステップS903の処理は、省略してもよい。
ステップS903の結果、「抽出」ではない場合(S903→No)、クラス構造調整部15は、ステップS911へ処理を進める。つまり、「調整方法」が「統合」でも「抽出」でもない場合、クラス構造調整部15は、対象となるクラスに対し統合も抽出もしない。
<抽出クラスに関する情報の生成・格納>
ステップS903の結果、「抽出」である場合(S903→Yes)、クラス構造調整部15は、以下の手順によって、複数のクラスに共通の機能を抽出した抽出クラス(図8におけるクラス564)に関する情報を生成し、クラス定義表241(図21)に格納する(S904)。
まず、クラス構造調整部15は、重複クラスグループ表251(図25)において、ステップS901で選択した重複クラスグループIDの所属コンポーネントIDと、クラステンプレートIDを取得する。そして、クラス構造調整部15は、取得したクラステンプレートIDをキーとして、クラステンプレート定義表232(図17)を検索し、対応する「生成クラス名」を取得する。そして、クラス構造調整部15は、他のクラスと重複しないクラスIDを発行すると、発行したクラスIDと、取得した生成クラス名と、取得した所属コンポーネントIDと、クラステンプレートIDとを、クラス定義表241(図21)の「クラスID」、「クラス名」、「所属コンポーネントID」および「クラステンプレートID」にそれぞれ格納する。すなわち、クラス構造調整部15は、取得した生成クラス名をそのまま抽出クラス名とする。
以上で、本処理における抽出クラスに関する情報の生成・格納を終了する。
<抽出クラスと、抽出元クラスとの間の関係に関する情報の生成・格納>
ステップS904の次に、クラス構造調整部15は、以下に示す手順で、抽出クラスと、抽出元クラスとの間の関係情報を生成し、生成した情報をクラス間依存関係定義表242(図24)に格納する(S905)。
ステップS904の処理が終了すると、クラス構造調整部15は、重複クラスグループ表251(図25)において、ステップS901で選択した重複クラスグループIDをキーとして、重複クラス表252(図26)を参照し、対応する重複クラスIDをすべて取得する。
次に、クラス構造調整部15は、取得した重複クラスIDそれぞれをキーとして、クラス間依存関係定義表242(図22)の「関係元クラスID」を検索し、取得した重複クラスIDが存在するか否かを判定する。
存在する場合、対応する関係先クラスIDを取得した後、関係先クラスIDをステップS904で抽出クラスに対して発行したクラスIDに置換し、対応する「抽出関係」を「TRUE」にする。
次に、クラス構造調整部15は、新たなクラス間依存関係IDを発行すると、発行したクラス間依存関係IDをクラス間依存関係定義表242(図22)の「クラス間依存関係ID」に格納し、「関係元クラスID」にステップS904で抽出クラスに対して発行したクラスIDを格納し、「関係先クラスID」に取得しておいた関係先クラスIDを格納し、「抽出関係」を「TRUE」にする。
「関係元クラスID」に、取得した重複クラスIDが存在しない場合、クラス構造調整部15は、取得した重複クラスIDそれぞれに対してクラス間依存関係IDを発行すると、発行したクラス間依存関係IDをクラス間依存関係定義表242(図22)の「クラス間依存関係ID」に格納し、取得した重複クラスIDを「関係元クラスID」に格納し、ステップS904で抽出クラスに対して発行したクラスIDを「関係先クラスID」に格納し、さらに「抽出関係」に「TRUE」を格納する。
以上で、本処理における抽出クラスと、抽出元クラスとの間の関係に関する情報の生成・格納を終了する。
ステップS902で「統合」である場合(S902→Yes)、クラス構造調整部15は、重複クラス表252の「重複クラスグループID」のフィールドを検索して、ステップS901で選択した重複クラスグループIDに対応する重複クラスIDを1つ取得する(S906)。
<重複クラスグループと、関係先クラスとの関係の登録>
次に、クラス構造調整部15は、以下の手順で、重複クラスグループと、関係先クラスとの関係を重複関係先クラス表254(図28)に登録する(S907)。
次に、クラス構造調整部15は、ステップS906で取得した重複クラスの重複クラスIDをキーとして、クラス間依存関係定義表242(図22)の「関係先クラスID」を検索し対応する関係先クラスIDを取得した後、クラス間依存関係定義表242の該当する行を削除する。
そして、クラス構造調整部15は、取得した関係先クラスIDを重複関係先クラス表254(図28)の「重複クラスの関係先クラスID」に、ステップS901で取得した重複クラスグループIDを「重複クラスグループID」に格納する。
以上で、本処理における重複クラスグループと、関係先クラスとの関係の登録の処理を終了する。
<重複クラスグループと、関係元クラスとの関係の登録>
次に、クラス構造調整部15は、以下の手順で、重複クラスグループと、関係元クラスとの関係を重複関係元クラス表253(図27)に登録する(S908)。
次に、クラス構造調整部15は、ステップS906で取得した重複クラスの重複クラスIDをキーとして、クラス間依存関係定義表242(図22)の「関係先クラスID」を検索し対応する関係元クラスIDを取得した後、クラス間依存関係定義表242の該当する行を削除する。
そして、クラス構造調整部15は、取得した関係元クラスIDを重複関係元クラス表253(図27)の「重複クラスの関係元クラスID」に、ステップS901で取得した重複クラスグループIDを「重複クラスグループID」に格納する。
以上で、本処理における重複クラスグループと、関係元クラスとの関係の登録を終了する。
なお、ステップS908の後に、クラス構造調整部15は、以下の手順で重複クラスグループと、関係先テーブルとの関係を登録してもよい。
すなわち、クラス構造調整部15は、ステップS906で取得した重複クラスIDのそれぞれをキーとして、クラス・テーブル間依存関係定義表243(図23)の「関係元クラスID」を検索し、対応する関係先テーブルIDを取得すると、重複関係先テーブル表255(図29)の「重複クラス関係先テーブルID」に取得した関係先テーブルIDを格納し、ステップS901で取得した重複クラスグループIDを「重複クラスグループID」に格納してもよい。このとき、該当するクラス・テーブル間依存関係定義表243(図23)のの行を削除してもよい。
<統合クラスに関する情報の生成・格納>
ステップS908の次に、クラス構造調整部15は、以下の手順により、統合クラスに関する情報を生成し、生成した統合クラス表256(図30)に格納する(S909)。
クラス構造調整部15は、ステップS901で選択した重複クラスグループIDに対応するクラスID(統合クラスID)を発行し、発行した統合クラスIDと、重複クラスグループIDとを統合クラス表256(図30)の該当する項目に格納する。
以上で、本処理における統合クラスに関する情報の生成・格納が終了する。
ステップS909の次に、クラス構造調整部15は、重複クラス表252を参照して、ステップS901で取得した重複クラスグループIDと一致する重複クラスグループIDを持ち、かつステップS906で未選択の重複クラスIDが存在するか否かを判定する(S910)。
ステップS910の結果、存在する場合(S910→Yes)、クラス構造調整部15は、処理をステップS906へ戻し、次の重複クラスIDを選択する。
ステップS910の結果、存在しない場合(S910→No)、クラス構造調整部15は、未選択の重複クラスグループIDが存在するか否かを判定する(S911)。
ステップS911の結果、存在する場合(S911→Yes)、クラス構造調整部15は、ステップS901へ処理を戻し、次の重複クラスグループIDを選択する。
<統合クラスに関する情報の反映>
ステップS911の結果、存在しない場合(S911→No)、クラス構造調整部15は、以下の手順で、統合クラスに関する情報を、クラス定義表241(図21)、クラス間依存関係定義表242(図22)およびクラス・テーブル間依存関係定義表243(図23)に反映する(S912)
<<クラス定義表への反映>>
クラス構造調整部15は、統合クラス表256(図30)の統合クラスIDを1つ選択する。
次に、クラス構造調整部15は、クラス定義表241(図21)に、統合クラスIDを「クラスID」として有する行を新たに生成する。そして、クラス構造調整部15は、統合クラス表256(図30)で統合クラスIDに対応している重複クラスグループIDを取得すると、重複クラス表252から重複クラスグループIDに対応している重複クラスIDを取得する。さらに、クラス構造調整部15は、重複クラスIDをキーとして、クラス定義表241(図21)を参照して、対応するクラス名を取得する。そして、クラス構造調整部15は、取得したクラス名を、新たな統合クラス名として、クラス定義表241(図21)における新たに生成した行の「クラス名」に該当する項目に格納する。そして、クラス構造調整部15は、取得した重複クラスIDのそれぞれをキーとして、クラス定義表241(図21)の「クラスID」を検索し、対応する所属コンポーネントおよびクラステンプレートを新たに生成した行の対応する項目へ追加格納する。
以上で、本処理におけるクラス定義表への反映を終了する。
<<クラス間依存関係定義表への反映>>
次に、クラス構造調整部15は、クラス定義表への反映の段階で取得した重複クラスグループIDをキーとして、重複関係元クラス表253(図27)の「重複クラスグループID」のフィールドを検索し、対応する重複クラスの関係元クラスIDをすべて取得する。次に、クラス構造調整部15は、取得した重複クラスの関係元クラスIDのそれぞれをキーとして、クラス間依存関係定義表242(図22)の「関係元クラスID」を検索し、対応する「関係先クラスID」に格納されているクラスIDを統合クラスIDに置換する。
そして、クラス構造調整部15は、取得した重複クラスの関係元クラスIDのそれぞれをキーとして、クラス間依存関係定義表242(図22)の「関係先クラスID」を検索し、対応する「関係元クラスID」に格納されているクラスIDを統合クラスIDに置換する。
以上で、本処理におけるクラス間依存関係定義表への反映を終了する。
<<クラス・テーブル間依存関係定義表への反映>>
さらに、クラス構造調整部15は、クラス定義表への反映の段階で取得した重複クラスIDのそれぞれをキーとして、クラス・テーブル間依存関係定義表243(図23)の「関係元クラスID」を検索し、対応する「関係元クラスID」に格納されているクラスIDを統合クラスIDに置換する。
そして、クラス構造調整部15は、クラス定義表241(図21)において、取得している重複クラスIDに対応するクラスIDのレコード(行)を削除する。次に、クラス構造調整部15は、統合クラス表256(図30)において、まだ選択されていない統合クラスIDが存在するか否かを判定する。
存在する場合、クラス構造調整部15は、クラス定義表への反映の初めの処理へ戻り、次の統合クラスIDに関する処理を行う。
存在しない場合、処理部10は、図31のステップS105へ処理を進める。
(画面例)
図40は、本実施形態に係る編集メニュー画面の例を示す図である。
編集メニュー画面5001は、コンポーネント定義編集ボタン5002、サービスインタフェース定義編集ボタン5003、テーブル編集ボタン5004、サービスインタフェース間依存関係定義編集ボタン5005、サービスインタフェース・テーブル間依存関係定義編集ボタン5006、サービス入出力定義編集ボタン5007、テーブル使用方法定義編集ボタン5008、クラス構造テンプレート適用ボタン5009および処理を終了するための終了ボタン5010を有する。各ボタンが入力部30を介して選択入力されることによって、図41から図47を参照して後記する各画面が表示される。ユーザは、この画面を介して図9から図15に示す各表の作成・編集が可能となる。また、本実施形態では図示しないクラス構造テンプレート定義編集画面、クラステンプレート定義編集画面、クラス間依存関係テンプレート定義編集画面、クラス・テーブル間依存関係テンプレート定義編集画面、クラス構造テンプレート・クラステンプレート間依存関係定義変種画面によって、図16から図20に示す表も作成される。
図41は、本実施形態に係るコンポーネント定義編集画面の例を示す図である。
コンポーネント定義編集画面5100において、入力部30を介してコンポーネント名入力エリア5101にコンポーネント名が入力され登録ボタン5103が選択入力されると、コンポーネントIDが発行され、コンポーネントID表示エリア5102に表示される。そして、その時点でのコンポーネント定義表211が表表示エリア5108に表示される。また、入力部30を介して、新規ボタン5104が選択入力されると、新規のコンポーネント定義表211が作成され、編集ボタン5105が選択入力されると、コンポーネント定義表211の編集が行われ、削除ボタン5106が押下されると、コンポーネント定義表211の選択した行が削除され、終了ボタン5107が選択入力されるとコンポーネント定義編集処理(図31のステップS111)が終了する。
図42は、本実施形態に係るサービスインタフェース定義編集画面の例を示す図である。
サービスインタフェース定義編集画面5200において、入力部30を介してサービスインタフェース名入力エリア5201にコンポーネント名が入力され、所属コンポーネント名入力エリア5202に所属コンポーネント名が入力され、登録ボタン5103が選択入力されると、サービスインタフェースIDが発行され、サービスインタフェースID表示エリア5203に表示される。そして、その時点でのサービスインタフェース定義表212が表表示エリア5204に表示される。また、入力部30を介して、新規ボタン5104が選択入力されると、新規のサービスインタフェース定義表212が作成され、編集ボタン5105が選択入力されると、サービスインタフェース定義表212の編集が行われ、削除ボタン5106が押下されると、サービスインタフェース定義表212の選択した行が削除され、終了ボタン5107が選択入力されるとサービスインタフェース定義編集処理(図31のステップS112)が終了する。
図43は、本実施形態に係るテーブル定義編集画面の例を示す図である。
テーブル定義編集画面5300において、入力部30を介してテーブル名入力エリア5301にテーブル名が入力され、所属コンポーネント名入力エリア5302に所属コンポーネント名が入力され、登録ボタン5103が選択入力されると、テーブルIDが発行され、テーブルID表示エリア5303に表示される。そして、その時点でのサービスインタフェース定義表212が表表示エリア5304に表示される。また、入力部30を介して、新規ボタン5104が選択入力されると、新規のテーブル定義表213が作成され、編集ボタン5105が選択入力されると、テーブル定義表213の編集が行われ、削除ボタン5106が押下されると、テーブル定義表213の選択した行が削除され、終了ボタン5107が選択入力されるとテーブル定義編集処理(図31のステップS113)が終了する。
図44は、本実施形態に係るサービスインタフェース間依存関係定義編集画面の例を示す図である。
サービスインタフェース間依存関係定義編集画面5400において、入力部30を介して関係元サービスインタフェース名入力エリア5401に関係元サービスインタフェース名が入力され、関係先サービスインタフェース名入力エリア5402に関係先サービスインタフェース名が入力され、関係登録ボタン5405が選択入力される。すると、サービスインタフェース間依存関係表示エリア5404に、入力されたサービスインタフェースが関係付けられたことを示す「×」の印が表示される。また、関係削除ボタン5406が入力部30を介して選択入力されると、入力されたサービスインタフェース間の関係が削除される。また、関係登録ボタンが選択入力されると、サービスインタフェース間依存関係IDが発行され、サービスインタフェース間依存関係ID表示エリア5403に表示される。サービスインタフェース間依存関係定義編集画面5400にて入力された情報は、サービスインタフェース間依存関係定義表214(図12)に格納される。なお、終了ボタン5407が選択入力されると、サービスインタフェース間依存関係定義編集処理(図31のステップS114)が終了する。
図45は、本実施形態に係るサービスインタフェース・テーブル間依存関係定義編集画面の例を示す図である。図45において、図44と同様の構成要素には、同一の符号を付して説明を省略する。
サービスインタフェース・テーブル間依存関係定義編集画面5500において、入力部30を介して関係元サービスインタフェース名入力エリア5501に関係元サービスインタフェース名が入力され、関係先テーブル名入力エリア5502に関係先テーブル名が入力され、関係登録ボタン5405が選択入力される。すると、サービスインタフェース・テーブル間依存関係表示エリア5504に、入力されたサービスインタフェースとテーブルとが関係付けられたことを示す「×」の印が表示される。また、関係削除ボタン5406が入力部30を介して選択入力されると、入力されたサービスインタフェースと、テーブルとの関係が削除される。また、関係登録ボタンが選択入力されると、サービスインタフェース・テーブル間依存関係IDが発行され、サービスインタフェース・テーブル間依存関係ID表示エリア5503に表示される。サービスインタフェース間依存関係定義編集画面5500にて入力された情報は、サービスインタフェース・テーブル間依存関係定義表215(図13)に格納される。なお、終了ボタン5407が選択入力されると、サービスインタフェース・テーブル間依存関係定義編集処理(図31のステップS115)が終了する。
図46は、本実施形態に係るサービス入出力定義編集画面の例を示す図である。
サービス入出力定義編集画面5600には、画面入力選択プルダウンメニュー5601、XMLファイルプルダウンメニュー5602、テキストファイル入力プルダウンメニュー5603、画面出力プルダウンメニュー5605、帳票出力プルダウンメニュー5606、CSVファイル出力プルダウンメニュー5607、XMLファイルプルダウンメニュー5608などが表示されている。各プルダウンメニュー5601〜5608において、選択された情報(該当する機能を有するか否かに関する情報)は、登録ボタン5613が入力部30を介して選択入力されることによって、サービス入出力定義表221(図14)に格納される。サービス入出力定義表221において、格納されるレコードは、行選択ボタン5616で選択されている行に相当するレコードである。なお、行選択ボタン5616で選択されている行に関する情報は、サービスインタフェースID表示エリア5609、サービスインタフェース名表示エリア5610および所属コンポーネント名表示エリア5611において表示されている。なお、編集ボタン5614が入力部30を介して選択入力されると、行選択ボタン5616で選択されている行(レコード)の編集を行うことが可能であり、終了ボタン5612が選択入力されると、サービス入出力定義編集(図31のステップS116)が終了する。
図47は、本実施形態に係るテーブル使用方法定義編集画面の例を示す図である。図47において、図46と同様の構成要素には同一の符号を付して説明を省略する。
サービス入出力定義編集画面5700には、テーブルデータ作成プルダウンメニュー5701、テーブルデータ参照プルダウンメニュー5702、テーブルデータ検索参照プルダウンメニュー5703、テーブルデータ更新プルダウンメニュー5704、テーブルデータ削除プルダウンメニュー5705などが表示されている。各プルダウンメニュー5701〜5705において、選択された情報(該当する機能を有するか否かに関する情報)は、登録ボタン5613が入力部30を介して選択入力されることによって、テーブル使用方法定義表222(図15)に格納される。テーブル使用方法定義表222において、格納されるレコードは、行選択ボタン5616で選択されている行に相当するレコードである。なお、行選択ボタン5616で選択されている行に関する情報は、サービスインタフェース・テーブル間依存関係ID表示エリア5706、関係元サービスインタフェース名表示エリア5707および関係先テーブル名表示エリア5708において表示されている。なお、編集ボタン5614が入力部30を介して選択入力されると、行選択ボタン5616で選択されている行(レコード)の編集を行うことが可能であり、終了ボタン5612が選択入力されると、テーブル使用方法定義編集(図31のステップS117)が終了する。
(効果)
本実施形態によれば、サービスインタフェースの機能に関する情報や、サービスインタフェース間の関係や、サービスインタフェース・テーブル間の関係や、クラスの機能に関するテンプレートなどを入力することによって、コンポーネントを構成するクラスの構造を出力することができる。この結果、設計者の意図に左右されず、所定の制約に従ったクラス構造を容易に生成することができる。また、クラス構造を生成する際に、ユースケースのような文章による記述を必要としない。
本実施形態に係るクラス構造生成装置の構成例を示すブロック図である。 図1における各記憶部の構成例を示す図である。 本実施形態に係るクラス構造生成装置のハードウェア構成の例を示す図である。 本実施形態に係るコンポーネント体系表示画面の例を示す図である。 本実施形態に係るクラス構造表示画面の例を示す図である。 金融商品契約ソフトウェアにおける表示コンポーネント体系の例を示す図である。 金融商品契約ソフトウェアにおける表示クラス構造の例を示す図である。 金融商品契約ソフトウェアにおける表示クラス構造の例を示す図である。 は コンポーネント定義表の例を示す図である。 サービスインタフェース定義表の例を示す図である。 テーブル定義表の例を示す図である。 サービスインタフェース間依存関係定義表の例を示す図である。 サービスインタフェース・テーブル間依存関係定義表の例を示す図である。 サービス入出力定義表の例を示す図である。 テーブル使用方法定義表の例を示す図である。 クラス構造テンプレート定義表の例を示す図である。 クラステンプレート定義表の例を示す図である。 クラス間依存関係テンプレート定義表の例を示す図である。 クラス・テーブル間依存関係テンプレート定義表の例を示す図である。 クラス構造テンプレート・クラステンプレート間依存関係定義表の例を示す図である。 クラス定義表の例を示す図である。 クラス間依存関係定義表の例を示す図である。 クラス・テーブル間依存関係定義表の例を示す図である。 クラス・サービスインタフェース間依存関係定義表の例を示す図である。 重複クラスグループ表の例を示す図である。 重複クラス表の例を示す図である。 重複関係元クラス表の例を示す図である。 重複関係先クラス表の例を示す図である。 重複関係先テーブル表の例を示す図である。 統合クラス表の例を示す図である。 本実施形態に係るクラス構造生成処理の全体的な流れを示すフローチャートである。 クラス構造テンプレート適用処理の全体的な流れを示すフローチャートである。 本実施形態に係るサービスインタフェースの存在に基づくテンプレート適用処理の流れを示すフローチャートである。 本実施形態に係るサービスインタフェース・テーブル間依存関係に基づくテンプレート適用処理の流れを示すフローチャートである。 本実施形態に係るサービスインタフェース間依存関係に基づくテンプレート適用処理)の流れを示すフローチャートである。 本実施形態に係るサービスインタフェースに基づくテンプレート適用処理の流れを示すフローチャートである。 本実施形態に係る重複クラス検出処理の流れを示すフローチャートである。 本実施形態に係る重複クラスグループの定義処理の処理である。 本実施形態に係るクラス構造調整処理の流れを示すフローチャートである。 本実施形態に係る編集メニュー画面の例を示す図である。 本実施形態に係るコンポーネント定義編集画面の例を示す図である。 本実施形態に係るサービスインタフェース定義編集画面の例を示す図である。 本実施形態に係るテーブル定義編集画面の例を示す図である。 本実施形態に係るサービスインタフェース間依存関係定義編集画面の例を示す図である。 本実施形態に係るサービスインタフェース・テーブル間依存関係定義編集画面の例を示す図である。 本実施形態に係るサービス入出力定義編集画面の例を示す図である。 本実施形態に係るテーブル使用方法定義編集画面の例を示す図である。
符号の説明
1 クラス構造生成装置
10 処理部
11 コンポーネント体系定義編集部(入力部)
12 サービス責務定義編集部(入力部)
13 クラス構造テンプレート適用部
14 重複クラス構造検出部(クラス構造調整部)
15 クラス構造調整部
16 クラス構造表示処理部
20 記憶部
30 入力部
40 表示部
211 コンポーネント定義表
212 サービスインタフェース定義表(入出力情報)
213 テーブル定義表(入出力情報)
214 サービスインタフェース間依存関係定義表(入出力情報、サービスインタフェース間関係情報)
215 サービスインタフェース・テーブル間依存関係定義表(入出力情報、サービスインタフェース・テーブル間関係情報)
221 サービス入出力定義表
222 テーブル使用方法定義表
231 クラス構造テンプレート定義表(機能情報)
232 クラステンプレート定義表(機能情報)
233 クラス間依存関係テンプレート定義表(関係情報)
234 クラス・テーブル間依存関係テンプレート定義表(関係情報)
235 クラス構造テンプレート・クラステンプレート依存関係定義表
241 クラス定義表(クラス情報)
242 クラス間依存関係定義表(クラス間依存関係情報)
243 クラス・テーブル間依存関係定義表
244 クラス・サービスインタフェース依存関係定義表
251 重複クラスグループ表
252 重複クラス表
253 重複関係元クラス表
254 重複関係先クラス表
255 重複関係先テーブル表
256 統合クラス表

Claims (18)

  1. ソフトウェアの機能単位の部品であるコンポーネントを構成するクラス間の関係構造を生成するクラス構造生成装置におけるクラス構造生成方法であって、
    前記クラス構造生成装置の処理部は、
    前記コンポーネントで処理されまたは処理された処理情報の入出力に関する情報である入出力情報、
    前記コンポーネントを構成するクラスの機能に関する情報である機能情報、
    および前記クラスの機能間の関係に関する情報である関係情報
    入力部を介して入力され
    前記処理部は、
    前記入力した入出力情報および機能情報を基に、前記処理情報の入出力に関連するクラスに関する情報であるクラス情報を生成し、
    前記入力した関係情報を基に、前記生成したクラス情報同士を関連付けるクラス間関係情報を生成し、
    前記生成したクラス間関係情報に基づいて、複数の前記クラス情報を関連付けて表示部に表示することを特徴とするクラス構造生成方法。
  2. 前記処理部は、
    前記入力部を介して当該情報が所属するコンポーネントの情報である所属コンポーネント情報、前記入出力情報と対応付けられて入力され
    前記生成したクラス情報は、前記所属コンポーネント情報と対応付けられ、
    前記処理部は、
    前記表示部に前記クラス情報を表示する際に、前記所属コンポーネント情報も表示することを特徴とする請求項1に記載のクラス構造生成方法。
  3. 前記機能情報は、同一の機能を有する前記クラス情報が複数生成されたとき、当該クラス情報を1つにまとめる統合が可能であるか否かに関する統合情報を有しており、
    前記処理部は、
    同一の機能を有する前記クラス情報が複数生成された場合、前記クラス情報の生成元となった前記機能情報の前記統合情報を参照し、統合が可能であった場合、前記同一の機能を有するクラス情報を1つにまとめたクラス情報を新たに生成し、
    前記まとめる前のクラス情報に関連のあったクラス情報と、前記新たに生成したクラス情報とを関連付けて、前記クラス間関係情報に格納することを特徴とする請求項1に記載のクラス構造生成方法。
  4. 前記機能情報は、共通の機能を有する前記クラス情報が複数生成されたとき、当該クラス情報から、共通の機能を抽出したクラスを生成する抽出が可能であるか否かに関する抽出情報を有しており、
    前記処理部は、
    共通の機能を有する前記クラス情報が複数生成された場合、前記クラス情報の生成元となった前記機能情報の前記抽出情報を参照し、抽出が可能であった場合、共通の機能を有するクラス情報を新たに生成し、
    当該生成したクラス情報を、前記新たに生成したクラス情報に関連付けて、前記クラス間関係情報に格納することを特徴とする請求項1に記載のクラス構造生成方法。
  5. 前記入出力情報は、前記処理情報の入出力の機能を有するサービスインタフェースの名称であるサービスインタフェース名を有し、
    前記処理部は、
    前記サービスインタフェース名を含んだクラス名を有する前記クラス情報を生成することを特徴とする請求項1に記載のクラス構造生成方法。
  6. 前記機能情報は、前記サービスインタフェースに関し、少なくとも2つの機能に関する文字列を有しており、
    前記処理部は、
    前記機能情報を基に、前記サービスインタフェースに関し、異なる機能に関する文字列を含んだクラス名を有するクラス情報を生成し、
    前記関係情報を基に、当該生成したクラス情報同士を関連付けて、前記クラス間関係情報に格納することを特徴とする請求項5に記載のクラス構造生成方法
  7. 前記機能情報は、前記サービスインタフェース間を仲介する機能に関する情報を有しており、
    前記入出力情報は、第1のサービスインタフェースと、第2のサービスインタフェース間の関係に関する情報であるサービスインタフェース間関係情報を有し、
    前記処理部は、
    前記機能情報を基に、前記サービスインタフェース間を仲介する機能を有するクラスのクラス情報を生成し、
    前記サービスインタフェース間関係情報に従って、前記生成したクラス情報を、前記第1のサービスインタフェースの名称をクラス名に有するクラス情報と、前記第2のサービスインタフェースの名称を含んだクラス名に有するクラス情報とに関連付けて、前記クラス間関係情報に格納することを特徴とする請求項5に記載のクラス構造生成方法。
  8. 前記第1のサービスインタフェースおよび前記第2のサービスインタフェースは、異なるコンポーネントに所属することを特徴とする請求項7に記載のクラス構造生成方法。
  9. 前記機能情報は、前記処理情報の入出力方法に関する情報を有しており、
    前記入出力情報は、前記処理情報の入出力方法の名称を有し、
    前記処理部は、
    前記クラス名に前記入出力方法の名称を有する前記クラス情報を生成し、
    前記機能情報および関係情報を基に、当該生成したクラス情報を、前記サービスインタフェース名を含んだクラス名を有する前記クラス情報に関連付けて、前記クラス間関係情報に格納することを特徴とする請求項5に記載のクラス構造生成方法。
  10. 前記サービスインタフェースに関する入出力種類とは、画面入力、画面出力、XMLファイル入力、XMLファイル出力、テキストファイル入力、テキストファイル出力およびCSVファイル出力のうち、少なくとも1つが含まれることを特徴とする請求項8に記載のクラス構造生成方法。
  11. 前記機能情報は、前記クラス構造生成装置が有するテーブルを参照する機能に関する情報が格納されており、
    前記入出力情報は、前記処理情報の入出力の機能を有するサービスインタフェースと、前記サービスインタフェースが参照するテーブルとの関係に関する情報であるサービスインタフェース・テーブル間関係情報を有し、
    前記処理部は、
    前記機能情報を基に、前記テーブルを参照する機能を有するクラス情報を生成し、
    前記生成したクラス情報を、前記サービスインタフェース・テーブル間関係情報に従って前記テーブルに関連付け、
    さらに前記生成したクラス情報を、前記入力されたサービスインタフェース・テーブル間関係情報に従って前記サービスインタフェースに関するクラス情報に関連付けて前記クラス間関係情報に格納することを特徴とする請求項1に記載のクラス構造生成方法。
  12. 前記入出力情報は、前記サービスインタフェースによるテーブル参照方法の名称を含み、
    前記処理部は、
    前記テーブル参照方法の名称を含んだクラス名を有する前記テーブルを参照する機能を有する前記クラス情報を生成することを特徴とする請求項11に記載のクラス構造生成方法。
  13. 前記テーブル参照方法の名称とは、データ作成、データ参照、データ検索、データ更新およびデータ削除のいずれか一つが含まれていることを特徴とする請求項12に記載のクラス構造生成方法。
  14. ソフトウェアの機能単位の部品であるコンポーネントを構成するクラス間の関係構造を生成するクラス構造生成方法をクラス構造生成装置に実行させるクラス構造生成プログラムであって、
    前記クラス構造生成装置の処理部に
    前記コンポーネントで処理されまたは処理された処理情報の入出力に関する情報である入出力情報、
    前記コンポーネントを構成するクラスの機能に関する情報である機能情報、
    および前記クラスの機能間の関係に関する情報である関係情報
    入力部を介して入力され
    前記処理部に、
    前記入力した入出力情報および機能情報を基に、前記処理情報の入出力に関連するクラスに関する情報であるクラス情報を生成し、
    前記入力した関係情報を基に、前記生成したクラス情報同士を関連付けるクラス間関係情報を生成し、
    前記生成したクラス間関係情報に基づいて、複数の前記クラス情報を関連付けて表示部に表示する処理を実行させることを特徴とするクラス構造生成プログラム。
  15. ソフトウェアの機能単位の部品であるコンポーネントを構成するクラス間の関係構造を生成するクラス構造生成装置であって、
    前記コンポーネントで処理されまたは処理された処理情報の入出力に関する情報である入出力情報、
    前記コンポーネントを構成するクラスの機能に関する情報である機能情報、
    および前記クラスの機能間の関係に関する情報である関係情報を入力する入力部、
    前記入力した入出力情報および機能情報を基に、前記処理情報の入出力に関連するクラスに関する情報であるクラス情報を生成し、前記入力した関係情報を基に、前記生成したクラス情報同士を関連付けるクラス間関係情報を生成するクラス構造テンプレート適用部、
    前記生成したクラス間関係情報に基づいて、複数の前記クラス情報を関連付けて表示部に表示させるクラス構造表示処理部を有することを特徴とするクラス構造生成装置。
  16. 前記クラス構造テンプレート適用部は、
    前記入力部を介して当該情報が所属するコンポーネントの情報である所属コンポーネント情報を、前記入出力情報と対応付けて入力し、前記生成したクラス情報、前記所属コンポーネント情報と対応付ける機能をさらに有し、
    前記クラス構造表示処理部は、
    前記表示部に前記クラス情報を表示する際に、前記所属コンポーネント情報も表示する機能をさらに有することを特徴とする請求項15に記載のクラス構造生成装置。
  17. 前記機能情報は、同一の機能を有する前記クラス情報が複数生成されたとき、当該クラス情報を1つにまとめる統合が可能であるか否かに関する統合情報を有しており、
    前記クラス構造生成装置は、
    同一の機能を有する前記クラス情報が複数生成された場合、前記クラス情報の生成元となった前記機能情報の前記統合情報を参照し、統合が可能であった場合、前記同一の機能を有するクラス情報を1つにまとめたクラス情報を新たに生成し、前記まとめる前のクラス情報に関連のあったクラス情報と、前記新たに生成したクラス情報とを関連付けて、前記クラス間関係情報に格納するクラス構造調整部を有することを特徴とする請求項15に記載のクラス構造生成装置。
  18. 前記機能情報は、共通の機能を有する前記クラス情報が複数生成されたとき、当該クラス情報から、共通の機能を抽出したクラスを生成する抽出が可能であるか否かに関する抽出情報を有しており、
    前記クラス構造生成装置は、
    共通の機能を有する前記クラス情報が複数生成された場合、前記クラス情報の生成元となった前記機能情報の前記抽出情報を参照し、抽出が可能であった場合、共通の機能を有するクラス情報を新たに生成し、当該生成したクラス情報を、前記新たに生成したクラス情報に関連付けて、前記クラス間関係情報に格納するクラス構造調整部を有することを特徴とする請求項15に記載のクラス構造生成装置。
JP2008096647A 2008-04-02 2008-04-02 クラス構造生成方法、クラス構造生成プログラムおよびクラス構造生成装置 Expired - Fee Related JP5189880B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008096647A JP5189880B2 (ja) 2008-04-02 2008-04-02 クラス構造生成方法、クラス構造生成プログラムおよびクラス構造生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008096647A JP5189880B2 (ja) 2008-04-02 2008-04-02 クラス構造生成方法、クラス構造生成プログラムおよびクラス構造生成装置

Publications (2)

Publication Number Publication Date
JP2009251769A JP2009251769A (ja) 2009-10-29
JP5189880B2 true JP5189880B2 (ja) 2013-04-24

Family

ID=41312447

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008096647A Expired - Fee Related JP5189880B2 (ja) 2008-04-02 2008-04-02 クラス構造生成方法、クラス構造生成プログラムおよびクラス構造生成装置

Country Status (1)

Country Link
JP (1) JP5189880B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914768B2 (en) * 2012-03-28 2014-12-16 Bmc Software, Inc. Automated blueprint assembly for assembling an application
JP2015184824A (ja) 2014-03-20 2015-10-22 富士通株式会社 情報処理プログラム、情報処理方法および情報処理装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1195990A (ja) * 1997-09-22 1999-04-09 Nippon Telegr & Teleph Corp <Ntt> プログラム構造表示方法および装置
JP2002222082A (ja) * 2000-11-24 2002-08-09 Fujitsu Ltd 記録媒体およびプログラム
JP5057539B2 (ja) * 2006-11-13 2012-10-24 日本証券テクノロジー株式会社 Java(登録商標)言語プログラムを用いた大規模業務系の影響分析を行うプログラム

Also Published As

Publication number Publication date
JP2009251769A (ja) 2009-10-29

Similar Documents

Publication Publication Date Title
CN106104592B (zh) 映射带键实体的属性
CN105849725B (zh) 构造用于针对多维数据结构执行的查询
CN107111639B (zh) 构建报表
US20170329786A1 (en) Data flow design with static and dynamic elements
JP5601066B2 (ja) 情報統合プログラム、装置及び方法
CN106469116B (zh) 测试场景生成辅助装置以及测试场景生成辅助方法
JPWO2008093569A1 (ja) 情報抽出規則作成支援システム、情報抽出規則作成支援方法及び情報抽出規則作成支援プログラム
KR101877828B1 (ko) 인공지능 기반의 사용자 인터페이스 통합 플랫폼 시스템
KR102639897B1 (ko) 데이터 아키텍쳐 관리 시스템
CN102222110A (zh) 数据处理装置和数据处理方法
JP2008052312A (ja) 業務仕様抽出支援システム
JP2002099561A (ja) データ変換方法およびデータ変換システム並びに記憶媒体
CN111078094A (zh) 分布式机器学习可视化装置
JP6268435B2 (ja) データベースの再構成方法、データベースの再構成プログラム、及び、データベースの再構成装置
JP2009116638A (ja) 業務仕様理解支援システム及び方法
JP2010015458A (ja) プログラム修正支援システム、プログラム修正支援方法、およびプログラム修正支援プログラム
JP5189880B2 (ja) クラス構造生成方法、クラス構造生成プログラムおよびクラス構造生成装置
US20140136152A1 (en) Analyzing hardware designs based on component re-use
KR102153259B1 (ko) 데이터 도메인 추천 방법 및 추천된 도메인을 이용하여 통합 데이터 저장소 관리 시스템을 구축하는 방법
JP7279524B2 (ja) データ管理プログラム、データ管理方法およびデータ管理システム
JP2009123114A (ja) 情報処理装置及び情報処理方法
GB2493963A (en) Database record repair
JP6710881B1 (ja) ドキュメント作成支援システム
JP6775740B1 (ja) 設計支援装置、設計支援方法及び設計支援プログラム
JP6336922B2 (ja) 業務バリエーションに基づく業務影響箇所抽出方法および業務影響箇所抽出装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100714

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121009

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121207

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: 20130108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130125

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

Free format text: PAYMENT UNTIL: 20160201

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5189880

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees