(57)【要約】【課題】仕様書を作成するための仕様データの入力を支援する仕様入力支援装置およびプログラムを提供することにある。【解決手段】第１の格納手段は、ソフトウェアまたはシステムの仕様書に記述される項目を表す複数のモデルクラスおよび当該モデルクラスに属する属性を含む設計メタ情報を格納する。第２の格納手段は、第１の格納手段に格納されている設計メタ情報に含まれる各モデルクラスに属する属性間の参照関係を示す参照関係データを格納する。表示処理手段は、第１の格納手段に格納されている設計メタ情報に基づいて、モデル入力画面を表示する。特定手段は、モデル入力画面が表示されるモデルクラスに属する属性と参照関係にある属性を、第２の格納手段に格納されている参照関係データに基づいて特定する。参照関係提示手段は、特定された属性を、モデル入力画面において提示する。【選択図】図２
2013077177.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアまたはシステムの仕様に関する仕様データの入力を支援する仕様入力支援装置において、
前記ソフトウェアまたはシステムの仕様書に記述される項目を表す複数のモデルクラスおよび当該モデルクラスに属する属性を含む設計メタ情報を格納する第１の格納手段と、
前記第１の格納手段に格納されている設計メタ情報に含まれる各モデルクラスに属する属性間の参照関係を示す参照関係データを格納する第２の格納手段と、
前記第１の格納手段に格納されている設計メタ情報に含まれるモデルクラスおよび当該モデルクラスに属する属性に基づいて、前記仕様データを入力させるモデル入力画面を表示する表示処理手段と、
前記モデル入力画面が表示されるモデルクラスに属する属性と参照関係にある属性を、前記第２の格納手段に格納されている参照関係データに基づいて特定する特定手段と、
前記特定された属性を、前記モデル入力画面において提示する参照関係提示手段と
を具備することを特徴とする仕様入力支援装置。
【請求項２】
前記モデル入力画面において前記仕様データが入力される際に、前記第２の格納手段に格納されている参照関係データに基づいて、当該仕様データとして入力される属性値の候補を提示する入力候補提示手段と、
前記入力候補提示手段によって提示された属性値の候補のうちユーザによって選択された属性値を、前記仕様データとして入力する手段と
を更に具備することを特徴とする請求項１記載の仕様入力支援装置。
【請求項３】
前記モデル入力画面において、前記仕様データとして入力された属性値を変更する変更手段と、
前記属性値が変更された属性と参照関係にある属性の属性値を、前記第２の格納手段に格納されている参照関係データに基づいて取得する取得手段と、
前記属性値が変更された属性の属性値と前記取得された属性の属性値とを比較することによって、前記属性間の不整合を警告する警告手段と
を更に具備することを特徴とする請求項１または２に記載の仕様入力支援装置。
【請求項４】
ソフトウェアまたはシステムの仕様書に記述される項目を表す複数のモデルクラスおよび当該モデルクラスに属する属性を含む設計メタ情報を格納する第１の格納手段と、前記第１の格納手段に格納されている設計メタ情報に含まれる各モデルクラスに属する属性間の参照関係を示す参照関係データを格納する第２の格納手段とを有する記憶装置と、当該記憶装置を利用するコンピュータとから構成される仕様入力支援装置において、前記コンピュータによって実行されるプログラムであって、
前記コンピュータに、
前記第１の格納手段に格納されている設計メタ情報に含まれるモデルクラスおよび当該モデルクラスに属する属性に基づいて、前記ソフトウェアまたはシステムの仕様に関する仕様データを入力させるモデル入力画面を表示するステップと、
前記モデル入力画面が表示されるモデルクラスに属する属性と参照関係にある属性を、前記第２の格納手段に格納されている参照関係データに基づいて特定するステップと、
前記モデル入力画面において、前記特定された属性を提示するステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、仕様入力支援装置およびプログラムに関する。
【背景技術】
【０００２】
一般に、要件定義または基本設計等のソフトウェアまたはシステム開発の上流工程においては、当該ソフトウェアまたはシステムの仕様が記述された仕様書を作成する必要がある。
【０００３】
この仕様書を作成する際、ユーザは、ソフトウェアまたはシステムの仕様に関するデータ（以下、仕様データと表記）を入力（定義）しなければならない。
【０００４】
ところで、ユーザによって作成される仕様書においては、例えば仕様書に記述すべき項目の漏れが発生する場合がある。また、仕様書を作成する際に、ユーザが複数箇所に同一内容の仕様データを手入力しなければならない場合があり、当該ユーザの作業量が多大となる。
【０００５】
そこで、例えばユーザが入力すべき入力項目をメタモデルに従った構造で用意しておくことにより、仕様書に記述すべき項目の漏れを防止することが考えられる。
【０００６】
ここで、メタモデルとは、モデルクラスとモデル間関連クラスとを含む設計メタ情報を定義したものである。また、モデルクラスとは、ソフトウェアまたはシステム開発のライフサイクルを通じて作成される仕様の最小単位の型である。また、モデル間関連クラスとは、任意の２つのモデルクラス間の関連の型である。
【０００７】
メタモデルには、例えば「機能要件」クラスに属する「機能要件ＩＤ」、「機能要件名」および「説明」のような属性が用意されている。この場合、ユーザは、これらの属性の属性値を仕様データとして入力することによって、「機能要件」クラスのモデルインスタンスを定義することになる。
【０００８】
また、仕様の最小単位の実体であるモデルインスタンスに対して一意的に識別するためのＩＤ（識別子）を付与し、当該モデルインスタンスを一元管理することによって、ユーザが複数個所に同一内容の仕様データを手入力することによる当該ユーザの作業量の削減を図ることが考えられる。
【０００９】
一般に、仕様書において、１つの機能要件名（例えば、「顧客管理」等）は、節タイトル、本文、図表「画面要件一覧表」の「関連機能要件」のような様々な箇所に現れる。上記した一元管理によれば、例えば「顧客管理」の出力のためにユーザに必要とする作業は、当該「顧客管理」に対応づけた機能要件ＩＤ「Ｆ０１」を、「関連機能要件ＩＤ」等の本質的な箇所に入力する作業のみとなる。更に、名称「顧客管理」を変更したい場合であっても、ユーザは、「Ｆ０１」に対応する機能要件名の変更のみを行えばよい。
【００１０】
このように一元管理を行うことによって、ユーザの作業量を削減するだけでなく、整合性の保持も容易に実現できる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００６−１０６８９３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ところで、メタモデルのクラスに属する属性の中には、当該属性の属性値を定める際に他の属性の属性値を参照する必要があるものが存在する。
【００１３】
このような場合、ユーザが仕様データを入力する際に、参照先となる値（属性値）を探索しなければならない場合がある。具体的には、ユーザが例えば画面要件仕様の「関連機能要件ＩＤ」を定義（入力）する際に「機能要件ＩＤ」の参照が必要な場合には、当該「機能要件ＩＤ」が属するクラスを探索しなければならない。このような探索作業は、ユーザの手間を増大させる。
【００１４】
また、ユーザの手入力による誤字脱字または入力漏れ等が発生する場合がある。具体的には、ユーザが「機能要件ＩＤ」から「関連機能要件ＩＤ」に対してタイピングによる複写を行う過程で、当該「機能要件ＩＤ」に存在しない値を誤って入力するような場合が想定される。このような場合には、仕様書において不整合が発生する可能性がある。
【００１５】
更に、仕様データにおける値を変更した際に、当該変更による影響範囲（当該変更に伴って変更しなければならない範囲）を見落とす場合がある。具体的には、入力されたモデルインスタンス（属性値）の確定後に、クラス「機能要件」からあるモデルインスタンスを削除した場合において、ユーザがクラス「関連機能要件」から当該モデルインスタンスを削除し忘れてしまう場合が想定される。このような場合には、上記したように仕様書において不整合が発生する可能性がある。
【００１６】
したがって、ユーザによる仕様データの入力の際に、これらの手間を削減し、不整合の発生を抑制するように支援することが好ましい。
【００１７】
そこで、本発明が解決しようとする課題は、仕様書を作成するための仕様データの入力を支援する仕様入力支援装置およびプログラムを提供することにある。
【課題を解決するための手段】
【００１８】
実施形態によれば、ソフトウェアまたはシステムの仕様に関する仕様データの入力を支援する仕様入力支援装置が提供される。
【００１９】
実施形態に係る仕様入力支援装置は、第１の格納手段と、第２の格納手段と、表示処理手段と、特定手段と、参照関係提示手段とを具備する。
【００２０】
第１の格納手段は、前記ソフトウェアまたはシステムの仕様書に記述される項目を表す複数のモデルクラスおよび当該モデルクラスに属する属性を含む設計メタ情報を格納する。
【００２１】
第２の格納手段は、前記第１の格納手段に格納されている設計メタ情報に含まれる各モデルクラスに属する属性間の参照関係を示す参照関係データを格納する。
【００２２】
表示処理手段は、前記第１の格納手段に格納されている設計メタ情報に含まれるモデルクラスおよび当該モデルクラスに属する属性に基づいて、前記仕様データを入力させるモデル入力画面を表示する。
【００２３】
特定手段は、前記モデル入力画面が表示されるモデルクラスに属する属性と参照関係にある属性を、前記第２の格納手段に格納されている参照関係データに基づいて特定する。
【００２４】
参照関係提示手段は、前記特定された属性を、前記モデル入力画面において提示する。
【図面の簡単な説明】
【００２５】
【図１】実施形態に係る仕様入力支援装置のハードウェア構成を示すブロック図。
【図２】図１に示す仕様入力支援装置３０の主として機能構成を示すブロック図。
【図３】図２に示すデータベース２２に含まれるメタモデル格納部２２１に格納されている設計メタ情報のデータ構造の一例を示す図。
【図４】図２に示すデータベース２２に含まれる参照関係データ格納部２２２に格納されている参照関係データのデータ構造の一例を示す図。
【図５】入力支援部３３に含まれる入力支援対象判定部３３１の処理手順を示すフローチャート。
【図６】入力支援部３３に含まれる参照関係提示部３３２の処理手順を示すフローチャート。
【図７】入力支援部３３に含まれる参照関係提示部３３２の処理手順を示すフローチャート。
【図８】入力支援部３３に含まれる入力候補表示選択部３３３の処理手順を示すフローチャート。
【図９】入力支援部３３に含まれる入力候補表示選択部３３３の処理手順を示すフローチャート。
【図１０】ポップアップ画面表示処理の処理手順を示すフローチャート。
【図１１】「機能要件」クラスのモデル入力画面の一例を示す図。
【図１２】「画面要件」クラスのモデル入力画面の一例を示す図。
【図１３】本実施形態に係る仕様入力支援装置３０の第１の動作例について具体的に説明するための図。
【図１４】最新の内容の「機能要件」クラスの仕様データが生成される様子を示す図。
【図１５】本実施形態に係る仕様入力支援装置３０の第１の動作例について具体的に説明するための図。
【図１６】入力支援部３３に含まれる不整合警告部３３４の処理手順を示すフローチャート。
【図１７】入力支援部３３に含まれる不整合警告部３３４の処理手順を示すフローチャート。
【図１８】不整合データ格納処理の処理手順を示すフローチャート。
【図１９】警告表示処理の処理手順を示すフローチャート。
【図２０】参照元の属性である「関連機能要件ＩＤ」属性が属する「画面要件」クラスのモデル入力画面の一例を示す図。
【図２１】本実施形態に係る仕様入力支援装置３０の第２の動作例について具体的に説明するための図。
【図２２】最新の内容の「画面要件」クラスの仕様データが生成される様子を示す図。
【図２３】不整合参照関係格納部２２４のデータ構造の一例を示す図。
【図２４】本実施形態に係る仕様入力支援装置３０の第２の動作例について具体的に説明するための図。
【図２５】最新の内容の「機能要件」クラスの仕様データが生成される様子を示す図。
【図２６】本実施形態に係る仕様入力支援装置３０の第２の動作例について具体的に説明するための図。
【図２７】最新の内容の「画面要件」クラスの仕様データが生成される様子を示す図。
【図２８】最新の内容の「画面要件」クラスの仕様データが生成される様子を示す図。
【図２９】不整合参照関係格納部２２４のデータ構造の一例を示す図。
【図３０】色付けされている「関連機能要件ＩＤ」属性の全ての箇所について処理が実行された後の「画面要件」クラスのモデル入力画面の一例を示す図。
【図３１】色付けされている「関連機能要件ＩＤ」属性の全ての箇所について処理が実行された後の「機能要件」クラスのモデル入力画面の一例を示す図。
【図３２】色付けされている「関連機能要件ＩＤ」属性の全ての箇所について処理が実行された後の不整合参照関係格納部２２４のデータ構造の一例を示す図。
【図３３】「帳票要件」クラスのモデル入力画面の一例を示す図。
【図３４】図３３に示す「帳票要件」クラスのモデル入力画面に対して処理が実行された後の「帳票要件」クラスのモデル入力画面の一例を示す図。
【図３５】図３３に示す「帳票要件」クラスのモデル入力画面に対して処理が実行された後の不整合参照関係格納部２２４のデータ構造の一例を示す図。
【図３６】図３３に示す「帳票要件」クラスのモデル入力画面に対して処理が実行された後の「機能要件」クラスのモデル入力画面の一例を示す図。
【発明を実施するための形態】
【００２６】
以下、図面を参照して、実施形態について説明する。
【００２７】
図１は、本実施形態に係る仕様入力支援装置のハードウェア構成を示すブロック図である。図１に示すように、コンピュータ１０は、例えばハードディスクドライブ（ＨＤＤ：Hard Disk Drive）のような外部記憶装置２０と接続されている。この外部記憶装置２０は、コンピュータ１０によって実行されるプログラム２１を格納する。コンピュータ１０および外部記憶装置２０は、仕様入力支援装置３０を構成する。
【００２８】
図２は、図１に示す仕様入力支援装置３０の主として機能構成を示すブロック図である。
【００２９】
図２に示すように、仕様入力支援装置３０は、ユーザインタフェース３１、仕様データ入力部３２および入力支援部３３を含む。本実施形態において、これらの各部３１〜３３は、図１に示すコンピュータ１０が外部記憶装置２０に格納されているプログラム２１を実行することにより実現されるものとする。このプログラム２１は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム２１が、例えばネットワークを介してコンピュータ１０にダウンロードされても構わない。
【００３０】
また、仕様入力支援装置３０は、データベース２２および仕様データ一時格納部２３を含む。本実施形態において、データベース２２および仕様データ一時格納部２３は、例えば外部記憶装置２０に格納される。なお、データベース２２は、メタモデル格納部２２１、参照関係データ格納部２２２、仕様データ格納部２２３および不整合参照関係格納部２２４を含む。
【００３１】
メタモデル格納部２２１は、例えばソフトウェアまたはシステムの仕様書（ソフトウェアまたはシステム開発の上流工程における仕様書）に記述される項目（および当該項目間の関連）を表す、モデルクラス（以下、単にクラスと表記）および当該クラスに属する属性を含む設計メタ情報（メタモデル）を格納する。換言すれば、メタモデル格納部２２１には、仕様書に記述されるべき項目を、属性および当該属性が属するクラスという形式で表記した、仕様書の内容の雛形を表すメタモデルが格納される。なお、メタモデル格納部２２１に格納されている設計メタ情報には、クラスの名称（以下、クラス名と表記）および属性の名称（以下、属性名と表記）等の情報が含まれている。
【００３２】
参照関係データ格納部２２２は、メタモデル格納部２２１に格納されている設計メタ情報に含まれる各クラスに属する属性間の参照関係を示す参照関係データを格納する。具体的には、参照関係データ格納部２２２には、設計メタ情報が有する属性のうち、他の属性の属性値を参照している属性（以下、参照元の属性と表記）と、当該属性が参照している先となる属性（以下、参照先の属性と表記）との２つの属性の組み合わせ（の全て）のデータ（参照関係データ）が格納されている。具体的には、参照関係データ格納部２２２に格納されている参照関係データには、参照関係が示される２つの属性の各々が属するクラス名が含まれる。
【００３３】
なお、メタモデル格納部２２１に格納されている設計メタ情報および参照関係データ格納部２２２に格納されている参照関係データは、例えばユーザによってカスタマイズ可能である。
【００３４】
仕様データ格納部２２３には、ソフトウェアまたはシステムの仕様に関するデータ（以下、仕様データと表記）が格納される。仕様データ格納部２２３に格納される仕様データには、例えばメタモデル格納部２２１に格納されている設計メタ情報に含まれるクラスのモデルインスタンス（当該クラスによって作成されるデータの実体）等が含まれる。
【００３５】
ユーザインタフェース３１は、ユーザからの入力情報を入力する機能を有する。また、ユーザインタフェース３１は、各種情報をユーザに対して表示する機能を有する。
【００３６】
仕様データ入力部３２は、例えばユーザインタフェース３１を介して、ユーザによる仕様データの入力を受け付ける機能を有する。
【００３７】
仕様データ入力部３２は、メタモデル格納部２２１に格納されている設計メタ情報に含まれるクラスのクラス名および当該クラスに属する全ての属性の属性名を取得し、当該クラス名および属性名を当該クラス単位で表示する。なお、クラス名および属性名は、ユーザインタフェース３１を介して表示される。
【００３８】
また、仕様データ入力部３２は、仕様データ格納部２２３に格納されている仕様データに基づいてクラスのモデルインスタンスを取得し、当該モデルインスタンスをユーザインタフェース３１を介して表示する。
【００３９】
ユーザは、仕様データ入力部３２によって表示された画面（モデル入力画面）を介して、モデルインスタンスの内容を更新することができる。
【００４０】
仕様データ入力部３２は、ユーザによるモデルインスタンスの更新内容（のデータ）を仕様データ一時格納部２３に格納する。なお、仕様データ一時格納部２３に格納された更新内容は、例えばユーザの指示に応じて仕様データ格納部２２３に格納（反映）される。
【００４１】
入力支援部３３は、入力支援対象判定部３３１、参照関係提示部３３２、入力候補表示選択部３３３および不整合警告部３３４を含む。
【００４２】
入力支援対象判定部３３１は、仕様データ入力部３２によって表示されたモデルインスタンスに対するユーザの操作、メタモデル格納部２２１に格納されている設定メタ情報および参照関係データ格納部２２２に格納されている参照関係データに基づいて、第１〜第７のデータを取得し、参照関係提示部３３２、入力候補表示選択部３３３、不整合警告部３３４へ渡す。
【００４３】
第１のデータは、仕様データ入力部３２によって表示されたモデルインスタンスにおいてユーザによって指定された箇所（以下、指定箇所と表記）の位置を示すデータである。第２のデータは、指定箇所に対応する属性（以下、対象属性と表記）を示すデータ（当該対象属性の属性名）である。第３のデータは、対象属性が属するクラスを示すデータ（当該クラスのクラス名）である。第４のデータは、対象属性が参照先の属性であるか否かを示すデータである。第５のデータは、対象属性が参照元の属性であるか否かを示すデータである。第６のデータは、対象属性の参照相手の属性を示すデータ（当該参照相手の属性の属性名）を示す。対象属性が参照先の属性である場合、参照相手の属性は、当該対象属性（の属性値）を参照している属性である。一方、対象属性が参照元の属性である場合、参照相手の属性は、当該対象属性（の属性値）が参照している先となる属性である。第７のデータは、第６のデータによって示される属性（参照相手の属性）が属するクラスを示すデータ（当該クラスのクラス名）である。
【００４４】
以下、参照関係提示部３３２、入力候補表示選択部３３３、不整合警告部３３４について説明するが、これらの各部３３２〜３３４が取得または特定すると記述している第１〜第７のデータは、入力支援対象判定部３３１が取得し、当該各部３３２〜３３４に渡されたものである。
【００４５】
参照関係提示部３３２は、仕様データ入力部３２によるモデル入力画面において表示されるクラスに属する属性と参照関係にある属性を参照関係データ格納部２２２に格納されている参照関係データに基づいて特定し、当該特定された属性が属するクラス名をメタモデル格納部２２１に格納されている設計メタ情報から取得し、当該特定された属性および当該取得されたクラス名を当該モデル入力画面において提示する機能を有する。
【００４６】
参照関係提示部３３２は、メタモデル格納部２２１に格納されている設計メタ情報に基づいて、上記した対象属性（入力支援対象判定部３３１によって取得された第２のデータによって示される属性）と同一のクラスに属する属性（以下、同一クラス属性と表記）を特定する。参照関係提示部３３２は、参照関係データ格納部２２２に格納されている参照関係データに基づいて、特定された同一クラス属性について各種データを取得する。
【００４７】
具体的には、参照関係提示部３３２は、同一クラス属性（の属性名）が参照関係データ格納部２２２内に存在する（つまり、当該同一クラス属性の属性名が参照関係データに含まれる）か否か、同一クラス属性が参照先の属性であるか否か、同一クラス属性が参照元の属性であるか否か、同一クラス属性の参照相手の属性の属性名、当該参照相手の属性が属するクラスのクラス名を示すデータを取得する。
【００４８】
参照関係提示部３３２は、同一クラス属性が参照先の属性である場合、当該同一クラス属性を参照している属性（参照元の属性）を、当該参照元の属性が属するクラスのクラス名とともに含む文章を作成する。なお、参照元の属性が属するクラスのクラス名は、メタモデル格納部２２１に格納されている設計メタ情報から取得される。
【００４９】
また、参照関係提示部３３２は、同一クラス属性が参照元の属性である場合、当該同一クラス属性が参照している先となる属性（参照先の属性）の属性名を、当該参照先の属性が属するクラスのクラス名とともに含む文章を作成する。なお、参照先の属性が属するクラスのクラス名は、メタモデル格納部２２１に格納されている設計メタ情報から取得される。
【００５０】
なお、参照関係提示部３３２は、当該参照関係提示部３３２に予め保持されているフォーマットに従って文章を作成する。
【００５１】
参照関係提示部３３２は、作成された文章をリンクとしてユーザに対して提示する機能を有する。この提示された文章（リンク）がユーザによって指定された場合、参照関係提示部３３２は、例えば仕様データ格納部２２３に格納されている仕様データに基づいて、同一クラス属性の参照相手の属性（当該同一クラス属性の参照先の属性または参照元の属性）が属するクラスのモデルインスタンスを表示する。
【００５２】
入力候補表示選択部３３３は、仕様データ入力部３２によって表示されたモデル入力画面において仕様データがユーザによって入力される際に、参照関係データ格納部２２２に格納されている参照関係データに基づいて当該仕様データとして入力される属性値の候補を提示し、当該提示された属性値の候補のうちユーザによって選択された属性値を仕様データとして入力する機能を有する。
【００５３】
入力候補表示選択部３３３は、上記した対象属性が参照元の属性である場合、当該対象属性の参照相手の属性（ここでは、参照先の属性）の属性名および当該参照先の属性が属するクラスのクラス名を取得する。
【００５４】
入力候補表示選択部３３３は、取得された対象属性の参照先の属性が所属するクラスのモデルインスタンスを、仕様データ格納部２２３に格納されている仕様データに基づいて取得する。この場合、入力候補表示選択部３３３は、仕様データ一時格納部２３に格納されている更新内容（のデータ）が反映された仕様データに基づいて最新の内容のモデルインスタンスを取得する。
【００５５】
また、入力候補表示選択部３３３は、取得された対象属性の参照先の属性と同一のクラスに属し、当該対象属性の参照先となる属性と関連のある属性（例えば、名称または説明等）の属性名を、メタモデル格納部２２１に格納されている設計メタ情報に基づいて取得する。
【００５６】
入力候補表示選択部３３３は、取得されたこれらの情報をもとに、対象属性の参照先の属性が属するクラスの最新のモデルインスタンスを表示するためのポップアップ画面を生成する。このポップアップ画面においては、対象属性の参照先の属性に加え、当該参照先の属性と同一のクラスに属し、当該参照先の属性と関連のある属性が表示される。入力候補表示選択部３３３によって生成されたポップアップ画面は、ユーザインタフェース３１を介してユーザに対して表示される。
【００５７】
なお、ユーザインタフェース３１を介して表示されたポップアップ画面においてユーザによってモデルインスタンスが選択された場合、当該選択されたモデルインスタンスの主キー属性、つまり、対象属性の参照先の属性の属性値が指定箇所に入力される。
【００５８】
また、入力候補表示選択部３３３は、入力支援対象判定部３３１によって取得された第１のデータに基づいて、指定箇所の位置を取得し、仕様データ格納部２２３および仕様データ一時格納部２３から当該指定箇所に入力されている属性値を取得する。
【００５９】
更に、入力候補表示選択部３３３は、入力支援対象判定部３３１によって取得された第６のデータによって示される対象属性の参照相手の属性（ここでは、参照先の属性）の属性名および第７のデータによって示される当該参照先の属性が属するクラスのクラス名に基づいて、仕様データ格納部２２３および仕様データ一時格納部２３から当該参照先の属性の属性値からなる集合を取得する。
【００６０】
入力候補表示選択部３３３は、取得されたこれらの情報をもとに、指定箇所に入力されている属性値が対象属性の参照先の属性の属性値として存在するか否かを判定する。
【００６１】
入力候補表示選択部３３３は、上記したポップアップ画面において表示されているモデルインスタンスのうち、対象属性の参照先の属性の属性値として指定箇所に入力されているモデルインスタンスを選択済みにする。また、入力候補表示選択部３３３は、指定箇所に入力されている属性値のうち、対象属性の参照先の属性の属性値として存在しないものを、当該入力候補表示選択部３３３に予め保持されているフォーマットに従ってポップアップ画面内に表示（列挙）する。
【００６２】
入力候補表示選択部３３３は、ポップアップ画面においてユーザによって選択されているモデルインスタンスを取得する。これにより、入力候補表示選択部３３３は、取得されたモデルインスタンスについて、対象属性の参照先の属性の属性値を取得し、当該取得された属性値を指定箇所に自動複写する。
【００６３】
不整合警告部３３４は、仕様データ入力部３２によって表示されたモデル入力画面において仕様データとして入力された属性値がユーザによって変更された際、当該属性値が変更された属性と参照関係にある属性の属性値を参照関係データ格納部２２２に格納されている参照関係データおよび仕様データ格納部２２３に格納されている仕様データに基づいて取得し、当該属性値が変更された属性の属性値と当該取得された属性値とを比較することによって、当該属性間の不整合を警告する機能を有する。
【００６４】
不整合警告部３３４は、対象属性が参照元の属性である場合、入力支援対象判定部３３１によって取得された第６のデータによって示される当該対象属性の参照相手の属性（ここでは、参照先の属性）の属性名および第７のデータによって示される当該参照先の属性が属するクラスのクラス名を取得する。
【００６５】
不整合警告部３３４は、対象属性が参照先の属性である場合、仕様データ一時格納部２３を参照して、ユーザによる更新内容がモデルインスタンスの削除であるか否かを判定する。ここで、ユーザによる入力がモデルインスタンスの削除であると判定された場合、入力支援対象判定部３３１によって取得された第６のデータによって示される当該対象属性の参照相手の属性（ここでは、参照元の属性）の属性名および第７のデータによって示される当該参照元の属性が属するクラスのクラス名を取得する。
【００６６】
なお、対象属性が参照元の属性であるか、または、参照先の属性であるかは、入力支援対象判定部３３１によって取得された第４および第５のデータに基づいて判定される。
【００６７】
不整合警告部３３４は、対象属性の参照先の属性の属性値の最新の入力値を求めるため、仕様データ格納部２２３から当該参照先の属性が属するクラスのモデルインスタンスを取得し、当該モデルインスタンスから当該参照先の属性の属性値からなる集合（参照先の集合）を求める。また、不整合警告部３３４は、仕様データ一時格納部２３から対象属性の参照先の属性の属性値の更新内容（つまり、入力または削除等の履歴のデータ）を取得し、求められた参照先の集合に当該履歴のデータを反映させる。
【００６８】
同様に、不整合警告部３３４は、対象属性の参照元の属性の属性値の最新の入力値を求めるため、仕様データ格納部２２３から当該参照元の属性が属するクラスのモデルインスタンスを取得し、当該モデルインスタンスから当該参照元の属性の属性値からなる集合（参照元の集合）を求める。また、不整合警告部３３４は、仕様データ一時格納部２３から対象属性の参照元の属性の属性値の更新内容（履歴のデータ）を取得し、求められた参照元の集合に当該履歴のデータを反映させる。
【００６９】
また、不整合警告部３３４は、上記した参照元の集合の属性値毎に、当該属性値が参照先の集合に含まれるか否かを判定する。不整合警告部３３４は、参照元の集合の属性値が参照先の集合に含まれないと判定された場合、当該参照元の集合の属性値を参照元の属性の属性値として持つ、当該参照元の属性が属するクラスのモデルインスタンスを求める。更に、不整合警告部３３４は、対象属性の参照元の属性の各属性値について求めたモデルインスタンスの和集合を求め、不整合が発生しているモデルインスタンス（不整合データを持つモデルインスタンス）の集合を得る。このモデルインスタンスの和集合と、対象属性の参照元の属性の属性名および当該属性が属するクラスのクラス名は、一組のデータとして不整合参照関係格納部２２４に格納される。
【００７０】
具体的には、不整合参照関係格納部２２４は、不整合が発生している参照元の属性および参照先の属性の各組み合わせについて、当該参照元の属性の属性名と、当該参照元の属性が属するクラスのクラス名と、当該参照先の属性の属性名と、当該参照先の属性が属するクラスのクラス名と、当該参照元の属性が属するクラスのモデルインスタンスのうち、参照元の属性と参照先の属性との間で属性値の不整合が発生している全てのモデルインスタンスとを不整合データとして格納する。
【００７１】
不整合警告部３３４は、不整合参照関係格納部２２４に格納されているデータの各組に対して、当該データの組に含まれる参照先の属性が属するクラスがユーザインタフェース３１を介して現在表示されているか否かを判定する。データの組に含まれる参照先の属性が属するクラスが表示されていると判定された場合、不整合警告部３３４は、当該データの組から参照元の属性の属性名および当該属性が属するクラスの名称を取得する。
【００７２】
不整合警告部３３４は、上記したデータの組に含まれる参照先の属性が属するクラスがユーザインタフェース３１を介して現在表示されているか否かを判定する。データの組に含まれる参照先の属性が属するクラスが表示されていると判定された場合、不整合警告部３３４は、参照先の属性が属するクラスのモデル入力画面において、取得された参照元の属性および当該属性が属するクラスのクラス名からなるリンクの箇所に、属性（値）間の不整合を警告するメッセージを表示する。更に、参照先の属性の列全体が色付けされ、当該参照先の属性および参照元の属性間で不整合が発生していることが警告される。
【００７３】
更に、不整合警告部３３４は、上記したデータの組に含まれる参照元の属性が属するクラスがユーザインタフェース３１を介して現在表示されているか否かを判定する。データの組に含まれる参照元の属性が属するクラスが表示されていると判定された場合、不整合警告部３３４は、参照元の属性が属するクラスのモデル入力画面において、当該データの組に含まれる不整合が発生しているモデルインスタンス（不整合データを持つモデルインスタンス）について参照元の属性の属性値の箇所を色付けして不整合が発生していることを警告する。また、不整合警告部３３４は、参照先の属性の属性名および当該属性が属するクラスのクラス名を用いた指定フォーマットの文章で表示されているリンクの箇所に不整合が発生していることを警告するメッセージを表示する。
【００７４】
なお、不整合参照関係格納部２２４に格納されているデータの組は、例えばメニュー画面等において一覧で表示される。
【００７５】
図３は、図２に示すデータベース２２に含まれるメタモデル格納部２２１に格納されている設計メタ情報のデータ構造の一例を示す。
【００７６】
上記したようにメタモデル格納部２２１に格納されている設計メタ情報には、ソフトウェアまたはシステム仕様書に記述される項目を表すクラス（モデルクラス）および当該クラスに属する属性が含まれる。
【００７７】
図３に示す例では、設計メタ情報には、仕様書に記述される項目を表すクラスとして、「要件」クラス、「機能的要件」クラス、「機能要件」クラス、「画面要件」クラス、「帳票要件」クラスおよび「データ要件」クラスが含まれている。
【００７８】
ここで、例えば「要件」クラスは、クラス名が「要件」であるクラスを表す。ここでは「要件」クラスについて説明したが、他のクラスについても同様に表記する。
【００７９】
また、図３に示す例えば「機能要件」クラスに属する属性には、「機能要件ＩＤ」属性、「機能要件名」属性、「説明」属性、「入力データ要件ＩＤ」属性および「出力データ要件ＩＤ」属性が含まれる。なお、例えば「機能要件ＩＤ」属性は、属性名が「機能要件ＩＤ」である属性である。ここでは、「機能要件ＩＤ」属性について説明したが、他の属性についても同様に表記する。
【００８０】
図３に示す「画面要件」クラスに属する属性には、「画面要件ＩＤ」属性、「画面要件名」属性、「説明」属性および「関連機能要件ＩＤ」属性が含まれている。
【００８１】
図３に示す「帳票要件」クラスに属する属性には、「帳票要件ＩＤ」属性、「帳票要件名」属性、「説明」属性および「関連機能要件ＩＤ」属性が含まれている。
【００８２】
また、図３に示す「データ要件」クラスに属する属性には、「データ要件ＩＤ」属性、「データ要件名」属性および「説明」属性が含まれている。
【００８３】
なお、図３に示すように、設計メタ情報においては、クラス間の関係（つまり、項目間の関連）についても表されている。
【００８４】
図４は、図２に示すデータベース２２に含まれる参照関係データ格納部２２２に格納されている参照関係データのデータ構造の一例を示す。
【００８５】
図４に示すように、参照関係データには、参照元の属性が属するクラス、参照元の属性、参照先の属性および参照先の属性が属するクラスが対応づけて含まれる。なお、参照元の属性は、対応する属性（参照先の属性）を参照している属性である。また、参照先の属性は、対応する属性（参照元の属性）が参照している先となる属性である。
【００８６】
参照関係データにおいては、参照元の属性が属するクラス、参照元の属性、参照先の属性および参照先の属性が属するクラスの組毎に、当該組を識別するための番号が付与されている。
【００８７】
図４に示す例では、参照関係データには、番号「１」に対応づけて参照元の属性が属するクラス「画面要件」、参照元の属性「関連機能要件ＩＤ」、参照先の属性「機能要件ＩＤ」および参照先の属性が属するクラス「機能要件」が含まれている。これによれば、「画面要件」クラスに属する「関連機能要件ＩＤ」属性が「機能要件」クラスに属する「機能要件ＩＤ」属性の属性値を参照していることが示されている。
【００８８】
また、参照関係データには、番号「２」に対応づけて参照元の属性が属するクラス「帳票要件」、参照元の属性「関連機能要件ＩＤ」、参照先の属性「機能要件ＩＤ」および参照先の属性が属するクラス「機能要件」が含まれている。これによれば、「帳票要件」クラスに属する「関連機能要件ＩＤ」属性が「機能要件」クラスに属する「機能要件ＩＤ」属性の属性値を参照していることが示されている。
【００８９】
参照関係データには、番号「３」に対応づけて参照元の属性が属するクラス「機能要件」、参照元の属性「入力データ要件ＩＤ」、参照先の属性「データ要件ＩＤ」および参照先の属性が属するクラス「データ要件」が含まれている。これによれば、「機能要件」クラスに属する「入力データ要件ＩＤ」属性が「データ要件」クラスに属する「データ要件ＩＤ」属性の属性値を参照していることが示されている。
【００９０】
更に、参照関係データには、番号「４」に対応づけて参照元の属性が属するクラス「機能要件」、参照元の属性「出力データ要件ＩＤ」、参照先の属性「データ要件ＩＤ」および参照先の属性が属するクラス「データ要件」が含まれている。これによれば、「機能要件」クラスに属する「出力データ要件ＩＤ」属性が「データ要件」クラスに属する「データ要件ＩＤ」属性の属性値を参照していることが示されている。
【００９１】
以下、主に図２に示す入力支援部３３の動作について詳細に説明する。まず、図５のフローチャートを参照して、入力支援部３３に含まれる入力支援対象判定部３３１の処理手順について説明する。
【００９２】
ここで、仕様データ入力部３２は、メタモデル格納部２１１に格納されている設計メタ情報に含まれるクラスのクラス名および当該クラスに属する属性の属性名を取得し、更に、当該クラスのモデルインスタンスを仕様データ一時格納部２３のデータを反映させた仕様データ格納部２２３から取得する。これにより、仕様データ入力部３２は、取得されたクラス名、属性名およびモデルインスタンスをユーザインタフェース３１を介して表示する。以下、このようにユーザインタフェース３１を介して表示される画面をモデル入力画面とする。
【００９３】
この場合、ユーザは、モデル入力画面に対して操作を行うことによって、例えば対象となる箇所を指定し、モデルインスタンスの内容を更新することができる。つまり、ユーザは、例えばモデル入力画面を介して仕様データを入力することができる。
【００９４】
入力支援対象判定部３３１は、ユーザの操作に応じて、モデル入力画面内の箇所が指定されたか否かを判定する（ステップＳ１）。
【００９５】
モデル入力画面内の箇所が指定されたと判定された場合（ステップＳ１のＹＥＳ）、入力支援対象判定部３３１は、ユーザによって指定された箇所（指定箇所）に対応する属性（対象属性）の属性名および当該対象属性が属するクラスのクラス名をメタモデル格納部２２１に格納されている設計メタ情報から取得する（ステップＳ２）。
【００９６】
次に、入力支援対象判定部３３１は、取得された対象属性の属性名が参照関係データ格納部２２２に格納されている参照関係データ中に存在するか否かを判定する（ステップＳ３）。
【００９７】
対象属性の属性名が参照関係データ中に存在すると判定された場合（ステップＳ３のＹＥＳ）、入力支援対象判定部３３１は、参照関係データ格納部２２２に格納されている参照関係データに基づいて、対象属性が参照先の属性であるか否かを判定する（ステップＳ４）。ステップＳ４の処理において、入力支援対象判定部３３１は、ステップＳ２において取得された対象属性の属性名が参照先の属性として参照関係データに含まれている場合、当該対象属性が参照先の属性であると判定する。
【００９８】
対象属性が参照先の属性であると判定された場合（ステップＳ４のＹＥＳ）、入力支援対象判定部３３１は、対象属性（の属性名）を参照先の属性として含む参照関係データにおいて、当該対象属性に対応づけられている、当該対象属性を参照する属性（つまり、対象属性の参照元の属性）の属性名および当該属性が属するクラスのクラス名を、参照関係データ格納部２２２から取得する（ステップＳ５）。なお、対象属性の参照元の属性は、複数存在し得る。このように対象属性の参照元の属性が複数存在する場合、入力支援対象判定部３３１は、当該対象属性の参照元の属性毎に、属性名およびクラス名を取得する（つまり、複数の属性名およびクラス名を取得する）。
【００９９】
次に、入力支援対象判定部３３１は、参照関係データ格納部２２２に格納されている参照関係データに基づいて、対象属性が参照元の属性であるか否かを判定する（ステップＳ６）。ステップＳ６の処理において、入力支援対象判定部３３１は、ステップＳ２において取得された対象属性の属性名が参照先の属性として参照関係データに含まれている場合、当該対象属性が参照元の属性であると判定する。
【０１００】
対象属性が参照元の属性であると判定された場合（ステップＳ６のＹＥＳ）、入力支援対象判定部３３１は、対象属性（の属性名）を参照元の属性として含む参照関係データにおいて、当該対象属性に対応づけられている、当該対象属性が参照する属性（つまり、対象属性の参照先の属性）の属性名および当該属性が属するクラスのクラス名を、参照関係データ格納部２２２から取得する（ステップＳ７）。
【０１０１】
次に、入力支援対象判定部３３１は、ユーザによる指定箇所（を示すデータ）を取得する（ステップＳ８）。
【０１０２】
入力支援対象判定部３３１は、上記した処理において取得されたデータを参照関係提示部３３２、入力候補表示選択部３３３および不整合警告部３３４に渡す（ステップＳ９）。
【０１０３】
ここで、入力支援対象判定部３３１によって参照関係提示部３３２、入力候補表示選択部３３３および不整合警告部３３４に渡されるデータには、ユーザによる指定箇所を示すデータ（第１のデータ）、対象属性の属性名を示すデータ（第２のデータ）、対象属性が属するクラスのクラス名を示すデータ（第３のデータ）、対象属性が参照先の属性であるか否かを示すデータ（第４のデータ）、対象属性が参照元の属性であるか否かを示すデータ（第５のデータ）、対象属性の参照相手（参照元または参照先）の属性の属性名を示すデータ（第６のデータ）、および対象属性の参照相手の属性が属するクラスのクラス名を示すデータ（第７のデータ）が含まれる。
【０１０４】
なお、第１のデータは、上記したステップＳ８の処理において取得される。第２および第３のデータは、上記したステップＳ２の処理において取得される。第４のデータは、上記したステップＳ４の処理において取得される。第５のデータは、上記したステップＳ６の処理において取得される。第６および第７のデータは、上記したステップＳ５またはＳ７の処理において取得される。
【０１０５】
一方、上記したステップＳ１においてモデル入力画面内の箇所が指定されていないと判定された場合、またはステップＳ３において対象属性の属性名が参照関係データ中に存在しないと判定された場合、入力支援対象判定部３３１の処理は終了される。
【０１０６】
また、ステップＳ４において対象属性が参照先の属性でないと判定された場合、ステップＳ５の処理は実行されない。
【０１０７】
また、ステップＳ６において対象属性が参照元の属性でないと判定された場合、ステップＳ７の処理は実行されない。
【０１０８】
次に、図６および図７のフローチャートを参照して、入力支援部３３に含まれる参照関係提示部３３２の処理手順について説明する。
【０１０９】
まず、参照関係提示部３３２は、入力支援対象判定部３３１から渡されたデータ（第１〜第７のデータ）を取得する（ステップＳ１１）。
【０１１０】
次に、参照関係提示部３３２は、取得された第２および第３のデータとメタモデル格納部２２１に格納されている設計メタ情報とに基づいて、対象属性と同一のクラスに属する属性（同一クラス属性）を特定する（ステップＳ１２）。ここでは、ｎ個の同一クラス属性が特定されたものとして説明する。なお、参照関係提示部３３２は、ステップＳ１２の処理の際に、設計メタ情報から同一クラス属性の各々の属性名を取得する。
【０１１１】
参照関係提示部３３２は、特定された同一クラス属性の各々について、以下のステップＳ１３〜Ｓ２１の処理を実行する。以下、この処理の対象となる同一クラス属性を同一クラス属性Ａｉ（ｉ＝１，２，…，ｎ）とする。
【０１１２】
参照関係提示部３３２は、同一クラス属性Ａｉが参照関係データ格納部２２２に格納されている参照関係データ中に存在するか否かを判定する（ステップＳ１３）。
【０１１３】
同一クラス属性Ａｉが参照関係データ中に存在すると判定された場合（ステップＳ１３のＹＥＳ）、参照関係提示部３３２は、参照関係データ格納部２２２に格納されている参照関係データに基づいて、同一クラス属性Ａｉが参照先の属性であるか否かを判定する（ステップＳ１４）。ステップＳ１４の処理において、参照関係提示部３３２は、同一クラス属性Ａｉの属性名が参照先の属性として参照関係データに含まれている場合、当該同一クラス属性Ａｉが参照先の属性であると判定する。
【０１１４】
同一クラス属性Ａｉが参照先の属性であると判定された場合（ステップＳ１４のＹＥＳ）、参照関係提示部３３２は、当該同一クラス属性Ａｉを参照する属性（つまり、同一クラス属性Ａｉの参照元の属性）の属性名および当該属性が属するクラスのクラス名を、ステップＳ１１において取得された第６および第７のデータから取得する（ステップＳ１５）。
【０１１５】
参照関係提示部３３２は、取得された同一クラス属性Ａｉの参照元の属性の属性名および当該属性が属するクラスのクラス名が指定フォーマットで列挙された文章を作成する（ステップＳ１６）。なお、ステップＳ１６の処理において用いられる指定フォーマットは、参照関係提示部３３２において予め保持されている。
【０１１６】
次に、参照関係提示部３３２は、参照関係データ格納部２２２に格納されている参照関係データに基づいて、同一クラス属性Ａｉが参照元の属性であるか否かを判定する（ステップＳ１７）。ステップＳ１７の処理において、参照関係提示部３３２は、同一クラス属性Ａｉが参照元の属性として参照関係データに含まれている場合、当該同一クラス属性Ａｉが参照元の属性であると判定する。
【０１１７】
同一クラス属性Ａｉが参照元の属性であると判定された場合（ステップＳ１７のＹＥＳ）、参照関係提示部３３２は、同一クラス属性Ａｉ（の属性名）を参照元の属性として含む参照関係データにおいて、当該同一クラス属性Ａｉに対応づけられている、当該同一クラス属性Ａｉが参照する属性（つまり、同一クラス属性Ａｉの参照先の属性）の属性名および当該属性が属するクラスのクラス名を、ステップＳ１１において取得された第６および第７のデータから取得する（ステップＳ１８）。
【０１１８】
参照関係提示部３３２は、取得された同一クラス属性Ａｉの参照先の属性の属性名および当該属性が属するクラスのクラス名が指定フォーマットで列挙された文章を作成する（ステップＳ１９）。なお、ステップＳ１９の処理において用いられる指定フォーマットは、参照関係提示部３３２において予め保持されている。
【０１１９】
次に、参照関係提示部３３２は、ステップＳ１６およびＳ１９において作成された文章を、対象属性が属するクラスのモデル入力画面（つまり、対象属性の属性名、当該対象属性が属するクラスのクラス名および当該クラスのモデルインスタンスが表示される画面）において、当該文章中の属性の参照相手の属性（参照元または参照先の属性）の近傍に表示する。
【０１２０】
なお、参照関係提示部３３２は、モデル入力画面に表示される各文章に対して、当該文章中のクラス名に対応するクラス（のモデル入力画面）へ遷移することが定義されたリンクを作成する（ステップＳ２１）。
【０１２１】
ステップＳ２１の処理が実行されると、参照関係提示部３３２は、ステップＳ２において特定された同一クラス属性の全てについてステップＳ１３〜Ｓ２１の処理が実行されたか否かを判定する（ステップＳ２２）。
【０１２２】
同一クラス属性の全てについて処理が実行されていないと判定された場合（ステップＳ２２のＮＯ）、上記したステップＳ１３に戻って処理が繰り返される。
【０１２３】
一方、同一クラス属性の全てについて処理が実行されたと判定された場合（ステップＳ２２のＹＥＳ）、参照関係提示部３３２は、ユーザの操作に応じて、対象属性が属するクラスのモデル入力画面において表示されている文章に対して作成されているリンクにおいて定義されているクラスのモデル入力画面へ遷移することを命令するイベントが発生したか否かを判定する（ステップＳ２３）。なお、このイベントは、対象属性が属するクラスのモデル入力画面において表示されている文章がユーザによって指定された場合に発生する。
【０１２４】
イベントが発生したと判定された場合（ステップＳ２３のＹＥＳ）、参照関係提示部３３２は、ユーザによって指定された文章中のクラス名を取得する（ステップＳ２４）。
【０１２５】
参照関係提示部３３２は、取得されたクラス名に対応するクラスのモデル入力画面を、ユーザインタフェース３１を介して表示する。このモデル入力画面には、取得されたクラス名、つまり、ユーザによって指定された文章中のクラス名に対応するクラスのモデルインスタンスが表示される。
【０１２６】
このように、ユーザは、対象属性が属するクラスのモデル入力画面において文章を指定することによって、当該文章中のクラス名に対応するクラスのモデル入力画面を開くことができる。
【０１２７】
一方、上記したステップＳ１３において同一クラス属性Ａｉが参照関係データ中に存在しないと判定された場合、ステップＳ２２の処理が実行される。
【０１２８】
上記したステップＳ１４において同一クラス属性Ａｉが参照先の属性でないと判定された場合、ステップＳ１５およびＳ１６の処理は実行されない。
【０１２９】
上記したステップＳ１７において同一クラス属性Ａｉが参照元の属性でないと判定された場合、ステップＳ１８およびＳ１９の処理は実行されない。
【０１３０】
また、上記したステップ２３においてイベントが発生していないと判定された場合、参照関係提示部３３２の処理は終了される。
【０１３１】
次に、図８および図９のフローチャートを参照して、入力支援部３３に含まれる入力候補表示選択部３３３の処理手順について説明する。
【０１３２】
まず、入力候補表示選択部３３３は、入力支援対象判定部３３１から渡されたデータ（第１〜第７のデータ）を取得する（ステップＳ３１）。
【０１３３】
入力候補表示選択部３３３は、取得された第２および第３のデータおよび参照関係データ格納部２２２に格納されている参照関係データに基づいて、対象属性が参照元の属性であるか否かを判定する（ステップＳ３２）。ステップＳ３２の処理において、入力候補表示選択部３３３は、対象属性の属性名が参照元の属性として参照関係データに含まれている場合、当該対象属性が参照元の属性であると判定する。
【０１３４】
対象属性が参照元の属性であると判定された場合（ステップＳ３２のＹＥＳ）、入力候補表示選択部３３３は、ステップＳ３１において取得された第６および第７のデータに基づいて、当該対象属性の参照先の属性（つまり、当該対象属性の参照相手の属性）および当該属性が属するクラスを特定する（ステップＳ３３）。以下、ステップＳ３３において特定された属性を属性Ｘ、クラスをクラスＹと称する。
【０１３５】
次に、入力候補表示選択部３３３は、取得されたクラスＹのモデルインスタンスの更新内容の全てからなるデータ（以下、データＡと表記）を、仕様データ一時格納部２３から取得する（ステップＳ３４）。
【０１３６】
また、入力候補表示選択部３３３は、取得されたクラスＹのモデルインスタンスの全てからなるデータ（以下、データＢと表記）を、仕様データ格納部２２３から取得する（ステップＳ３５）。
【０１３７】
入力候補表示選択部３３３は、ステップＳ３４において取得されたデータＡをステップＳ３５において取得されたデータＢに対して反映させる（ステップＳ３６）。これにより、入力候補表示選択部３３３は、データＡをデータＢに反映させたデータ（以下、データＣと表記）を取得する。なお、データＣは、クラスＹの最新の内容のモデルインスタンスを含む。
【０１３８】
また、入力候補表示選択部３３３は、メタモデル格納部２２１に格納されている設計メタ情報に基づいて、対象属性の参照先の属性（つまり、属性Ｘ）と関連のある属性を特定する（ステップＳ３７）。具体的には、入力候補表示選択部３３３は、対象属性の参照先の属性が属するクラス（つまり、クラスＹ）に属する例えば名称に関する属性および説明に関する属性を特定する。以下、ステップＳ３７において特定された対象属性の参照先の属性と関連のある属性を属性ａおよび属性ｂとする。
【０１３９】
次に、入力候補表示選択部３３３は、データＣの全てのモデルインスタンスについて、属性Ｘ、属性ａおよび属性ｂの属性値のみを表示する指定フォーマットのポップアップ画面（自動複写用ポップアップ画面）を生成する。なお、ここで用いられる指定フォーマットは、入力候補表示選択部３３３において予め保持されている。
【０１４０】
入力候補表示選択部３３３は、生成された指定フォーマットのポップアップ画面を、ユーザインタフェース３１を介して表示する（ステップＳ３８）。
【０１４１】
ここで、入力候補表示選択部３３３は、ステップＳ３１において取得された第１のデータに基づいて、ユーザによる指定箇所に入力されている全ての値を、仕様データ一時格納部２３のデータを反映させた仕様データ格納部２２３のデータから取得する（ステップＳ３９）。
【０１４２】
次に、入力候補表示選択部３３３は、取得された値についてポップアップ画面表示処理を実行する（ステップＳ４０）。このポップアップ画面表示処理によれば、属性Ｘの属性値が取得された値に含まれているモデルインスタンスを選択済みにし、また、指定箇所に入力されている属性値のうち参照先の属性の属性値として存在しないものがステップＳ３８で表示したポップアップ画面内に表示される。なお、ポップアップ画面表示処理の詳細については後述する。
【０１４３】
入力候補表示選択部３３３は、ユーザの操作に応じて、ポップアップ画面において選択されたモデルインスタンスを複写することを命令するイベント（複写イベント）が発生したか否かを判定する（ステップＳ４１）。なお、このイベントは、後述するポップアップ画面に設けられている例えば「複写する」ボタンがユーザによって指定（押下）された場合に発生する。
【０１４４】
複写イベントが発生したと判定された場合（ステップＳ４１のＹＥＳ）、入力候補表示選択部３３３は、ポップアップ画面において選択されているモデルインスタンスを全て取得する（ステップＳ４２）。
【０１４５】
次に、入力候補表示選択部３３３は、取得されたモデルインスタンスにおける属性Ｘ（対象属性の参照先の属性）の属性値を全て取得する（ステップＳ４３）。
【０１４６】
入力候補表示選択部３３３は、取得された属性値の全てを、ユーザによる指定箇所に対して入力する（ステップＳ４４）。
【０１４７】
ステップＳ４４の処理が実行されると、入力候補表示選択部３３３は、ポップアップ画面を閉じる（ステップＳ４５）。
【０１４８】
なお、上記したステップＳ３２において対象属性が参照元の属性でないと判定された場合、入力候補表示選択部３３３の処理は終了される。
【０１４９】
また、ステップＳ４１において複写イベントが発生していないと判定された場合、入力候補表示選択部３３３は、ユーザの操作に応じて、ポップアップ画面を閉じることを命令するイベント（閉じるイベント）が発生したか否かを判定する（ステップＳ４６）。なお、このイベントは、後述するポップアップ画面に設けられている例えば「閉じる」ボタンがユーザによって指定（押下）された場合に発生する。
【０１５０】
閉じるイベントが発生したと判定された場合（ステップＳ４６のＹＥＳ）、入力候補表示選択部３３３は、上記したステップＳ４５の処理を実行する。
【０１５１】
一方、閉じるイベントが発生していないと判定された場合（ステップＳ４６のＮＯ）、ステップＳ４１に戻って処理が繰り返される。
【０１５２】
次に、図１０のフローチャートを参照して、上記したポップアップ画面表示処理（図８に示すステップＳ４０の処理）の処理手順について説明する。
【０１５３】
ここでは、上記した図８に示すステップＳ３９において、ｍ個の値が取得されたものとする。なお、ポップアップ画面表示処理は、これらのｍ個の値の各々について実行される。以下の説明では、ポップアップ画面表示処理の対象となる値を値Ｖｉ（ｉ＝１，２，…，ｍ）とする。
【０１５４】
まず、入力候補表示選択部３３３は、クラスＹのモデルインスタンスのうち、属性Ｘの属性値が値Ｖｉと一致するモデルインスタンスを全て取得する（ステップＳ５１）。
【０１５５】
モデルインスタンスが取得された場合（ステップＳ５２のＹＥＳ）、入力候補表示選択部３３３は、取得されたモデルインスタンスを、ポップアップ画面において選択済みとして表示する（ステップＳ５３）。
【０１５６】
一方、属性Ｘの属性値が値Ｖｉと一致するモデルインスタンスが１つも存在しない場合（ステップＳ５２のＮＯ）、入力候補表示選択部３３３は、当該入力候補表示選択部３３３において予め保持されている指定フォーマットで、値Ｖｉが不正な値であることを表す文章を作成し、当該文章をポップアップ画面に表示する（ステップＳ５４）。
【０１５７】
このようにポップアップ画面表示処理においては、属性Ｘの属性値が値Ｖｉと一致するクラスＹのモデルインスタンスが存在する場合には、そのような全てのモデルインスタンスが選択済みとしてポップアップ画面に表示され、属性Ｘの属性値が値Ｖｉと一致するクラスＹのモデルインスタンスが存在しない場合には、当該値Ｖｉが不正な値であることを表す文章がポップアップ画面に表示される。
【０１５８】
以下、本実施形態に係る仕様入力支援装置３０の第１の動作例について具体的に説明する。なお、第１の動作例は、参照先の属性の属性値が確定した後に参照元の属性の属性値を入力する場合における動作である。
【０１５９】
ここでは、参照先の属性は例えば「機能要件」クラスに属する「機能要件ＩＤ」属性であるものとし、参照元の属性は例えば「画面要件」クラスに属する「関連機能要件ＩＤ」属性であるものとする。
【０１６０】
なお、図１１は、「機能要件」クラスのモデル入力画面の一例を示す。なお、図１１に示す例では、「機能要件」クラスのモデル入力画面における入力は、完了しているものとする。
【０１６１】
ここで、参照元の属性である「関連機能要件ＩＤ」属性が属する「画面要件」クラスのモデル入力画面を開いたものとする。図１２は、「画面要件」クラスのモデル入力画面の一例を示す。
【０１６２】
この場合、ユーザは、図１２に示す「画面要件」クラスのモデル入力画面において、「画面要件ＩＤ」が「Ｓ−Ｍ−０１」であるモデルインスタンスの「関連機能要件ＩＤ」の属性（指定箇所）を指定する（ステップＳ６１）。具体的には、ユーザは、指定箇所において右クリックを行う。
【０１６３】
入力候補表示選択部３３３は、図１３に示すように、右クリックされた指定箇所において例えば「入力候補ボックスを表示」のリストを表示する（ステップＳ６２）。
【０１６４】
次に、入力候補表示選択部３３３は、入力支援対象判定部３３１から渡された第１、第２および第３のデータから、指定箇所が指定された画面が「画面要件」クラスのモデル入力画面であること、および指定箇所の属性（つまり、列名）が「関連機能要件ＩＤ」属性であることを特定する（ステップＳ６３，Ｓ６４）。また、入力候補表示選択部３３３は、指定箇所（を示すデータ）を取得する。
【０１６５】
ここで、上記したステップＳ６２において表示されたリストがユーザによってクリックされた場合を想定する。
【０１６６】
この場合、入力支援対象判定部３３１は、参照関係データ２２２に格納されている参照関係データに基づいて上述した第６および第７のデータを取得し（ステップＳ６５）、入力候補表示選択部３３３へ渡す。入力候補表示選択部３３３は、入力支援対象判定部３３１から渡された第６および第７のデータから、指定箇所の属性（ここでは、「関連機能要件ＩＤ」属性）が参照している属性（つまり、「関連機能要件ＩＤ」属性の参照先の属性）および当該属性が属するクラス（ここでは、「機能要件」クラス）を特定する。
【０１６７】
図１３に示す例では、入力候補表示選択部３３３は、「関連機能要件ＩＤ」属性の参照先の属性として、「機能要件」クラスに属する「機能要件ＩＤ」属性を特定する。この場合、入力候補表示選択部３３３は、「機能要件」クラスの各モデルインスタンスについて、特定された「機能要件ＩＤ」属性、その名称に関する属性である「機能要件名」属性およびその説明に関する属性である「説明」属性の属性値を取得する（ステップＳ６６）。
【０１６８】
なお、入力候補表示選択部３３３は、「機能要件」クラスの仕様データ（ここでは、仕様データ一時格納部２３内の更新内容が反映された仕様データ格納部２２３内の「機能要件」クラスの仕様データ）から属性値を取得する。図１４は、仕様データ一時格納部２３内の更新内容を仕様データ格納部２２３内の「機能要件」クラスの仕様データに対して反映させることによって、最新の内容の「機能要件」クラスの仕様データが生成される様子を示す。
【０１６９】
再び図１３に戻ると、入力候補表示選択部３３３は、取得された各属性値が表示された入力候補ボックス（ポップアップ画面）を、ユーザインタフェース３１を介して表示する（ステップＳ６７）。
【０１７０】
ここで、ユーザは、図１５に示すように、入力候補ボックスにおいてリストとして表示されている属性値にチェックをつけることにより、関連機能要件として入力したい「機能要件」クラスのモデルインスタンスを指定する（ステップＳ６８）。
【０１７１】
また、ユーザは、入力候補ボックスに設けられている「複写する」ボタンをクリック（指定）する（ステップＳ６９）。
【０１７２】
これにより、入力候補表示選択部３３３は、入力候補ボックスのリストにおいて選択されているモデルインスタンスにおける「機能要件ＩＤ」属性の属性値（ここでは、「Ｆ０１」および「Ｆ０２」）を取得する。入力候補表示選択部３３３は、取得された属性値を、上記した「画面要件」クラスのモデル入力画面の指定箇所（ここでは、「関連機能要件ＩＤ」の箇所）に入力（登録）する（ステップＳ７０）。ステップＳ７０において属性値が指定箇所に登録されると、入力候補ボックスは閉じられる。
【０１７３】
なお、上記した「複写する」ボタンがクリックされる前に、入力候補ボックスに設けられている「閉じる」ボタンがユーザによってクリック（指定）されると、入力候補表示選択部３３３は、当該入力候補ボックスを閉じる（ステップＳ７１）。
【０１７４】
このように入力候補表示選択部３３３の処理が実行されることによって、ユーザは、入力候補ボックスに表示された属性値の中から任意の値をクリック操作により選択する操作のみで、当該値を指定箇所に入力することができる。
【０１７５】
次に、図１６および図１７のフローチャートを参照して、入力支援部３３に含まれる不整合警告部３３４の処理手順について説明する。
【０１７６】
まず、不整合警告部３３４は、入力支援対象判定部３３１から渡されたデータ（第１〜第７のデータ）を取得する（ステップＳ８１）。
【０１７７】
不整合警告部３３４は、取得された第５のデータに基づいて、対象属性が参照元の属性であるか否かを判定する（ステップＳ８２）。
【０１７８】
対象属性が参照元の属性であると判定された場合（ステップＳ８２のＹＥＳ）、不整合警告部３３４は、ステップＳ８１において取得された第６および第７のデータに基づいて、対象属性の参照先の属性（以下、属性ａと表記）および当該属性ａが属するクラス（以下、クラスＡと表記）を特定する（ステップＳ８３）。
【０１７９】
次に、不整合警告部３３４は、特定されたクラスＡのモデルインスタンスの全てを、仕様データ格納部２２３から取得する（ステップＳ８４）。
【０１８０】
不整合警告部３３４は、取得されたモデルインスタンスから、属性ａの属性値からなるデータ（以下、データＳと表記）を取得する（ステップＳ８５）。
【０１８１】
また、不整合警告部３３４は、属性ａの属性値の入力、変更、削除等の履歴のデータ、つまり、当該属性値の更新内容のデータ（以下、データαと表記）を、仕様データ一時格納部２３から取得する（ステップＳ８６）。
【０１８２】
不整合警告部３３４は、ステップＳ８５において取得されたデータＳに対してステップＳ８６において取得されたデータαを反映させる（ステップＳ８７）。これにより、不整合警告部３３４は、データＳに対してデータαを反映させたデータ（以下、データＴと表記）を取得する。
【０１８３】
次に、不整合警告部３３４は、不整合データ格納処理を実行する（ステップＳ８８）。この不整合データ格納処理によれば、属性間の不整合を表す不整合データが不整合参照関係格納部２２４に格納される。なお、不整合データ格納処理の詳細については後述する。
【０１８４】
ステップＳ８８の処理が実行されると、不整合警告部３３４は、警告表示処理を実行する（ステップＳ８９）。この警告表示処理によれば、不整合が発生していることを警告するためのメッセージ等が表示される。なお、警告表示処理の詳細については後述する。
【０１８５】
ステップＳ８９の処理の処理が実行されると、不整合警告部３３４は、不整合参照関係格納部２２４に格納されているデータを、ユーザインタフェース３１を介して一覧表示する（ステップＳ９０）。
【０１８６】
一方、上記したステップＳ８２において対象属性が参照元の属性でないと判定された場合、不整合警告部３３４は、ステップＳ８１において取得された第４のデータに基づいて、対象属性が参照先の属性であるか否かを判定する（ステップＳ９１）。
【０１８７】
対象属性が参照先の属性であると判定された場合（ステップＳ９１のＹＥＳ）、不整合警告部３３４は、ユーザによる指定箇所においてモデルインスタンスの削除が行われたか否かを判定する（ステップＳ９２）。この場合、不整合警告部３３４は、仕様データ一時格納部２３に格納されている更新内容に基づいて判定処理を実行する。
【０１８８】
モデルインスタンスの削除が行われたと判定された場合（ステップＳ９２のＹＥＳ）、不整合警告部３３４は、ステップＳ８１において取得された第６および第７のデータに基づいて、対象属性の参照元の属性（対象属性を参照する属性）および当該属性が属するクラスを特定する（ステップＳ９３）。
【０１８９】
なお、上記したように対象属性が参照先の属性であると判定され、かつ、モデルインスタンスの削除が行われたと判定された場合には、以下の処理においては、対象属性を属性ａ、当該対象属性が属するクラスをクラスＡとして処理が実行される。
【０１９０】
ステップＳ９３の処理が実行されると、上記したステップＳ８４以降の処理が実行される。
【０１９１】
上記したステップＳ９１において対象属性が参照先の属性でないと判定された場合、不整合警告部３３４の処理は終了される。
【０１９２】
また、上記したステップＳ９２においてモデルインスタンスの削除が行われていないと判定された場合、同様に、不整合警告部３３４の処理は終了される。
【０１９３】
次に、図１８のフローチャートを参照して、上述した不整合データ格納処理（図１６に示すステップＳ８８の処理）の処理手順について詳細に説明する。
【０１９４】
ここで、上記したように対象属性が参照元の属性である場合、不整合データ格納処理は、対象属性の参照先の属性を属性ａ、当該属性ａが属するクラスをクラスＡ、対象属性を属性Ｘ１、当該対象属性（属性Ｘ１）が属するクラスをクラスＹ１として実行される。
【０１９５】
一方、対象属性が参照先の属性である場合、不整合データ格納処理は、対象属性の参照元の各属性を属性Ｘ１、Ｘ２、…、Ｘｋ、当該属性Ｘ１、Ｘ２、…、Ｘｋの各々が属するクラスをクラスＹ１、Ｙ２、…、Ｙｋ、対象属性を属性ａ、当該対象属性（属性ａ）が属するクラスをクラスＡとして実行される。ここでは、上記した図１７に示すステップＳ９３の処理においてｋ個の対象属性の参照元の属性が特定された場合を想定している。
【０１９６】
なお、不整合データ格納処理は、対応する属性ＸおよびクラスＹ（の組）毎に実行される。具体的には、対象属性が参照先の属性である場合のように複数の属性Ｘ１、Ｘ２、…、Ｘｋおよび複数のクラスＹ１、Ｙ２、…、Ｙｋが存在する場合には、不整合データ格納処理は、属性Ｘ１およびクラスＹ１、属性Ｘ２およびクラスＹ２、…、属性ＸｋおよびクラスＹｋの各々について実行される。一方、対象属性が参照元の属性である場合のように属性Ｘ１およびクラスＹ１のみが存在する場合には、不整合データ格納処理は、属性Ｘ１およびクラスＹ１についてのみ実行される。
【０１９７】
以下では、便宜的に、不整合データ格納処理の対象となる属性ＸおよびクラスＹを属性ＸｉおよびクラスＹｉ（ｉ＝１、２、…、ｋ）として説明する。
【０１９８】
まず、不整合警告部３３４は、クラスＹｉの全てのモデルインスタンスを、仕様データ格納部２２３から取得する（ステップＳ１０１）。
【０１９９】
次に、不整合警告部３３４は、取得された全てのモデルインスタンスから、属性Ｘｉの属性値からなるデータ（以下、データＵｉと表記）を取得する（ステップＳ１０２）。
【０２００】
また、不整合警告部３３４は、属性Ｘｉの属性値の入力、変更、削除等の履歴のデータ、つまり、当該属性値の更新内容のデータ（以下、データβｉと表記）を取得する（ステップＳ１０３）。
【０２０１】
不整合警告部３３４は、ステップＳ１０１において取得されたデータＵｉに対してステップＳ１０３において取得されたデータβｉを反映させる（ステップＳ１０４）。これにより、不整合警告部３３４は、データＵｉに対してデータβｉを反映させたデータ（以下、データＶｉと表記）を取得する。
【０２０２】
次に、不整合警告部３３４は、データＶｉが持つ値（属性値）の各々について、以下のステップＳ１０５〜Ｓ１０７の処理を実行する。以下、この処理の対象となるデータＶｉが持つ値を値Ｖｉｊとする。
【０２０３】
まず、不整合警告部３３４は、値ＶｉｊがデータＴ内に存在するか否かを判定する（ステップＳ１０５）。ここで、データＴは、上述した図１６に示すステップＳ８７においてデータＳに対してデータαを反映させたデータである。
【０２０４】
値ＶｉｊがデータＴ内に存在しないと判定された場合（ステップＳ１０５のＮＯ）、不整合警告部３３４は、値Ｖｉｊを属性Ｘｉの属性値として持つ、クラスＹｉの全てのモデルインスタンスを特定する（ステップＳ１０６）。
【０２０５】
次に、不整合警告部３３４は、特定されたモデルインスタンスをデータ（集合）Ｅｉに追加する（ステップＳ１０７）。
【０２０６】
不整合警告部３３４は、データＶｉが持つ全ての値について上記したステップＳ１０５〜Ｓ１０７の処理が実行された否かを判定する（ステップＳ１０８）。
【０２０７】
データＶｉが持つ全ての値について処理が実行されていないと判定された場合（ステップＳ１０８のＮＯ）、上記したステップＳ１０５に戻って処理が繰り返される。
【０２０８】
一方、データＶｉが持つ全ての値について処理が実行されたと判定された場合（ステップＳ１０８のＹＥＳ）、不整合警告部３３４は、参照先の属性が属性ａであり、当該属性ａが属するクラスがクラスＡであることと、参照元の属性が属性Ｘｉであり、当該属性Ｘｉが属するクラスがクラスＹｉであることと、不整合データを持つクラスＹｉのモデルインスタンスがデータＥｉ内の全要素であることとを一組のデータとして、不整合参照関係格納部２２４に格納する（ステップＳ１０９）。
【０２０９】
なお、データＥｉは、ステップＳ１０６において特定されたモデルインスタンスの和集合であり、同一の要素を複数持つことはない。
【０２１０】
なお、上記したステップＳ１０５において値ＶｉｊがデータＴ内に存在すると判定された場合、ステップＳ１０６およびＳ１０７の処理は実行されず、ステップＳ１０８の処理が実行される。
【０２１１】
次に、図１９のフローチャートを参照して、上述した警告表示処理（図１６に示すステップ８９の処理）の処理手順について詳細に説明する。
【０２１２】
なお、警告表示処理は、不整合参照関係格納部２２４に格納されている各データの組について実行される。ここでは、不整合参照関係格納部２２４にはｓ個のデータの組が格納されているものとする。また、以下の説明においては、警告表示処理の対象となるデータの組をデータの組Ｄｔ（ｔ＝１、２、…、ｓ）とする。
【０２１３】
また、データの組Ｄｔに含まれる参照先の属性を属性Ｓ、当該属性Ｓが属するクラスをクラスＲとする。更に、データの組Ｄｔに含まれる参照元の属性を属性Ｐ、当該属性Ｐが属するクラスをクラスＱとする。
【０２１４】
まず、不整合警告部３３４は、データの組Ｄｔに含まれる属性Ｓ（参照先の属性）が属するクラスＲのモデル入力画面がユーザインタフェース３１を介して現在表示されているか否かを判定する（ステップＳ１１１）。
【０２１５】
クラスＲのモデル入力画面が現在表示されていると判定された場合（ステップＳ１１１のＹＥＳ）、不整合警告部３３４は、当該クラスＲのモデル入力画面において、属性ＰおよびクラスＱを用いた指定フォーマットの文章で表示されているリンクの箇所に、不整合が発生していることを警告するメッセージを表示する（ステップＳ１１２）。
【０２１６】
このとき、不整合警告部３３４は、クラスＲのモデル入力画面において、属性Ｓ（参照先の属性）の列全体を色付けする（ステップＳ１１３）。
【０２１７】
なお、上記したステップＳ１１１においてクラスＲのモデル入力画面が現在表示されていないと判定された場合、ステップＳ１１２およびＳ１１３の処理は実行されない。
【０２１８】
次に、不整合警告部３３４は、データの組Ｄｔに含まれる属性Ｐ（参照元の属性）が属するクラスＱのモデル入力画面がユーザインタフェース３１を介して現在表示されているか否かを判定する（ステップＳ１１４）。
【０２１９】
クラスＱのモデル入力画面が現在表示されていると判定された場合（ステップＳ１１４のＹＥＳ）、不整合警告部３３４は、当該クラスＱのモデル入力画面において、属性ＳおよびクラスＲを用いた指定フォーマットの文章で表示されているリンクの箇所に、不整合が発生していることを警告するメッセージを表示する（ステップＳ１１５）。
【０２２０】
このとき、不整合警告部３３４は、クラスＱのモデル入力画面において、データの組Ｄｔに含まれる不整合データを持つモデルインスタンスの全てに対して参照元の属性Ｐの属性値の箇所を色付けする（ステップＳ１１６）。
【０２２１】
なお、上記したステップＳ１１４においてクラスＱのモデル入力画面が現在表示されていないと判定された場合、ステップＳ１１５およびＳ１１６の処理は実行されず、警告表示処理は終了される。
【０２２２】
以下、本実施形態に係る仕様入力支援装置３０の第２の動作例について具体的に説明する。なお、第２の動作例は、参照先の属性および参照元の属性の属性値が確定した後に参照先の属性が属するクラスのモデルインスタンスが削除される場合における動作である。
【０２２３】
ここでは、上述した入力候補表示選択部３３３による処理が繰り返されることにより、「画面要件」クラスのモデル入力画面における「関連機能要件ＩＤ」の列（つまり、「関連機能要件ＩＤ」属性の属性値）への入力が全て完了していることを前提とする。なお、図２０は、このときの参照元の属性である「関連機能要件ＩＤ」属性が属する「画面要件」クラスのモデル入力画面の一例を示す。また、このときの参照先となる属性である「機能要件ＩＤ」が属する「機能要件」クラスのモデル入力画面は、前述した図１１に示す画面であるものとする。
【０２２４】
図２１に示す例によれば、ユーザは、図１１に示すような「機能要件」クラスのモデル入力画面において、当該「機能要件」クラスのモデルインスタンスから、「機能要件ＩＤ」属性が「Ｆ０２」であるモデルインスタンスを削除する（ステップＳ１２１）。
【０２２５】
この場合、入力支援対象判定部３３１は、「機能要件」クラスのモデル入力画面においてユーザによる変更作業が行われたことを検知し、第１〜第７のデータを不整合警告部３３４に渡す。不整合警告部３３４は、入力支援対象判定部３３１から渡された第２および第３のデータから当該変更作業が行われたクラス（ここでは、「機能要件」クラス）および属性（ここでは、「機能要件ＩＤ」属性）を特定する（ステップＳ１２２，Ｓ１２３）。
【０２２６】
次に、入力支援対象判定部３３１は、参照関係データ格納部２２２に格納されている参照関係データに基づいて上述した第６および第７のデータを取得する（ステップＳ１２４）。不整合警告部３３４は、特定された「機能要件ＩＤ」属性を参照している属性（つまり、「機能要件ＩＤ」属性の参照元の属性）および当該属性が属するクラスを、入力支援対象判定部３３１から渡された第６および第７のデータから特定する。ここでは、図２１に示すように、「機能要件ＩＤ」属性の参照元の属性として、「画面要件」クラスに属する「関連機能要件ＩＤ」属性および「帳票要件」クラスに属する「関連機能要件ＩＤ」属性が特定される。
【０２２７】
不整合警告部３３４は、「機能要件」クラスに属する「機能要件ＩＤ」属性の属性値を、「機能要件」クラスの仕様データ（ここでは、仕様データ一時格納部２３内の更新内容が反映された仕様データ格納部２２３内の「機能要件」クラスの仕様データ）から取得する（ステップＳ１２５）。
【０２２８】
また、不整合警告部３３４は、「機能要件ＩＤ」属性の参照元の各属性（「画面要件」クラスに属する「関連機能要件ＩＤ」属性および「帳票要件」クラスに属する「関連機能要件ＩＤ」）の属性値を、当該「画面要件」クラスの仕様データおよび「帳票要件」クラスの仕様データから取得する（ステップＳ１２６）。この「画面要件」クラスの仕様データおよび「帳票要件」クラスの仕様データは、仕様データ一時格納部２３内の更新内容が反映された仕様データ格納部２２３内の「画面要件」クラスの仕様データおよび「帳票要件」クラスの仕様データである。なお、図２１においては、便宜的に、「画面要件」クラスの仕様データのみが示されている。また、図２２は、仕様データ一時格納部２３内の更新内容を仕様データ格納部２２３内の「画面要件」クラスの仕様データに対して反映させることによって、最新の内容の「画面要件」クラスの仕様データが生成される様子を示す。
【０２２９】
次に、不整合警告部３３４は、取得された「機能要件ＩＤ」属性の属性値と当該「機能要件ＩＤ」属性の参照元の各属性（「画面要件」クラスに属する「関連機能要件ＩＤ」属性および「帳票要件」クラスに属する「関連機能要件ＩＤ」属性）の属性値とを比較する（ステップＳ１２７）。
【０２３０】
不整合警告部３３４は、比較結果を参照して、「機能要件ＩＤ」の参照元の各属性の属性値（入力内容）が「機能要件ＩＤ」属性の属性値として存在しているか否かを判定する。図２１に示す例では、「画面要件」クラスの「画面要件ＩＤ」属性の属性値が「Ｓ−Ｍ−０１」、「Ｓ−Ｍ−０２」および「Ｓ−Ｍ−０３」であるモデルインスタンスの「関連機能要件ＩＤ」属性の属性値（ここでは、「Ｆ０２」）が、「機能要件」クラスに属する「機能要件ＩＤ」属性の属性値として存在しない。
【０２３１】
この場合、不整合警告部３３４は、「機能要件ＩＤ」属性の属性値として存在しない「関連機能要件ＩＤ」属性の箇所を、「画面要件」クラスのモデル入力画面において色付けすることにより、当該箇所への入力内容が不正である（つまり、不整合が発生している）ことを警告する（ステップＳ１２８）。
【０２３２】
更に、不整合警告部３３４は、「機能要件」クラスのモデル入力画面において、「機能要件ＩＤ」属性の列全体を色付けすることにより、「機能要件ＩＤ」属性を参照している属性（つまり、「機能要件ＩＤ」属性の参照元の属性）との間で、属性値の入力内容の不整合が発生していることを警告する（ステップＳ１２９）。
【０２３３】
なお、図２３は、上記したような処理が実行された直後の不整合参照関係格納部２２４のデータ構造の一例を示す。不整合参照関係格納部２２４には、上記したように不整合データを持つ参照元クラス（参照元の属性が属するクラス）のモデルインスタンス（のＩＤ属性値）、参照元の属性が属するクラスのクラス名、参照元の属性の属性名、参照先の属性の属性名および参照先の属性が属するクラスのクラス名が対応づけて格納されている。
【０２３４】
ここで、上記したように不整合警告部３３４により不整合が発生していることがユーザに対して警告された場合、当該ユーザは、当該ユーザの変更作業（ここでは、削除作業）の影響で不整合が発生したことを、「機能要件」クラスのモデル入力画面において知ることができる。
【０２３５】
この場合、ユーザは、発生した不整合を除去するために、「機能要件」クラスのモデル入力画面において、「機能要件ＩＤ」属性の列の上方の文章に対して作成されているリンクをクリック（指定）する（ステップＳ１３０）。図２１に示す例では、ユーザは、例えば「☆参照元（１）：「画面要件」クラスの「関連機能要件ＩＤ」」の文章（に対して作成されているリンク）をクリックする。なお、この文章の☆印および当該文章の右側の吹き出しは、不整合の発生を意味している。
【０２３６】
ここで、参照関係提示部３３２は、ユーザによってクリックされたリンクにおいて定義されているクラスのモデル入力画面を表示する。この場合、図２１に示す「画面要件」クラスのモデル入力画面が表示される。
【０２３７】
ユーザは、「画面要件」クラスの色付けされている「関連機能要件ＩＤ」属性の箇所（の１つ）を右クリック（つまり、指定）する（ステップＳ１３１）。ここでは、「画面要件ＩＤ」属性の属性値が「Ｓ−Ｍ−０１」であるモデルインスタンスの「関連機能要件ＩＤ」属性の箇所が指定されたものとする。
【０２３８】
この場合、図２４に示すように、入力候補表示選択部３３３は、右クリックされた「関連機能要件ＩＤ」属性の箇所に「入力候補ボックスを表示」のリストを表示する（ステップＳ１３２）。
【０２３９】
入力候補表示選択部３３３は、入力支援対象判定部３３１から渡された第１、第２および第３のデータから、ユーザによって指定（右クリック）された画面が「画面要件」クラスのモデル入力画面であること、および当該指定された箇所の属性（つまり、列名）が「関連機能要件ＩＤ」属性であることを特定する（ステップＳ１３３，Ｓ１３４）。また、入力候補表示選択部３３３は、ユーザによって指定された箇所（指定箇所）（を示すデータ）を取得する。
【０２４０】
ここで、入力候補表示選択部３３３によって表示された「入力候補ボックスを表示」のリストがユーザによってクリック（指定）されたものとする。
【０２４１】
この場合、入力支援対象判定部３３１は、参照関係データ格納部２２２に格納されている参照関係データに基づいて上述した第６および第７のデータを取得する（ステップＳ１３５）。入力候補表示選択部３３３は、上記したステップＳ１３４において特定された「画面要件」クラスに属する「関連機能要件ＩＤ」属性から参照されている属性（つまり、「関連機能要件ＩＤ」属性の参照先の属性）および当該属性が属するクラスを、入力支援対象判定部３３１から渡された第６および第７のデータから特定する。
【０２４２】
図２４に示す例では、「画面要件」クラスの「関連機能要件ＩＤ」属性の参照先の属性として、「機能要件」クラスに属する「機能要件ＩＤ」属性が特定される。
【０２４３】
入力候補表示選択部３３３は、「機能要件」クラスの各モデルインスタンスについて、特定された「機能要件ＩＤ」属性、その名称に関する属性である「機能要件名」属性およびその説明に関する属性である「説明」属性の属性値を取得する（ステップＳ１３６）。
【０２４４】
なお、入力候補表示選択部３３３は、これらの属性値を、「機能要件」クラスの仕様データ（ここでは、仕様データ一時格納部２３内の更新内容が反映された仕様データ格納部２２３内の「機能要件」クラスの仕様データ）から取得する。図２５は、図２４に示す例において、仕様データ一時格納部２３内の更新内容を仕様データ格納部２２３内の「機能要件」クラスの仕様データに対して反映させることによって、最新の内容の「機能要件」クラスの仕様データが生成される様子を示す。
【０２４５】
次に、入力候補表示選択部３３３は、取得された属性値を表示した入力候補ボックスを表示する（ステップＳ１３７）。
【０２４６】
このとき、入力候補ボックスに表示されている「機能要件ＩＤ」属性の属性値のうち、上記したステップＳ１３１においてユーザによって右クリックされた箇所（つまり、ユーザによる指定箇所）に入力されていた値（つまり、属性値）については、入力候補ボックスにおいて当該「機能要件ＩＤ」属性の属性値の行を色付けし、更には、チェックをつけて選択済みとして表示される。
【０２４７】
一方、指定箇所に入力されている値のうち、入力候補ボックスに表示されている「機能要件ＩＤ」属性の属性値として存在しない値については、入力候補表示選択部３３３において予め保持されている指定フォーマットに従って当該値が不正な値であることを示す文章が作成されて、表示される。
【０２４８】
ここで、図２６に示すように、上記したような入力候補ボックスのリストにおいて、「画面要件」クラスのモデル入力画面において「関連機能要件ＩＤ」属性の属性値として入力する値（「機能要件ＩＤ」属性の属性値）がユーザによって選択された後に、当該入力候補ボックスに設けられている「複写する」ボタンがユーザによってクリックされたものとする（ステップＳ１３８）。
【０２４９】
この場合、入力候補表示選択部３３３は、入力候補ボックスのリストにおいて選択された行の「機能要件ＩＤ」属性の属性値を取得する。入力候補表示選択部３３３は、取得された値を、ユーザによる指定箇所（ステップＳ１３１においてユーザによって右クリックされた箇所）に入力する（ステップＳ１３９）。これによって、ユーザによる指定箇所に適切な値が入力されることになる。なお、入力候補ボックスは、複写終了後に閉じられる。
【０２５０】
図２６に示す例では、入力候補ボックスのリストにおいて選択された「機能要件ＩＤ」属性の属性値「Ｆ０１」が、「画面要件」クラスのモデル入力画面内の「画面要件ＩＤ」属性の属性値が「Ｓ−Ｍ−０１」であるモデルインスタンスの「関連機能要件ＩＤ」属性の箇所（ユーザによる指定箇所）に対して入力されている。
【０２５１】
入力支援対象判定部３３１は、「画面要件」クラスのモデル入力画面において変更作業が行われたことを検知し、第１〜第７のデータを不整合警告部３３４に渡す。不整合警告部３３４は、入力支援対象判定部３３１から渡された第２および第３のデータから当該変更作業が行われたクラス（ここでは、「画面要件」クラス）および属性（ここでは、「関連機能要件ＩＤ」属性）を特定する（ステップＳ１４０，Ｓ１４１）。
【０２５２】
次に、入力支援対象判定部３３１は、参照関係データ格納部２２２に格納されている参照関係データに基づいて上述した第６および第７のデータを取得する（ステップＳ１４２）。不整合警告部３３４は、特定された「関連機能要件ＩＤ」属性が参照している属性（「関連機能要件ＩＤ」の参照先の属性）を、入力支援対象判定部３３１から渡された第６および第７のデータから特定する。ここでは、図２６に示すように、「関連機能要件ＩＤ」属性の参照先の属性として、「機能要件」クラスに属する「機能要件ＩＤ」属性が特定される。
【０２５３】
不整合警告部３３４は、「画面要件」クラスに属する「関連機能要件ＩＤ」属性の属性値（の集合）を、「画面要件」クラスの仕様データ（仕様データ一時格納部２３内の更新内容が反映された仕様データ格納部２２３内の「画面要件」クラスの仕様データ）から取得する（ステップＳ１４３）。図２７は、図２６に示す例において、仕様データ一時格納部２３内の更新内容を仕様データ格納部２２３内の「画面要件」クラスの仕様データに対して反映させることによって、最新の内容の「画面要件」クラスの仕様データが生成される様子を示す。
【０２５４】
また、不整合警告部３３４は、特定された「機能要件」クラスに属する「機能要件ＩＤ」属性の属性値（の集合）を、「機能要件」クラスの仕様データ（仕様データ一時格納部２３内の更新内容が反映された仕様データ格納部２２３内の「機能要件」クラスの仕様データ）から取得する（ステップＳ１４４）。図２８は、図２６に示す例において、仕様データ一時格納部２３内の更新内容を仕様データ格納部２２３内の「機能要件」クラスの仕様データに対して反映させることによって、最新の内容の「画面要件」クラスの仕様データが生成される様子を示す。
【０２５５】
次に、不整合警告部３３４は、「画面要件」クラスに属する「関連機能要件ＩＤ」属性の属性値と「機能要件」クラスに属する「機能要件ＩＤ」属性の属性値とを比較する（ステップＳ１４５）。
【０２５６】
不整合警告部３３４は、比較結果に基づいて、「関連機能要件ＩＤ」属性の属性値が「機能要件ＩＤ」属性の属性値として存在しているか否かを判定する。図２６に示す例では、「画面要件」クラスに属する「画面要件ＩＤ」属性の属性値が「Ｓ−Ｍ−０２」および「Ｓ−Ｍ−０３」であるモデルインスタンスの「関連機能要件ＩＤ」属性の属性値（ここでは、「Ｆ０２」）が、「機能要件」クラスに属する「機能要件ＩＤ」属性の属性値として存在しない。
【０２５７】
この場合、不整合警告部３３４は、「機能要件ＩＤ」属性の属性値として存在しない「関連機能要件ＩＤ」属性の箇所を、「画面要件」クラスのモデル入力画面において色付けすることにより、当該箇所への入力内容が不正である（つまり、不整合が発生している）ことを警告する（ステップＳ１４６）。
【０２５８】
更に、不整合警告部３３４は、「機能要件」クラスのモデル入力画面において、「機能要件ＩＤ」属性の列全体を色付けすることにより、「機能要件ＩＤ」属性を参照している属性（つまり、「機能要件ＩＤ」属性の参照元の属性）との間で、属性値の入力内容の不整合が発生していることを警告する（ステップＳ１４７）。
【０２５９】
なお、図２９は、上記したような処理が実行された直後の不整合参照関係格納部２２４のデータ構造の一例を示す。なお、不整合参照関係格納部２２４のデータ構造については、前述した図２３において説明した通りであるので、その詳しい説明を省略する。
【０２６０】
ここで、入力候補ボックスが表示されてから一度も「複写する」ボタンが押下されていない場合であって、図２６に示す入力候補ボックスに設けられている「閉じる」ボタンが押下されたときには、入力候補表示選択部３３３は、当該入力候補ボックスを閉じる（ステップＳ１４８）。
【０２６１】
なお、ユーザは、図２６に示す「画面要件」クラスのモデル入力画面において色付けされている「関連機能要件ＩＤ」属性の他の箇所（つまり、「画面要件ＩＤ」属性の属性値が「Ｓ−Ｍ−０２」および「Ｓ−Ｍ−０３」であるモデルインスタンスの「関連機能要件ＩＤ」属性の各箇所）についても上記したステップＳ１３１と同様に指定することによって、ステップＳ１３１〜Ｓ１４７の処理を実行させることができる。
【０２６２】
ここで、図３０は、「画面要件」クラスのモデル入力画面において色付けされている「関連機能要件ＩＤ」属性の全ての箇所について上記したように処理が実行された後の「画面要件」クラスのモデル入力画面の一例を示す。
【０２６３】
また、図３１は、「画面要件」クラスのモデル入力画面において色付けされている「関連機能要件ＩＤ」属性の全ての箇所について処理が実行された後の「機能要件」クラスのモデル入力画面の一例を示す。
【０２６４】
また、図３２は、「画面要件」クラスのモデル入力画面において色付けされている「関連機能要件ＩＤ」属性の全ての箇所について処理が実行された後の不整合参照関係格納部２２４のデータ構造の一例を示す。
【０２６５】
ここで、ユーザは、上記した図３１に示す「機能要件」クラスのモデル入力画面を確認することによって、「機能要件」クラスに属する「機能要件ＩＤ」属性と、当該「機能要件ＩＤ」の参照元の属性（ここでは、「帳票要件」クラスに属する「関連機能要件ＩＤ」属性）との間に発生した属性値の不整合の除去作業が完了していないことを知ることができる。
【０２６６】
この場合、ユーザは、不整合の除去作業を完了させるため、「機能要件」クラスのモデル入力画面において、「機能要件ＩＤ」属性の列の情報の文章に対して作成されているリンクをクリックする。図３１に示す「機能要件」クラスのモデル入力画面においては、ユーザは、「☆参照元（２）：「帳票要件」クラスの「関連機能要件ＩＤ」」の文章（に対して作成されているリンク）をクリックする。
【０２６７】
この場合、ユーザによってクリックされたリンクにおいて定義されているクラスのモデル入力画面が表示される。具体的には、図３３に示す「帳票要件」クラスのモデル入力画面が表示される。以下、上述したステップＳ１３２以降の処理に相当する処理が実行される。
【０２６８】
ここで、図３４は、図３３に示す「帳票要件」クラスのモデル入力画面に対してステップＳ１３２以降の処理に相当する処理が実行された後の「帳票要件」クラスのモデル入力画面の一例を示す。図３４に示すように、「帳票要件」クラスのモデル入力画面においては、各モデルインスタンスの「関連機能要件ＩＤ」属性の属性値から「Ｆ０２」が削除されている。また、図３４に示す「帳票要件」クラスのモデル入力画面においては、上記した図３３に示す「帳票要件」クラスのモデル入力画面と比較して、不整合が発生している旨の警告は表示されない。
【０２６９】
また、図３５は、図３３に示す「帳票要件」クラスのモデル入力画面に対してステップＳ１３２以降の処理に相当する処理が実行された後の不整合参照関係格納部２２４のデータ構造の一例を示す。この場合、不整合は発生していないので、不整合参照関係格納部２２４には図３５に示すようにデータは保持されない。
【０２７０】
また、図３６は、図３３に示す「帳票要件」クラスのモデル入力画面に対してステップＳ１３２以降の処理に相当する処理が実行された後の「機能要件」クラスのモデル入力画面の一例を示す。この場合、図３６に示す「機能要件」クラスのモデル入力画面においては、上記した図３１に示す「機能要件」クラスのモデル入力画面と比較して、不整合が発生している旨の警告は表示されない。
【０２７１】
ユーザは、例えばこれらのクラスのモデル入力画面を確認することによって、不整合の警告がないことから、上述したようなモデルインスタンスの削除作業の影響による不整合の除去作業を完了したことを知ることができる。
【０２７２】
上記したように本実施形態においては、メタモデル格納部２２１に格納されている設計メタ情報に含まれるモデルクラスおよび当該モデルクラスに属する属性に基づいて仕様データを入力させるモデル入力画面を表示し、当該モデルクラスに属する属性と参照関係にある属性を参照関係データ格納部２２２に格納されている参照関係データに基づいて特定し、当該モデル入力画面において当該特定された属性を提示する。
【０２７３】
また、本実施形態においては、モデル入力画面において仕様データが入力される際に、参照関係データ格納部２２２に格納されている参照関係データに基づいて当該仕様データとして入力される属性値の候補を提示し、当該提示された属性値の候補のうちユーザによって選択された属性値を仕様データとして入力する。
【０２７４】
また、本実施形態においては、モデル入力画面において仕様データとして入力された属性値を変更し、当該属性値が変更された属性値と参照関係にある属性を、参照関係データ格納部２２２に格納されている参照関係データに基づいて取得し、当該属性値が変更された属性の属性と当該取得された属性の属性値とを比較することによって、当該属性間の不整合を警告する。
【０２７５】
これにより、本実施形態においては、参照関係にある属性（の属性値）の探索または入力の手間を削減し、参照関係に関する当該属性間の不整合の発生を抑制し、更には、当該変更に応じて発生した不整合を警告することにより、当該不整合の除去を促すことができる。
【０２７６】
具体的には、本実施形態においては、メタモデル格納部２２１に格納されている設計メタ情報および参照関係データ格納部２２２に格納されている参照関係データによって定められる参照関係に従った入力値をユーザが入力することができる。
【０２７７】
また、本実施形態においては、ユーザは入力対象のクラスのモデル入力画面および当該モデル入力画面内のリンクから辿ることができる画面を表示させればよく、他の様々な画面を自ら探索して表示・参照する必要はなく、ユーザの手間を低減させることが可能となる。
【０２７８】
また、本実施形態においては、ユーザによる入力値が高い割合で参照関係に従ったものとなり、当該参照関係に違反することによる仕様の不整合の発生を未然に防止することが可能となる。
【０２７９】
更に、本実施形態においては、参照関係に違反していることによる不整合が入力値に発生している場合には、当該不整合を自動的に検出し、ユーザに対して提示することが可能となる。
【０２８０】
したがって、本実施形態においては、上記したように仕様の不整合を大幅に減少させることによって仕様に関するデータ（仕様データ）の品質を向上さることができる。また、参照関係に従った入力を行う際の手間、不整合の検知および修正の手間を大幅に減少させることができる。
【０２８１】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。  
【符号の説明】
【０２８２】
１０…コンピュータ、２０…外部記憶装置、２２…データベース、２３…仕様データ一時格納部、３０…仕様入力支援装置、３１…ユーザインタフェース、３２…仕様データ入力部（表示処理手段）、３３…入力支援部、２２１…メタモデル格納部（第１の格納手段）、２２２…参照関係データ格納部（第２の格納手段）、２２３…仕様データ格納部、２２４…不整合参照関係格納部、３３１…入力支援対象判定部、３３２…参照関係提示部、３３３…入力候補表示選択部、３３４…不整合警告部。
【図１】
2013077177.tif 000003
【図２】
2013077177.tif 000004
【図３】
2013077177.tif 000005
【図４】
2013077177.tif 000006
【図５】
2013077177.tif 000007
【図６】
2013077177.tif 000008
【図７】
2013077177.tif 000009
【図８】
2013077177.tif 000010
【図９】
2013077177.tif 000011
【図１０】
2013077177.tif 000012
【図１１】
2013077177.tif 000013
【図１２】
2013077177.tif 000014
【図１３】
2013077177.tif 000015
【図１４】
2013077177.tif 000016
【図１５】
2013077177.tif 000017
【図１６】
2013077177.tif 000018
【図１７】
2013077177.tif 000019
【図１８】
2013077177.tif 000020
【図１９】
2013077177.tif 000021
【図２０】
2013077177.tif 000022
【図２１】
2013077177.tif 000023
【図２２】
2013077177.tif 000024
【図２３】
2013077177.tif 000025
【図２４】
2013077177.tif 000026
【図２５】
2013077177.tif 000027
【図２６】
2013077177.tif 000028
【図２７】
2013077177.tif 000029
【図２８】
2013077177.tif 000030
【図２９】
2013077177.tif 000031
【図３０】
2013077177.tif 000032
【図３１】
2013077177.tif 000033
【図３２】
2013077177.tif 000034
【図３３】
2013077177.tif 000035
【図３４】
2013077177.tif 000036
【図３５】
2013077177.tif 000037
【図３６】
2013077177.tif 000038