(57)【特許請求の範囲】
【請求項１】
画面デザインされた各プログラムが表示する複数の画面パターンを処理対象として，それらの画面パターンを複数のグループに分類する画面パターン分類装置であって，
前記画面パターン情報が登録された画面パターン情報記憶手段と，
プログラムの処理する業務毎にその業務で使用する各プログラム部品の情報を記憶する部品一覧記憶手段とを備え，
前記部品一覧記憶手段から開発するプログラムの処理する業務が持つプログラム部品の一覧を取得して，前記画面パターン情報記憶手段の各画面パターンについて各画面パターンがどのプログラム部品を持ち，どのプログラム部品を持たないかを示す各プログラム部品の有無情報を作成して画面部品表記憶手段に登録する画面部品表作成手段と，
前記画面部品表記憶手段に登録された各画面パターンのプログラム部品の有無情報に従って処理対象の画面パターン間の平方ユークリッド距離を測定し，測定した距離に基づいて階層クラスター分析の手法を用いて画面パターンを複数のグループに分類する分類手段とを備えることを，
特徴とする画面パターン分類装置。
【請求項２】
請求項１に記載の画面パターン分類装置において，
前記分類手段の分類した各グループについて，グループを構成する画面パターンのそれぞれについて距離の合計を算出し，その中で最小の値を示す画面パターンをそのグループを代表する画面パターンとして決定する決定手段を備えることを，
特徴とする画面パターン分類装置。
【請求項３】
請求項２に記載の画面パターン分類装置において，
各プログラム部品のプログラムコードを記憶するプログラム部品コード記憶手段を備え，
前記決定手段の決定したグループを代表する画面パターンの持つプログラム部品のコード情報を前記プログラム部品コード記憶手段から取得して，それらを組み合わせることで，前記分類手段の分類した各グループについてのひな型プログラムを作成するひな型プログラム作成手段とを備えることを，
特徴とする画面パターン分類装置。
【請求項４】
画面デザインされた各プログラムが表示する複数の画面パターンを処理対象として，それらの画面パターンを複数のグループに分類する画面パターン分類装置で実行される画面パターン分類方法であって，
前記画面パターン分類装置が，前記画面パターン情報が登録された画面パターン情報記憶部と，プログラムの処理する業務毎にその業務で使用する各プログラム部品の情報を記憶する部品一覧記憶部とを備え
前記部品一覧記憶部から開発するプログラムの処理する業務が持つプログラム部品の一覧を取得し，前記画面パターン情報記憶部の各画面パターンについて各画面パターンがどのプログラム部品を持ち，どのプログラム部品を持たないかを示す各プログラム部品の有無情報を含む画面部品表を作成して登録し，
前記登録された各画面パターンのプログラム部品の有無情報に従って処理対象の画面パターン間の平方ユークリッド距離を測定し，測定した距離に基づいて階層クラスター分析の手法を用いて画面パターンを複数のグループに分類することを，
特徴とする画面パターン分類方法。
【請求項５】
画面デザインされた各プログラムが表示する複数の画面パターンを処理対象として，それらの画面パターンを複数のグループに分類する画面パターン分類装置の実現のために用いられる画面パターン分類プログラムであって，
コンピュータを，
前記画面パターン情報が登録された画面パターン情報記憶手段と，
プログラムの処理する業務毎にその業務で使用する各プログラム部品の情報を記憶する部品一覧記憶手段と，
前記部品一覧記憶手段から開発するプログラムの処理する業務が持つプログラム部品の一覧を取得し，前記画面パターン情報記憶部の各画面パターンについて各画面パターンがどのプログラム部品を持ち，どのプログラム部品を持たないかを示す各プログラム部品の有無情報を含む画面部品表を作成して登録する手段と，
前記登録された各画面パターンのプログラム部品の有無情報に従って処理対象の画面パターン間の平方ユークリッド距離を測定し，測定した距離に基づいて階層クラスター分析の手法を用いて画面パターンを複数のグループに分類する分類手段と，
して機能させるための画面パターン分類プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画面デザインされた複数の画面パターンを処理対象として、それらの画面パターンを複数のグループに分類する画面パターン分類装置及びその方法と、その画面パターン分類装置の実現のために用いられる画面パターン分類プログラムとに関する。
【０００２】
現在、オープンシステムを構築する中で、プログラム開発は様々な開発言語・開発環境が選択可能であることから、開発のノウハウの再利用がきかず生産性向上・品質確保が困難である。特に、中・大規模システムでは、ベンダー企業とその関連会社の散乱したノウハウによって、標準化のされていないプログラム開発が行われることで、生産性向上・品質確保が図りずらい状況にある。これから、そのような問題を解決するための技術の構築が叫ばれている。
【背景技術】
【０００３】
プログラムを開発する場合、ユーザがシステムの基本仕様を作成すると、プログラムの開発メーカは、先ずは、それに基づいてユーザインタフェース仕様書を作成する。続いて、その作成したユーザインタフェース仕様書に基づいて画面をデザインし、それに基づいてユーザと打ち合わせることでシステムの詳細を決定して、システムの表示する画面を最終的に決定する。
【０００４】
そして、プログラムの開発メーカは、このようにしてシステムの表示する画面が決まると、その画面を表示することになる開発対象のプログラムが決められたことになるので、その開発するプログラムを幾つか分割して、それぞれの開発するプログラム部分に対して、プログラム開発のリーダーが適当なプログラマや委託会社（プログラム開発の委託会社）を割り当てていくことでプログラムの開発の入ることになる。
【０００５】
このとき、プログラム開発のリーダーは、プログラマや委託会社がこれまでに経験したプログラム開発から、どのようなプログラムを開発することを得意とするのかということを把握して、それに基づいて、どのプログラマや委託会社にどのプログラム部分を担当させるのかを決めるようにしている。
【０００６】
以下に説明するように、本発明は、このような従来技術に従っていたのではプログラム開発の生産性向上・品質確保が困難であるという事情に鑑みて、ユーザインタフェース仕様書などに基づいてデザインされた複数の画面を処理対象として、それらの画面を複数のグループに分類するという技術を提供することにより、このような従来技術の問題を解決する技術の提供を図るものである。
【０００７】
これまでのところ、複数の画面を複数のグループに分類するという先行技術については開示されていないが、下記の非特許文献１，２には、ソースプログラムの類似度を測定するという発明が開示されている。
【非特許文献１】「ソフトウェアパターン研究の現在と未来」〔平成17年11月15日検索〕、インターネット＜ＵＲＬ：http://www.fuka.info.waseda.ac.jp/~washi/other/washi_sigse141.pdf＞
【非特許文献２】「ソフトウェアシステムの類似度とその計測ツールＳＭＭＴ」〔平成17年11月15日検索〕、インターネット＜ＵＲＬ：http://sel.ics.es.osaka-u.ac.jp/~lab-db/betuzuri/archive/368/368.pdf ＞
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述したように、プログラムを開発する場合、システムの表示する画面が決まることで、その画面を表示することになる開発対象のプログラムが決まると、その開発するプログラムを幾つかに分割して、それぞれの開発するプログラム部分に対して、適当なプログラマや委託会社を割り当てていくことでプログラムの開発に入ることになる。
【０００９】
このときに、従来技術では、プログラム開発のリーダーの経験と勘によりプログラマや委託会社の割り当てが行われていた。
【００１０】
すなわち、プログラム開発のリーダーは、プログラマや委託会社がこれまでに経験したプログラム開発から、どのようなプログラムを開発することを得意とするのかということを把握して、それに基づいて、どのプログラマや委託会社にどのプログラム部分を担当させるのかを決めるようにしていたのである。
【００１１】
しかしながら、このような従来技術に従っていると、プログラム開発のリーダーのあいまいな判断によりプログラマや委託会社の割り当てが行われることになることから、必ずしも最適なプログラマや委託会社の割り当てが行われるとは限らないという問題がある。
【００１２】
実際には、その開発するプログラム部分については、別のプログラマや委託会社の方が経験が深いことで、より品質の良いプログラムをより短い期間に開発できるものの、そのプログラマや委託会社ではないプログラマや委託会社に開発が割り当てられることにより、そのようなことを実現できないという問題があるのである。
【００１３】
しかも、従来技術では、開発するプログラム部分について、そのプログラム部分のひな型となるプログラムをプログラマや委託会社に提供する手段を有していない。
【００１４】
これから、従来技術では、プログラマや委託会社は、自分に割り当てられたプログラム部分を開発するときに、何もない状態からそのプログラム部分を開発しなければならないという問題もある。
【００１５】
このようなことから、従来技術に従っていると、プログラム開発の生産性向上・品質確保が困難であるという問題がある。
【００１６】
本発明はかかる事情に鑑みてなされたものであって、プログラム開発の生産性向上・品質確保を実現することを可能にする新たな技術の提供を目的とする。
【課題を解決するための手段】
【００１７】
〔１〕本発明の背景
この目的を達成するために、本発明は、画面デザインされた複数の画面パターンを処理対象として、それらの画面パターンを複数のグループに分類するという画面パターン分類技術を実現する。
【００１８】
画面パターンはプログラムが表示するものであり、これから、画面パターンをみれば、その画面パターンを表示するプログラムがどのようなプログラム部品を使っているのかが特定可能となる。
【００１９】
このとき特定可能となるプログラム部品には、関数的な処理を行うものもあれば、一覧表示のような関数的な処理を伴わないものもある。また、プログラムがユーザインタフェース層（ユーザとのインタフェース処理を司る部分）、ビジネスロジック層（具体的な業務処理を司る部分）、データアクセスコントロール層（マスタのデータアクセス処理を司る部分）というような階層構造を持つ場合に、このとき特定可能となるプログラム部品には、ユーザインタフェース層に属するものもあるし、ビジネスロジック層に属するものもあるし、データアクセスコントロール層に属するものもあるし、複数の層にまたがって存在するものもある。
【００２０】
いずれにしろ、画面パターンをみれば、その画面パターンを表示するプログラムがどのようなプログラム部品を使っているのかが特定可能である。
【００２１】
一方、プログラマや委託会社がこれまでに携わったプログラム開発から、そのプログラマや委託会社はこのプログラム部品を用いるプログラムの開発には精通しているとか、このプログラム部品を用いるプログラムの開発には携わったことがないというような情報をデータベース化することが可能である。
【００２２】
これから、画面デザインされた複数の画面パターンを複数のグループに分類するという画面パターン分類技術が実現されれば、そのグループに属する画面パターンを表示するプログラム部分がどのようなプログラム部品を持つのかということが分かることになり、これから、そのプログラム部分を担当するプログラマや委託会社として誰が適切であるのかということを自動的に判断することができるようになる。
【００２３】
また、画面デザインされた複数の画面パターンを複数のグループに分類するという画面パターン分類技術が実現されれば、そのグループに属する画面パターンの中から代表となる画面パターンを選択して、その代表の画面パターンを表示するプログラム部分がどのようなプログラム部品を持つのかということが分かることで、そのグループについてのひな型となるプログラムを作成してプログラマや委託会社に提供することができるようになる。
【００２４】
このように、画面デザインされた複数の画面パターンを複数のグループに分類するという画面パターン分類技術が実現されれば、プログラム開発の生産性向上・品質確保を実現することができるようになる。
【００２５】
そこで、本発明は、画面デザインされた複数の画面パターンを処理対象として、それらの画面パターンを複数のグループに分類するという画面パターン分類技術の実現を図ったのである。
【００２６】
〔２〕本発明の構成
次に、本発明の画面パターン分類装置の構成について説明する。
【００２７】
本発明の画面パターン分類装置は、画面デザインされた複数の画面パターンを処理対象として、それらの画面パターンを複数のグループに分類することを実現するために、（イ）処理対象の各画面パターンについて、その画面パターンから特定可能となるプログラム部品についての情報を取得する取得手段と、（ロ）取得手段の取得したプログラム部品情報に従って処理対象の画面パターン間の距離を測定し、それに基づいて処理対象の画面パターンを複数のグループに分類する分類手段と、（ハ）分類手段の分類した各グループについて、そのグループを代表する画面パターンを決定する決定手段とを備えるように構成する。
【００２８】
この構成を採るときにあって、分類手段の分類した各グループについてのひな型プログラムの提供を可能にすべく、（ニ）取得手段の取得対象となるプログラム部品のコード情報を記憶する記憶手段と、（ホ）記憶手段から決定手段の決定した画面パターンの持つプログラム部品のコード情報を取得して、それらを組み合わせることで、分類手段の分類した各グループについてのひな型プログラムを作成する作成手段とを備えることがある。
【００２９】
そして、この構成を採るときにあって、分類手段の分類した各グループについてのひな型プログラムの提供を可能にすべく、（へ）複数の既存プログラムとそれが持つプログラム部品の情報とを記憶する記憶手段と、（ト）決定手段の決定した画面パターンの持つプログラム部品と、記憶手段に記憶される各既存プログラムの持つプログラム部品との距離を測定して、決定手段の決定した画面パターンを表示するプログラムに最も近い既存プログラムを特定することで、分類手段の分類した各グループについてのひな型プログラムを決定する決定手段とを備えることがある。
【００３０】
ここで、以上の各処理手段はコンピュータプログラムでも実現できるものであり、このコンピュータプログラムは、適当なコンピュータ読み取り可能な記録媒体に記録して提供されたり、ネットワークを介して提供され、本発明を実施する際にインストールされてＣＰＵなどの制御手段上で動作することにより本発明を実現することになる。
【００３１】
このように構成される本発明の画面パターン分類装置では、処理対象の各画面パターンについて、その画面パターンから特定可能となるプログラム部品についての情報（例えばそのプログラム部品の有無情報）を取得すると、例えばクラスター分析の手法を使い、取得したプログラム部品情報に従って処理対象の画面パターン間の距離を測定し、それに基づいて処理対象の画面パターンを複数のグループに分類する。そして、その分類した各グループについて、そのグループを代表する画面パターンを決定する。
【００３２】
このようにして、本発明の画面パターン分類装置によれば、画面デザインされた複数の画面パターンを処理対象として、それらの画面パターンを複数のグループに分類することができるようになるとともに、分類した各グループについて、そのグループを代表する画面パターンを決定することができるようになる。
【発明の効果】
【００３３】
本発明によれば、画面デザインされた複数の画面パターンを処理対象として、それらの画面パターンを複数のグループに分類することができるようになる。
【００３４】
これから、各グループに属する画面パターンを表示するプログラム部分がどのようなプログラム部品を持つのかということが分かることになり、これにより、そのプログラム部分を担当するプログラマや委託会社として誰が適切であるのかということを自動的に判断することができるようになる。
【００３５】
そして、本発明によれば、分類した各グループについて、そのグループを代表する画面パターンを決定することができるようになる。
【００３６】
これから、各グループを代表する画面パターンにより、そのグループに属する画面パターンを表示するプログラム部分がどのようなプログラム部品を持つのかということが分かることになり、これにより、そのグループについてのひな型となるプログラムを作成してプログラマや委託会社に提供することができるようになる。
【００３７】
このようにして、本発明によれば、プログラム開発の生産性向上・品質確保を実現することができるようになる。
【発明を実施するための最良の形態】
【００３８】
以下、実施の形態に従って本発明を詳細に説明する。
【００３９】
なお、以下の説明では、説明の便宜上、開発するプログラム部分を担当するプログラマを誰にするのかを決定するという支援処理を行うことで説明するが、このプログラマの決定についてはプログラム開発の委託会社についても含める形で行うことが可能である。
【００４０】
図１に、本発明を具備するプログラム開発支援装置１の装置構成の一例を図示する。ここで、図中に示す２は、本発明を具備するプログラム開発支援装置１の備える入出力端末であり、ユーザ（プログラム開発の管理者やプログラマなど）との対話手段として用いられるものである。
【００４１】
本発明を具備するプログラム開発支援装置１は、ユーザに対してプログラム開発を支援する情報を提供する処理を行うものであって、この支援処理を実現するために、図１に示すように、画面デザイン作成部１０と、画面パターン情報記憶部１１と、部品一覧記憶部１２と、画面部品表作成部１３と、画面部品表記憶部１４と、画面分類部１５と、画面分類情報記憶部１６と、プログラマ情報記憶部１７と、プログラマ割当部１８と、プログラム部品コード記憶部１９と、ひな型プログラム作成部２０と、ひな型プログラム記憶部２１と、支援情報提供部２２とを備える。
【００４２】
この画面デザイン作成部１０は、開発するプログラムの表示する画面のデザインを作成するために用意されるものであり、入出力端末２を介してユーザと対話することで、開発するプログラムの表示する画面のパターンを作成して、その作成した画面パターン情報を画面パターン情報記憶部１１に登録する処理を行う。
【００４３】
すなわち、プログラム開発を行う場合には、具体的なプログラムのコーディングに入る前に、ユーザインタフェース仕様書に基づいて、その開発するプログラムが表示する画面のパターンを作成することになるので、画面デザイン作成部１０は、その作成処理を行うのである。
【００４４】
画面パターン情報記憶部１１は、画面デザイン作成部１０の作成した画面パターン情報を記憶する。
【００４５】
部品一覧記憶部１２は、例えば、開発するプログラムの処理する業務毎に、その業務で使用するプログラム部品としてどのようなものがあるのかということを示す情報を記憶する。
【００４６】
例えば、図２に示すように、ある業務“ＡＡ”について、（１）ユーザとのインタフェース処理を司るユーザインタフェース層に属するプログラム部品として、文字数チェックのプログラム部品、日付チェックのプログラム部品、電話番号チェックのプログラム部品、入力チェックのプログラム部品、全角半角チェックのプログラム部品、数量チェックのプログラム部品、ラジオボタンチェックのプログラム部品、遷移先画面状態変更のプログラム部品、戻る処理のプログラム部品、未入力チェックのプログラム部品、処理モード変更のプログラム部品、新規追加処理のプログラム部品というようなプログラム部品があり、（２）具体的な業務処理を司るビジネスロジック層のプログラム部品として、ＤＢアクセスエラーチェックのプログラム部品、実行ボタン処理のプログラム部品というようなプログラム部品があり、（３）マスタ（データベースやＷebサイトなど）のデータアクセス処理を司るデータアクセスコントロール層のプログラム部品として、ツリービューコントロールのプログラム部品、検索結果件数表示のプログラム部品、申込テーブル更新のプログラム部品、弁護士テーブル更新のプログラム部品、申込テーブル削除のプログラム部品、弁護士テーブル削除のプログラム部品、画面遷移のプログラム部品、申込テーブル検索のプログラム部品というようなプログラム部品があるということを記憶するのである。
【００４７】
本発明を具備するプログラム開発支援装置１は、後述するように、開発するプログラムのこのプログラム部分については、このプログラマがこれまでのプログラム開発の経験から適しているという情報を提供する処理を行うものであることから、どのようなものをプログラム部品として定義するのかということについては、例えば、プログラマがこれまでのプログラム開発で経験したことのある処理や機能を特定できるものという観点から定義することになる。
【００４８】
これから、プログラム部品の粒度を揃える必要もないし、プログラム部品が具体的な処理ではなくて一般的な処理を示していてもよい。また、画面パターン上に見えることで画面パターンから直接特定されるようなプログラム部品ばかりでなくて、画面パターン上に配置されるボタンなどの組み合わせから特定されるようなプログラム部品についても含めるようにする。
【００４９】
例えば、健康保険番号を入力して、その患者の受診履歴の一覧を表示するというような粒度の大きなプログラム部品を定義するようにしてもよいし、消費税計算とか利息計算というような粒度の小さなプログラム部品を定義するようにしてもよい。
【００５０】
また、グリッド表示のプログラム部品やタブ表示のプログラム部品というような一般的な処理を示すようなプログラム部品を定義するようにしてもよい。
【００５１】
また、画面パターン上に見えるユーザインタフェース層に属するプログラム部品ばかりでなくて、ビジネスロジック層やデータアクセスコントロール層やそれらの層にまたがるプログラム部品についても含める形で定義することで、プログラム部品を網羅するようにする。
【００５２】
なお、部品一覧記憶部１２に記憶される部品一覧情報については、予め定義しておくのではなくて、画面デザイン作成部１０により画面パターン情報が作成された段階で、それらの作成された画面パターンから抽出して、部品一覧記憶部１２に登録するようにしてもよい。
【００５３】
画面部品表作成部１３は、部品一覧記憶部１２から、開発するプログラムの処理する業務の持つプログラム部品の一覧を取得して、画面パターン情報記憶部１１に記憶される各画面パターンについて、その画面パターンがそれらのプログラム部品のどれを持ち、それらのプログラム部品のどれを持たないのかいうことを示す情報を作成して、それを画面部品表記憶部１４に登録する処理を行う。
【００５４】
画面部品表記憶部１４は、画面部品表作成部１３の作成した画面部品表情報を記憶する。
【００５５】
例えば、開発するプログラムについて画面デザイン作成部１０により１１枚の画面パターンが作成されている場合には、図３に示すように、それらの各画面パターンがどのようなプログラム部品を持ち、どのようなプログラム部品を持たないのかいうことを示す画面部品表情報を記憶するのである。
【００５６】
図３に示す例では、画面部品表作成部１３が図２に示す２２個のプログラム部品の一覧を判断対象とすることを想定しており、これに応じて、各画面パターン１〜１１が、
・画面パターン１：（８）／（12）／（21）／（22）のプログラム部品を持つ
・画面パターン２：（９）／（11）／（19）のプログラム部品を持つ
・画面パターン３：（８）／（12）／（21）／（22）のプログラム部品を持つ
・画面パターン４：（９）／（11）のプログラム部品を持つ
・画面パターン５：（１）／（２）／（６）／（８）／（10）／（12）／（14）／
（21）／（22）のプログラム部品を持つ
・画面パターン６：（１）／（２）／（６）／（９）／（14）／（15）のプログラム部                      品を持つ
・画面パターン７：（１）／（２）／（６）／（８）／（10）／（12）／（14）／
（21）／（22）のプログラム部品を持つ
・画面パターン８：（９）／（15）のプログラム部品を持つ
・画面パターン９：（１）／（２）／（５）／（６）／（10）／（13）／（14）／
（16）／（22）のプログラム部品を持つ
・画面パターン10：（４）のプログラム部品を持つ
・画面パターン11：（１）／（２）／（３）／（６）／（７）／（９）／（10）／
（11）／（18）／（20）のプログラム部品を持つ
ということを示す情報を記憶する例を示してある。
【００５７】
ここで、この図３に示す例では、画面部品表記憶部１４は、そのプログラム部品をいくつ持つのかという画面部品表情報ではなくて、そのプログラム部品を持つのか否かという画面部品表情報を記憶する例を示してある。
【００５８】
本発明を具備するプログラム開発支援装置１は、後述するように、開発するプログラムのこのプログラム部分については、このプログラマがこれまでのプログラム開発の経験から適しているという情報を提供する処理を行うものであることから、画面パターンがそのプログラム部品をいくつ持つのかということについてはそれ程意味のある情報ではない。プログラマがそのプログラム部品を使った経験があるのか否かという情報が意味を持つことから、画面パターンがそのプログラム部品を持つのか否かという情報の方が意味を持つのである。しかし、画面部品表記憶部１４は、画面パターンがそのプログラム部品をいくつ持つのかという情報を記憶するようにしてもよい。
【００５９】
画面分類部１５は、画面部品表記憶部１４に記憶される画面部品表情報を使い、クラスター分析の手法に従って、画面デザイン作成部１０により作成された画面パターンを複数のグループに分類して、その分類情報を画面分類情報記憶部１６に登録するとともに、各グループを代表する画面パターンを決定して、その決定情報を画面分類情報記憶部１６に登録する処理を行う。
【００６０】
画面分類情報記憶部１６は、画面分類部１５により分類された画面パターンの分類情報と、画面分類部１５により決定された各グループを代表する画面パターンの情報とを記憶する。
【００６１】
例えば、画面デザイン作成部１０により１１枚の画面パターンが作成されているときにあって、画面部品表作成部１３により図３に示すような画面部品表情報が作成された場合に、画面分類部１５が、画面パターン１，３，５，７を１つのグループとして分類して、その中の画面パターン１を代表の画面パターンとして決定し、画面パターン２，４，６，８を１つのグループとして分類して、その中の画面パターン４を代表の画面パターンとして決定し、画面パターン９，10，11を１つのグループとして分類して、その中の画面パターン９を代表の画面パターンとして決定するときには、図４に示すように、そのことについて記載する情報を記憶するのである。
【００６２】
プログラマ情報記憶部１７は、プログラム開発に携わるプログラマ毎に、どのようなプログラム部品を用いるプログラムの開発に携わったのかということを示す情報を記憶する。
【００６３】
例えば、図５に示すように、これまでに携わったプログラム開発の各業務について、どのようなプログラム部品を用いるプログラムの開発に携わったのかということを示す情報を記憶するのである。
【００６４】
プログラマ割当部１８は、画面分類情報記憶部１６から各画面パターングループを代表する画面パターンの情報を読み出し、画面部品表記憶部１４からその画面パターンの持つプログラム部品がどれであるのかという情報を取得して、その取得したプログラム部品の情報とプログラマ情報記憶部１７に記憶されるプログラム部品の情報とに従って距離を評価することで、それらの取得したプログラム部品について精通しているプログラマが誰であるのかということを検索することにより、各画面パターングループについて、そのグループに属する画面パターンを表示するプログラムの開発に適したプログラマを支援情報提供部２２に通知する処理を行う。
【００６５】
プログラム部品コード記憶部１９は、部品一覧記憶部１２に記憶されている各プログラム部品の具体的なプログラムコードを記憶する。
【００６６】
ひな型プログラム作成部２０は、画面分類情報記憶部１６から各画面パターングループを代表する画面パターンの情報を読み出し、画面部品表記憶部１４からその画面パターンの持つプログラム部品がどれであるのかという情報を取得して、プログラム部品コード記憶部１９に記憶されているプログラム部品のコードを使って、各画面パターングループについて、それらの取得したプログラム部品についてのコードからなるひな型プログラムを作成して、それをひな型プログラム記憶部２１に登録する処理を行う。
【００６７】
ひな型プログラム記憶部２１は、ひな型プログラム作成部２０により作成された各画面パターングループについてのひな型プログラムを記憶する。
【００６８】
支援情報提供部２２は、プログラマ割当部１８から通知されるプログラマの割当情報をユーザ（プログラム開発の管理者など）に提供し、さらに、ひな型プログラム記憶部２１から、そのプログラマがプログラム開発を担当する画面パターングループの指すひな型プログラムを読み出してユーザ（プログラマなど）に提供する処理を行う。
【００６９】
図６に、画面部品表作成部１３の実行する処理フローの一例を図示し、図７に、画面分類部１５の実行する処理フローの一例を図示する。
【００７０】
次に、これらの処理フローに従って、本発明を具備するプログラム開発支援装置１で実行される本発明の処理について詳細に説明する。
【００７１】
先ず最初に、画面部品表作成部１３の実行する処理について説明する。
【００７２】
画面部品表作成部１３は、画面デザイン作成部１０による画面パターン情報記憶部１１への画面パターン情報の登録が完了することで起動されると、図６の処理フローに示すように、先ず最初に、ステップＳ１０で、部品一覧記憶部１２から、開発するプログラムの業務に対応付けて記憶されているプログラム部品の一覧を読み出す。
【００７３】
例えば、今回開発するプログラムの業務の種別が“ＡＡ”である場合には、図２に示すようなデータ構造を持つ部品一覧記憶部１２から、業務種別“ＡＡ”に対応付けて記憶されているプログラム部品の一覧を読み出すのである。
【００７４】
続いて、ステップＳ１１で、画面パターン情報記憶部１１に記憶されている全ての画面パターンについて処理をしたのか否かを判断して、全ての画面パターンについて処理をしていないことを判断するときには、ステップＳ１２に進んで、未処理の画面パターンを１つ選択して、画面パターン情報記憶部１１から、その選択した画面パターンの情報を読み出す。
【００７５】
続いて、ステップＳ１３で、読み出した画面パターンの情報に従って、入出力端末２のディスプレイに、選択した画面パターンを表示する。すなわち、画面デザイン作成部１０の作成した画面パターンを表示するのである。
【００７６】
続いて、ステップＳ１４で、表示している画面パターンに対応付けて、ステップＳ１０で読み出したプログラム部品の一覧を表示して、ユーザに対して、表示している画面パターンの持つプログラム部品の入力を指示する。
【００７７】
ここで、このとき表示するプログラム部品の一覧があまりに多くの数のプログラム部品になってしまうと、ユーザの選択の負荷が大きくなってしまうので、そのような場合には、例えば、委託会社毎に予めプログラム部品を絞り込んでおいて表示するというような方法を用いるようにしてもよい。
【００７８】
この入力指示を受けて、ユーザは、表示されているプログラム部品の一覧の中から、表示されている画面パターンの持つプログラム部品がどれであるのかを入力してくる。
【００７９】
これから、続いて、ステップＳ１５で、ユーザからの入力を受け付けることで、表示している画面パターンの持つプログラム部品の情報を取得する。
【００８０】
続いて、ステップＳ１６で、取得した画面パターンの持つプログラム部品の情報を画面部品表記憶部１４に登録してから、ステップＳ１１の処理に戻る。
【００８１】
そして、ステップＳ１１〜ステップＳ１５の処理を繰り返していくことで、ステップＳ１１で、画面パターン情報記憶部１１に記憶されている全ての画面パターンについて処理をしたことを判断するときには、処理を終了する。
【００８２】
このようにして、画面部品表作成部１３は、画面デザイン作成部１０により作成された開発するプログラムが表示することになる画面パターンについて、それらの画面パターンがどのようなプログラム部品を持ち、どのようなプログラム部品を持たないのかいうことを示す画面部品表情報を作成して、それを図３に示すようなデータ構造を持つ画面部品表記憶部１４に登録するように処理するのである。
【００８３】
次に、画面分類部１５の実行する処理について説明する。
【００８４】
画面分類部１５は、画面部品表作成部１３による画面部品表記憶部１４への画面部品表情報の登録が完了することで起動されると、図７の処理フローに示すように、先ず最初に、ステップＳ２０で、各画面パターンの持つプログラム部品の有無情報を使って画面パターン間の平方ユークリッド距離を算出する。
【００８５】
例えば、図３に示す画面パターン２，４，６，８を具体例にして説明するならば、
・画面パターン２：（９）／（11）／（19）のプログラム部品を持つ
・画面パターン４：（９）／（11）のプログラム部品を持つ
・画面パターン６：（１）／（２）／（６）／（９）／（14）／（15）のプログラム部                      品を持つ
・画面パターン８：（９）／（15）のプログラム部品を持つ
というプログラム部品の有無情報に従って、画面パターン２，４，６，８間の平方ユークリッド距離（＝Σ（ｘi −ｘj ）2 ）を算出することで、図８に示すような平方ユークリッド距離を算出するのである。
【００８６】
続いて、ステップＳ２１で、算出した平方ユークリッド距離を使い、階層クラスター分析の手法に従って樹形図を作成してユーザに提示する。
【００８７】
例えば、図３に示す画面パターン２，４，６，８を具体例にして説明するならば、先ずは、図８に示す算出結果から分かるように、画面パターン２と画面パターン４との間の距離が最小となるので、画面パターン２と画面パターン４とを１つのクラスターとする。
【００８８】
続いて、１つのクラスターとした画面パターン２＋４と画面パターン６との間の距離を算出するとともに、１つのクラスターとした画面パターン２＋４と画面パターン８との間の距離を算出する。
【００８９】
この算出は、例えば、階層クラスター分析のウォード法を用いる。このウォード法では、クラスターａとクラスターｂが併合されてクラスターｃが作られたとし、ｄab ,ｄxa ,ｄxbを、その併合前の各クラスター間の距離とするときに、併合後のクラスターｃとクラスターｘ（ｘ≠ａ，ｘ≠ｂ）との間の距離を、
ｄxc2 ＝αa ×ｄxa2 ＋αb ×ｄxb2 ＋βｄab2 
ただし、αa ＝（ｎx ＋ｎa ）／（ｎx ＋ｎc ）
αb ＝（ｎx ＋ｎb ）／（ｎx ＋ｎc ）
β  ＝−ｎx ／（ｎx ＋ｎc ）
ｎi はクラスターｉのデータ個数
という算出式に従って求めるようにしている。
【００９０】
このウォード法を用いることで、１つのクラスターとした画面パターン２＋４と画面パターン６との間の距離は、
（２／３）×７＋（２／３）×６−（１／３）×１＝（２５／３）
と算出され、１つのクラスターとした画面パターン２＋４と画面パターン８との間の距離は、
（２／３）×３＋（２／３）×２−（１／３）×１＝３
と算出される。
【００９１】
これから、画面パターン２と画面パターン４とを１つのクラスターとした後の画面パターン間の距離は図９に示すようなものとなる。
【００９２】
続いて、次のクラスターを生成する。図９から分かるように、画面パターン２＋４と画面パターン８との間の距離が最小となるので、今度は画面パターン２＋４と画面パターン８とを１つのクラスターとする。
【００９３】
続いて、１つのクラスターとした画面パターン２＋４＋８と画面パターン６との間の距離を、上述したウォード法を用いて算出することで、
（３／４）×（２５／３）＋（２／４）×４−（１／４）×３＝１５／２
という距離を算出する。
【００９４】
ステップＳ２１では、このようにして算出したクラスターの構成と距離とに基づいて、図１０に示すような樹形図を作成してユーザに提示する。ここで、図１０に示す樹形図では、樹形図を見やすいものとするために、算出した平方ユークリッド距離を用いるではなくて、その平方根となるユークリッド距離を用いて描画している。
【００９５】
このようにして、ステップＳ２１で、階層クラスター分析の手法に従って樹形図を作成してユーザに提示すると、続いて、ステップＳ２２で、ユーザから樹形図のスライス位置の情報を入力する。
【００９６】
続いて、ステップＳ２３で、入力したスライス位置で樹形図を分断することで、画面パターンのグループを作成する。
【００９７】
例えば、図１０に示す破線で示すスライス位置が入力された場合には、そのスライス位置で樹形図を分断することで、画面パターン１，３，５，７から構成されるグループと、画面パターン２，４，６，８から構成されるグループと、画面パターン９，10，11から構成されるグループという３つのグループを作成するのである。
【００９８】
続いて、ステップＳ２４で、作成した各グループについて、そのグループを構成する画面パターンの中から代表となる画面パターンを選択する。
【００９９】
例えば、ステップＳ２０で算出した図８に示すような平方ユークリッド距離をユークリッド距離に換算して、各グループについて、図１１に示すように、そのグループを構成する画面パターンのそれぞれについてそれが持つ距離の合計を算出し、その中で最小の値を示す画面パターンを特定することで、そのグループの代表となる画面パターンを選択する。
【０１００】
図１１に示す例では、画面パターン２，４，６，８で構成されるグループを代表する画面パターンとして画面パターン４を選択するのである。そして、同様な選択アルゴリズムに従って、画面パターン１，３，５，７から構成されるグループを代表する画面パターンとして画面パターン１を選択し、画面パターン９，10，11から構成されるグループを代表する画面パターンとして画面パターン９を選択するのである。
【０１０１】
続いて、ステップＳ２５で、作成した画面パターンのグループ情報と、選択した代表となる画面パターンの情報とを、図４に示すようなデータ構造を持つ画面分類情報記憶部１６に登録して、処理を終了する。
【０１０２】
このようにして、画面分類部１５は、画面部品表記憶部１４に記憶される情報を使い、クラスター分析の手法に従って、画面デザイン作成部１０により作成された画面パターンを複数のグループに分類して、その分類情報を画面分類情報記憶部１６に登録するとともに、各グループを代表する画面パターンを決定して、その決定情報を画面分類情報記憶部１６に登録するように処理するのである。
【０１０３】
ここで、図７の処理フローに従う場合、画面分類部１５は、ユーザから樹形図のスライス位置の情報を入力することで、画面パターンのグループ数を決定するという構成を採ったが、予め画面パターンのグループ数を設定しておけば、樹形図に従ってそのグループ数を実現できるスライス位置の範囲を自動的に設定できることになるので、ステップＳ２１，２２の処理を省略することが可能である。この場合には、画面分類部１５は、ユーザと対話することなく、画面デザイン作成部１０により作成された画面パターンを複数のグループに分類して、その分類情報を画面分類情報記憶部１６に登録するとともに、各グループを代表する画面パターンを決定して、その決定情報を画面分類情報記憶部１６に登録することができることになる。
【０１０４】
この画面分類情報記憶部１６に登録される情報を受けて、プログラマ割当部１８は、上述したように、画面分類情報記憶部１６から各画面パターングループを代表する画面パターンの情報を読み出し、画面部品表記憶部１４からその画面パターンの持つプログラム部品がどれであるのかという情報を取得して、その取得したプログラム部品の情報とプログラマ情報記憶部１７に記憶されるプログラム部品の情報とに従って距離を評価することで、それらの取得したプログラム部品について精通しているプログラマで誰であるのかということを検索することにより、各画面パターングループについて、そのグループに属する画面パターンを表示するプログラムの開発に適したプログラマが誰であるのかということを検索して、その検索結果を支援情報提供部２２に通知するように処理する。
【０１０５】
そして、この画面分類情報記憶部１６に登録される情報を受けて、ひな型プログラム作成部２０は、画面分類情報記憶部１６から各画面パターングループを代表する画面パターンの情報を読み出し、画面部品表記憶部１４からその画面パターンの持つプログラム部品がどれであるのかという情報を取得して、プログラム部品コード記憶部１９に記憶されているプログラム部品のコードを使って、各画面パターングループについて、それらの取得したプログラム部品についてのコードからなるひな型プログラムを作成して、それをひな型プログラム記憶部２１に登録するように処理する。
【０１０６】
そして、支援情報提供部２２は、プログラマ割当部１８から通知されるプログラマの割当情報をユーザ（プログラム開発の管理者など）に提供し、さらに、ひな型プログラム記憶部２１から、そのプログラマがプログラム開発を担当する画面パターングループの指すひな型プログラムを読み出してユーザ（プログラマなど）に提供するように処理することになる。
【０１０７】
図１２に、本発明を具備するプログラム開発支援装置１の装置構成の他の一例を図示する。
【０１０８】
この図１２に示すプログラム開発支援装置１の装置構成では、図１に示すプログラム開発支援装置１の備えるプログラム部品コード記憶部１９に代えて、複数の既存プログラムとそれが持つプログラム部品の情報とを記憶する既存プログラム情報記憶部２３を備えるとともに、図１に示すプログラム開発支援装置１の備えるひな型プログラム作成部２０に代えて、画面分類部１５の決定したグループ代表の画面パターンの持つプログラム部品と、既存プログラム情報記憶部２３に記憶される各既存プログラムの持つプログラム部品との距離を測定して、そのグループ代表の画面パターンを表示するプログラムに最も近い既存プログラムを特定することで、画面分類部１５の分類した各グループについてのひな型プログラムを決定するひな型プログラム決定部２４を備えるという構成を採っている。
【０１０９】
図１に示すプログラム開発支援装置１では、画面分類部１５の決定したグループ代表の画面パターンの持つプログラム部品のコード情報を組み合わせることでひな型プログラムを作成するのに対して、図１２に示すプログラム開発支援装置１では、複数の既存プログラムの中からプログラム部品構成の最も近いものを選択することでひな型プログラムを決定するようにしている。
【０１１０】
この点から、図１２に示すプログラム開発支援装置１では、図１に示すプログラム開発支援装置１に比べて、プログラム部品構成が必ずしも一致しないひな型プログラムが提供される可能性がある。
【０１１１】
しかしながら、図１２に示すプログラム開発支援装置１では、実際に使用されたことのある既存プログラムの中から最も適切なものを選択することでひな型プログラムを作成することになることから、細かなパラメータ設定が設定されていることなどにより、ひな型プログラムとして十分利用価値の高いものを提供できるようになる。
【０１１２】
図示実施形態例に従って本発明を説明したが、本発明はこれに限定されるものではない。例えば、実施形態例では、階層クラスター分析に従って画面パターンを分類するという構成を採ったが、非階層クラスター分析に従って画面パターンを分類するようにしてもよいし、クラスター分析以外の手法に従って画面パターンを分類するようにしてもよい。
【０１１３】
また、実施形態例では、画面部品表作成部１３がユーザと対話することで、画面パターン情報記憶部１１に記憶される各画面パターンについて、その画面パターンがどのようなプログラム部品を持ち、どのようなプログラム部品を持たないのかいうことを示す情報を作成して、それを画面部品表記憶部１４に登録するようにしているが、例えば、画面デザイン作成部１０が画面パターンを作成するときに画面パターンを構成するコントロール部品に与えた属性情報などを解析することで、この情報の作成処理をユーザとの対話に依らずに自動的に実行することも可能である。
【産業上の利用可能性】
【０１１４】
本発明を用いることで、開発するプログラムを担当するプログラマや委託会社として最適なプログラマを割り当てることができるようになる。そして、本発明を用いることで、開発するプログラムのひな型となるプログラムを作成することができるようになる。
【０１１５】
これから、本発明によれば、プログラム開発の生産性向上・品質確保を実現することができるようになる。
【図面の簡単な説明】
【０１１６】
【図１】本発明を具備するプログラム開発支援装置の装置構成の一例を示す図である。
【図２】部品一覧記憶部の記憶する情報の一例を示す図である。
【図３】画面部品表記憶部の記憶する情報の一例を示す図である。
【図４】画面分類情報記憶部の記憶する情報の一例を示す図である。
【図５】プログラマ情報記憶部の記憶する情報の一例を示す図である。
【図６】画面部品表作成部の実行する処理フローである。
【図７】画面分類部の実行する処理フローである。
【図８】画面分類部の実行する処理の説明図である。
【図９】画面分類部の実行する処理の説明図である。
【図１０】画面分類部の実行する処理の説明図である。
【図１１】画面分類部の実行する処理の説明図である。
【図１２】本発明を具備するプログラム開発支援装置の装置構成の他の一例を示す図である。
【符号の説明】
【０１１７】
１    プログラム開発支援装置
２    入出力端末
１０  画面デザイン作成部
１１  画面パターン情報記憶部
１２  部品一覧記憶部
１３  画面部品表作成部
１４  画面部品表記憶部
１５  画面分類部
１６  画面分類情報記憶部
１７  プログラマ情報記憶部
１８  プログラマ割当部
１９  プログラム部品コード記憶部
２０  ひな型プログラム作成部
２１  ひな型プログラム記憶部
２２  支援情報提供部
【図１】
0004813906.tif 000002
【図２】
0004813906.tif 000003
【図３】
0004813906.tif 000004
【図４】
0004813906.tif 000005
【図５】
0004813906.tif 000006
【図６】
0004813906.tif 000007
【図７】
0004813906.tif 000008
【図８】
0004813906.tif 000009
【図９】
0004813906.tif 000010
【図１０】
0004813906.tif 000011
【図１１】
0004813906.tif 000012
【図１２】
0004813906.tif 000013