(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024030005
(43)【公開日】2024-03-07
(54)【発明の名称】画面設計情報生成システム、画面設計情報生成方法およびコンピュータプログラム
(51)【国際特許分類】
G06F 8/34 20180101AFI20240229BHJP
【FI】
G06F8/34
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022132522
(22)【出願日】2022-08-23
(71)【出願人】
【識別番号】000233491
【氏名又は名称】株式会社日立システムズ
(74)【代理人】
【識別番号】110000279
【氏名又は名称】弁理士法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】村田 大二郎
(72)【発明者】
【氏名】河合 克己
(72)【発明者】
【氏名】前岡 淳
(72)【発明者】
【氏名】是木 玄太
(72)【発明者】
【氏名】芳ケ迫 仁
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC07
5B376BC38
5B376BC43
5B376BC44
(57)【要約】
【課題】画面部品を含む画面ページの画面設計情報を効率的に作成できる画面設計情報生成システムを提供すること。
【解決手段】画面ページの画面設計情報を生成する画面設計情報生成システム1であって、画面ページには、所定イベントに関連付けられる画面部品が少なくとも一つ含まれており、既存画面ページ管理情報は、既存の画面ページに含まれる画面部品間の構成情報と、所定イベントが発生した場合に実行される一連の処理とを対応付けて記憶しており、プロセッサは、作成対象の画面ページ(111)を取得し、取得された作成対象の画面ページに含まれる画面部品間の構成情報を取得し、既存画面ページ管理情報に基づいて、作成対象の画面ページに含まれる画面部品について所定イベントが発生した場合に呼び出される一連の処理の候補を生成する(110)。
【選択図】
図1
【特許請求の範囲】
【請求項1】
画面ページの画面設計情報を生成する画面設計情報生成システムであって、
前記画面設計情報は、イベントに対して呼び出される一連の処理を含み、
前記画面ページには、イベントに関連付けられる画面部品が少なくとも一つ含まれており、
少なくとも一つのプロセッサと、
前記プロセッサにより使用される少なくとも一つのメモリと、
を備え、
前記メモリは、画面ページに関する前記画面設計情報を生成する所定のコンピュータプログラムを少なくとも記憶しており、
前記プロセッサは、前記所定のコンピュータプログラムを実行することにより、
既存ソースコードから抽出されたコードスニペットとイベントに関するイベント情報と前記イベントに関する画面部品の情報とが対応付けられたスニペット情報を生成し、
前記既存ソースコードに対応する既存画面構成情報から各画面部品の位置関係および属性を示す画面部品情報を抽出し、
前記スニペット情報と前記画面部品情報と前記既存ソースコードの構造情報から抽出される前記スニペット情報間の依存関係とに基づいて、スニペットの利用状況を示すスニペット利用状況情報を生成し、
前記スニペット利用状況情報に基づいて、前記コードスニペットを所定の順序で実行する画面設計情報の候補を生成し、前記メモリに記憶させる
画面設計情報生成システム。
【請求項2】
前記プロセッサは、前記所定のコンピュータプログラムを実行することにより、
作成対象の新規画面ページを取得すると、前記新規画面ページで発生するイベントと前記新規画面ページに含まれる画面部品の位置関係および属性を示す画面部品情報を抽出し、
前記スニペット利用状況情報を用いて、前記新規画面ページから抽出された前記イベントおよび画面部品情報に適合する画面設計情報の候補を選択する
請求項1に記載の画面設計情報生成システム。
【請求項3】
前記プロセッサは、前記所定のコンピュータプログラムを実行することにより、
前記選択された画面設計情報の候補を所定のコンピュータ端末へ提供する
請求項2に記載の画面設計情報生成システム。
【請求項4】
前記プロセッサは、前記画面設計情報の候補に基づいて前記所定のコンピュータ端末により作成された画面設計情報を前記所定のコンピュータ端末から受信して、前記メモリに記憶させる
請求項3に記載の画面設計情報生成システム。
【請求項5】
前記プロセッサは、前記所定のコンピュータプログラムを実行することにより、
前記生成されたスニペット情報同士の類似度を算出し、
前記算出された類似度が所定値以上のスニペット情報を一つのスニペット情報として統合し、
前記スニペット情報と前記画面部品情報と前記既存ソースコードの構造情報から抽出される前記スニペット情報間の依存関係と前記一つのスニペット情報として統合された他のスニペット情報とに基づいて、スニペットの利用状況を示すスニペット利用状況情報を生成し、
前記スニペット利用状況情報に基づいて、前記コードスニペットを所定の順序で実行する画面設計情報の候補を生成し、前記メモリに記憶させる
請求項1に記載の画面設計情報生成システム。
【請求項6】
前記プロセッサは、前記所定のコンピュータプログラムを実行することにより、
前記生成されたスニペット情報の実行実績を抽出し、
前記スニペット情報と前記画面部品情報と前記既存ソースコードの構造情報から抽出される前記スニペット情報間の依存関係と前記スニペットの実行実績とに基づいて、スニペットの利用状況を示すスニペット利用状況情報を生成し、
前記スニペット利用状況情報に基づいて、前記コードスニペットを所定の順序で実行する画面設計情報の候補を生成し、前記メモリに記憶させる
請求項1に記載の画面設計情報生成システム。
【請求項7】
画面ページの画面設計情報を画面設計情報生成システムにより生成させる画面設計情報生成方法であって、
前記画面設計情報は、イベントに対して呼び出される一連の処理を含み、
前記画面ページには、イベントに関連付けられる画面部品が少なくとも一つ含まれており、
前記画面設計情報生成システムは、少なくとも一つのプロセッサと、前記プロセッサにより使用される少なくとも一つのメモリと、を備えており、
前記メモリは、画面ページに関する前記画面設計情報を生成する所定のコンピュータプログラムを少なくとも記憶しており、
前記プロセッサは、前記所定のコンピュータプログラムを実行することにより、
既存ソースコードから抽出されたコードスニペットとイベントに関するイベント情報と前記イベントに関する画面部品の情報とが対応付けられたスニペット情報を生成し、
前記既存ソースコードに対応する既存画面構成情報から各画面部品の位置関係および属性を示す画面部品情報を抽出し、
前記スニペット情報と前記画面部品情報と前記既存ソースコードの構造情報から抽出される前記スニペット情報間の依存関係とに基づいて、スニペットの利用状況を示すスニペット利用状況情報を生成し、
前記スニペット利用状況情報に基づいて、前記コードスニペットを所定の順序で実行する画面設計情報の候補を生成し、前記メモリに記憶させる
画面設計情報生成方法。
【請求項8】
計算機を、画面ページの画面設計情報を生成する画面設計情報生成システムとして機能させるコンピュータプログラムであって、
前記画面設計情報は、イベントに対して呼び出される一連の処理を含み、
前記画面ページには、イベントに関連付けられる画面部品が少なくとも一つ含まれており、
既存ソースコードから抽出されたコードスニペットとイベントに関するイベント情報と前記イベントに関する画面部品の情報とが対応付けられたスニペット情報を生成する機能と、
前記既存ソースコードに対応する既存画面構成情報から各画面部品の位置関係および属性を示す画面部品情報を抽出させる機能と、
前記スニペット情報と前記画面部品情報と前記既存ソースコードの構造情報から抽出される前記スニペット情報間の依存関係とに基づいて、スニペットの利用状況を示すスニペット利用状況情報を生成する機能と、
前記スニペット利用状況情報に基づいて、前記コードスニペットを所定の順序で実行する画面設計情報の候補を生成し、メモリに記憶させる機能と
を前記計算機上に実現させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画面設計情報生成システム、画面設計情報生成方法およびコンピュータプログラムに関する。
【背景技術】
【0002】
例えばオンラインショップ、予約ページ、ニュースサイト、生産管理システムの提供するページなど、ウェブページとして知られる画面ページが日々生産されている。画面ページの中には、ユーザにより操作される画面部品を含むページがある。ユーザが画面部品を操作するとイベントが発生し、所定の一連の処理が呼び出されて実行される。
【0003】
なお、画面部品を含む画面ページの作成に関する技術ではないが、ソフトウェアを効率的に作成する技術として特許文献1または特許文献2が知られている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第5456707号公報
【特許文献2】特許第4846483号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ユーザが画面部品を操作したときに呼び出される一連の処理を毎回検討して定義するのでは手間がかかり、一連の処理に係わるソースコードの作成に時間を要し、画面ページの生産効率(作業効率)が低い。
【0006】
特許文献1では、機能に関連づいた用語を元に確率情報を生成し、機能とソースの関係を示すトレーサビリティマトリックスを作成する。もしも画面ページの作成効率化に特許文献1を使用できたとしても、単語に基づいて画面ページのソースコードを解析できるにすぎない。しかし実際には、より使いやすいユーザインターフェース、直感的に利用可能なユーザインターフェースが望まれており、画面デザイン(ユーザインターフェースのデザイン)には暗黙の了解があることが知られている。或るイベントが発生したときに呼び出されるべき一連の処理は、画面部品の表示位置、および他の画面部品との位置関係といった画面構成に依存して定まることが多い。したがって、画面部品の名称だけでは画面部品間の構成を把握することができないため、一連の処理を抽出できない。
【0007】
特許文献2は、部品のカテゴリを指定してリポジトリを検索し、実行カバレッジが閾値を越える部品を開発者に推薦する。仮に特許文献2を画面ページの作成効率化に利用できたとしても、画面部品名やイベント名をカテゴリ化して、検索対象の一つの処理についてのソースコードを検索できるだけである。しかし実際には、あるイベントが発生すると複数の処理が所定の順序で実行されることが多い。特許文献2の技術では、画面部品間の構成を把握できない上に、実行の順番まで考慮して処理を抽出することはできない。
【0008】
本発明は、上述の課題に鑑みてなされたもので、その目的は、画面部品を含む画面ページの画面設計情報を効率的に作成できるようにした画面設計情報生成システム、画面設計情報生成方法およびコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【0009】
上記課題を解決すべく、本発明の一つの観点に画面設計情報生成システムは、画面ページの画面設計情報を生成する画面設計情報生成システムであって、画面ページには、所定イベントに関連付けられる画面部品が少なくとも一つ含まれており、少なくとも一つのプロセッサと、プロセッサにより使用される少なくとも一つのメモリと、を備え、メモリは、画面ページに関する動作を規定する画面設計情報を生成する所定のコンピュータプログラムと、既存の画面ページに関する既存画面ページ管理情報とを記憶しており、既存画面ページ管理情報は、既存の画面ページに含まれる画面部品間の構成情報と、所定イベントが発生した場合に実行される一連の処理とを対応付けて記憶しており、プロセッサは、所定のコンピュータプログラムを実行することにより、作成対象の画面ページを取得し、取得された作成対象の画面ページに含まれる画面部品間の構成情報を取得し、既存画面ページ管理情報に基づいて、作成対象の画面ページに含まれる画面部品について所定イベントが発生した場合に呼び出される一連の処理の候補を生成する。
【発明の効果】
【0010】
本発明によれば、作成対象の画面ページにおける画面部品間の構成情報に基づいて既存画面ページ管理情報を参照することにより、所定イベントが発生した場合に呼び出される一連の処理の候補を生成することができる。
【図面の簡単な説明】
【0011】
【
図1】画面設計情報生成システムの概要を示す図である。
【
図2】画面設計情報生成システムのハードウェア構成を示す図である。
【
図3】画面設計情報生成システムに記憶されるコンピュータプログラムの例を示す図である。
【
図4】画面設計情報生成システムに記憶される情報の例を示す図である。
【
図5】画面設計情報生成システムの機能間の関係と全体の流れを示す図である。
【
図7】既存の画面構成情報(画面HTML情報)の例である。
【
図8】既存の画面構成情報により表示される画面の例である。
【
図13】スニペット間の類似度を管理する情報の例である。
【
図15】スニペットの利用状況を示す情報の例である。
【
図17】新規に作成される画面の構成情報(画面HTML情報)の例である。
【
図18】新規に作成される画面構成情報により表示される画面の例である。
【
図20】画面設計情報生成システムのユーザに提供される情報の例である。
【
図21】イベントフロー候補の情報を用いて新たに作成されるソースコード情報の例である。
【
図22】既存のソースコードからスニペットを抽出する処理を示すフローチャートである。
【
図23】ログを解析する処理を示すフローチャートである。
【
図24】類似度を判定する処理を示すフローチャートである。
【
図25】画面部品情報を抽出する処理を示すフローチャートである。
【
図26】スニペットの利用状況を作成する処理を示すフローチャートである。
【
図27】フロー候補を生成する処理を示すフローチャートである。
【
図28】画面部品フローを生成する処理を示すフローチャートである。
【
図29】フロー候補をコンピュータ端末へ表示させる処理のフローチャートである。
【
図30】ソースコード情報を生成する処理を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、図面に基づいて、本発明の実施の形態を説明する。本実施形態では、プレゼンテーション層のアプリケーションプログラム(以下、アプリケーション)を効率的に作成できるようにしたシステムおよび方法を開示する。プレゼンテーション層のアプリケーションは、画面部品への操作によりイベントが発生すると、例えば、検索、データ取得、画面作成、画面更新などの所定の一連の処理を実行する。
【0013】
本実施形態では、既存ソースコードを分割し、イベント及び画面部品と紐づけて、コード(スニペット)を生成する。そして、本実施形態では、スニペットに紐づいた画面のイベント及び画面の構成要素(画面部品)を、作成する新画面の画面部品のイベントと文字列情報と位置関係とを照合することにより、新画面のイベントに対して、一つ以上のスニペットからなるイベントフローを作る。ユーザはイベントフローを参考にして、新画面を作成することができる。
【0014】
これにより本実施形態によれば、画面に多数の画面部品がある場合に、暗黙的な画面部品間の関係を考えてイベントフローをフルスクラッチで作成する必要がなく、比較的簡単に新画面(表示と内部処理を含む。)を作成することができる。
【0015】
本実施形態では、実績のある既存ソースコード情報を使って、作成対象の新画面に似た画面のソースコードを抽出して再利用することができるため、ユーザは効率的に新画面を作成することができる。
【0016】
本実施形態では、後述のように、既存システムのソースコードと既存システムの画面構成とを解析しておき、次に、既存システムの画面とイベントとに関する解析結果を利用して、新システムの画面に適用されるイベントフローの生成を支援する。
【0017】
準備段階では、既存システムで使用されたソースコードを解析することにより、画面部品間の構成情報と出現確率を求め、ソースコードの中から複数のスニペットを抽出し、抽出されたスニペットの実行順序を考慮してイベントフローの候補を生成する。新画面の生成支援段階では、新画面の画面構成情報と既存システムの画面構成情報を照合し、似た画面構成に関連するスニペットを抽出し、抽出されたスニペットの依存関係に基づき各スニペットを所定の順番に並べてイベントフローを生成する。
【0018】
既存ソースコードからスニペットを抽出する際に、スニペット間の類似度を判定し、所定値以上類似するスニペットは統合してもよい。画面構成とイベントの組み合わせに対応するスニペットが複数検出された場合は、実行された実績が他のスニペットよりも多いスニペットを選択することができる。
【0019】
本実施形態では、以下のように用語を定義する。ただし、以下の定義以外に定義可能である。
【0020】
「既存ソースコード」とは、既存システム(既存ソフトウェア)において、画面部品とイベントとに紐づけられた一連の処理が記述されたソースコードである。
【0021】
「スニペット依存関係」とは、ソースコードからスニペットを分割するときに、ソースコードの構造情報を用いて依存関係を抽出した情報である。依存関係には、例えば、時系列の順番、エラーフローなどがある。
【0022】
「カバレッジ」とは、ソースコードの各行の動作時に通過したか否かの情報である。
【0023】
「スニペット」とは、何らかの観点で分割されたコードスニペットとイベント情報と画面部品(画面HTML情報)の結合体である。スニペットは「コードスニペット」に対応する。同一または所定値以上類似するスニペットは、スニペット利用状況情報にて一つのスニペットへ統合される。
【0024】
「スニペット類似度」とは、スニペット同士が似ている度合いを示す。例えば、ソースコードから抽出されたすべてのスニペットを表の縦軸と横軸に並べて、セルに類似度を記載することにより管理することができる。
【0025】
「スニペット利用状況情報」とは、スニペットごとに利用状況を管理する情報である。スニペット利用状況情報は、スニペットの利用量、類似スニペット、関連するイベント、関連する画面部品を整理した情報を含む。スニペット統合が起きた場合は、イベントの情報および画面部品の情報が併記される。
【0026】
「フロー候補一覧」とは、過去に作成された既存システム(既存システムの画面)から抽出可能なイベントフロー候補の一覧である。
【0027】
「イベントフロー」とは、イベントが発生すると呼び出される一連の処理である。イベントフローは「画面設計情報」の例である。イベントは、例えば「検索ボタン」「ページ切替ボタン」「画面更新ボタン」「編集ボタン」などの画面部品がユーザにより操作されると発生する。
【0028】
「新規画面HTML」とは、画面設計情報の作成対象である新たな画面の画面構成を規定するコンピュータプログラムである。
【0029】
「フロー」とは、イベントフローの候補から選択され、選択されたイベントフローに基づいて作成されるイベントフローである。
【実施例0030】
図1~
図30を用いて第1実施例を説明する。
図1は、画面設計情報生成システム1の概要を示す。
【0031】
画面設計情報生成システム1は、既存ソフトウェア資産記憶部10と電気的に接続されている。既存ソフトウェア資産記憶部10は、過去に作成された情報処理システム(既存システム)についての既存ソースコードの情報101と既存画面ページの画面HTML(Hyper Text Markup Language)の情報102とを記憶する。以下、既存ソースコード101、既存画面HTML102と呼ぶことがある。
【0032】
画面設計情報生成システム1は、
図2で後述するように計算機上に構成される。画面設計情報生成システム1は、例えば、スニペット抽出部151、ログ解析部152、スニペット類似度判定部153、画面部品情報抽出部154、スニペット利用状況作成部155、フロー候補生成部110、画面部品フロー生成部157を機能として備える。画面設計情報生成システム1は、
図1に示す各機能の全部を備えている必要はない。さらに、画面設計情報生成システム1は、
図2~
図5で後述するように、
図1に示されていない機能を備えることもできる。
【0033】
図1では、画面設計情報生成システム1の概略動作を説明する。詳細な動作は
図5、
図22~
図30で後述する。
【0034】
既存ソフトウェア資産記憶部10は、既存システムのソースコードおよび画面HTML情報などを記憶するレポジトリである。既存ソフトウェア資産記憶部10に記憶された既存ソースコードの実行ログ105は、ログ解析部152により解析され、その解析結果はスニペット利用状況作成部155に入力される。
【0035】
スニペット抽出部151は、既存ソースコード101からイベントに紐づく処理を分割してスニペット化する。既存ソースコード101からスニペットを抽出する方法には複数ある。
【0036】
例えば、既存ソースコード内のコメントに着目して、イベントに紐づく処理(所定処理)のソースコード片をスニペットとして抽出することができる。例えば、既存ソースコード内の関数に着目して、既存ソースコード内のソースコード片をスニペットとして抽出することもできる。例えば、既存ソースコード内の変数の依存関係に着目して、既存ソースコード内のソースコード片をスニペットとして抽出することもできる。
【0037】
上述の方法のいずれか一つまたは複数あるいは全てを使用することで、既存ソースコード101から一つ以上のスニペット103(
図5参照)を得ることができる。抽出されたスニペット103は、ソースコード片とイベント情報と画面HTML情報の結合した情報である。
【0038】
後述のように、抽出された複数のスニペットの中には、依存関係にあるスニペットが含まれていることがある。ソースコードの構造情報を用いることで、どのスニペットの次にどのスニペットが実行されるのかを検出できる。例えば、買物客(画面ページの提供するサービスのユーザ)が商品購入画面で商品を選択し、「カートへ追加」ボタンを操作した場合を説明する。
【0039】
買物客の操作対象となる画面部品の一つである「カートへ追加」ボタンが買物客によって操作されると、「カートへ追加」というイベントが発生する。このイベントの発生によって、商品購入画面内の商品一覧表から買物客の選択した商品の個数を取得する処理(第1処理)が実施され、その次にカートの情報を更新させるサービスを呼び出す処理(第2処理)が実施される。
【0040】
この実行順序(スニペット間の依存関係)は、抽出元の既存ソースコードに記述された構造情報から検出できる。そこで、画面設計情報生成システム1は、「商品一覧表」という画面部品と「カートへ追加」ボタンという画面部品が同一画面に存在する場合に、「カートへ追加」イベントが発生したならば、第1処理のスニペットを実行させ、次に第2処理のスニペットを実行させるというイベントフローの候補を生成する。プログラマ(画面設計情報生成システム1にとってのユーザ)は、画面設計情報生成システム1から提案されたイベントフローの候補を参考にして、新たな画面に関するソースコードを効率的に作成することができる。新たに作成されたソースコードとそのソースコードに対応する画面HTML情報は、既存ソースコード101および既存画面HTML情報102として、既存ソフトウェア資産記憶部10に記憶される。
【0041】
ログ解析部152は、ソースコード101の実行ログ105を解析する。例えば、ログ解析部152は、ソースコードの実行時に、ソースコードの各行を何回通過したか(実行されたか)をスニペット毎に算出する。スニペット103の利用量(利用回数、実行実績)を算出できるのであれば、実行ログ105の解析以外の方法を用いてもよい。スニペット103の利用量は、そのスニペットが過去にどれだけの既存システムで使用されたかを示す情報として利用できる。本実施例では、画面部品の位置関係および画面部品の属性から抽出されたスニペットの候補の中から、より多く使用されたスニペットをプログラマへ提供する。
【0042】
スニペット類似度判定部153は、スニペット抽出部151で抽出されたスニペット同士の類似度を判定する。類似度が所定値以上のスニペット(同一スニペットを含む。)は一つのスニペットとして統合される。
【0043】
画面部品情報抽出部154は、既存画面HTML情報102から全ての画面部品について画面部品情報を抽出する。画面部品情報には、例えば、同一画面に存在する他の画面部品との位置関係と、画面部品の属性情報とが含まれる。画面情報間の位置関係は、例えば、DOM(Document Object Model)から、または、画面部品の画面上の座標から、求めることができる。画面部品の属性情報は、例えば、画面部品の種類、画面部品のラベル(名称)のいずれかまたは両方を含む。画面部品の種類には、例えば「ボタン」、「表」などがある。「ラベル」には、例えば「検索」、「カートに追加」などがある。
【0044】
スニペット利用状況作成部155は、グループ化されて統合されたスニペットの利用状況に関する情報109(
図15で後述)を作成する。スニペット利用状況情報109は、例えば、スニペットが利用された回数(カバレッジ)、そのスニペットに対応するイベント、そのスニペットの前に実行される他のスニペット、そのスニペットに関する画面部品などが記憶される。
【0045】
フロー候補生成部110は、既存システムの画面から抽出可能なイベントフローを生成する。フロー候補生成部110は、条件に合致するスニペットを抽出して所定の順序に配置することにより、イベントフローの候補を生成する。イベントフローの候補は、少なくとも一つのスニペットを含んでいればよく、必ずしも複数のスニペットを含んでいる必要はない。スニペットを一つだけ含むイベントフロー候補もある。
【0046】
例えば、フロー候補生成部110は、イベントフローを構成するスニペットの条件(イベント、イベントに対応する画面部品の属性(名称)、イベントに対応する画面部品と同一画面にある他の画面部品の位置関係)を満たすスニペットのうち、利用量が所定値以上のスニペットをイベントフローの候補を構成するスニペットとして選択する。
【0047】
例えば、「ボタンをクリック」というイベントについて、スニペットA,Bが関連付けられており、スニペットAの方がスニペットBよりも利用量が多い場合は、スニペットAが選択される。さらに、スニペットBの後でスニペットCが発生する確率が高い場合、スニペットAの次にスニペットCを実行するというイベントフロー候補(A→C)が生成される。スニペットCの実行される確率が低い場合は、スニペットAだけが選択され、スニペットAだけを含むイベントフロー候補が生成される。
【0048】
画面部品フロー生成部157は、新規画面HTML情報111に適合するイベントフロー候補を選択し、選択したイベントフロー候補をコンピュータ端末に表示させることでプログラマへ提供する。
【0049】
図2は、画面設計情報生成システム1のハードウェア構成を示す。画面設計情報生成システム1は、例えば、プロセッサ11、メモリ12、記憶装置13、ユーザインターフェース部14、通信部15を備える計算機として構成される。図中、プロセッサを「CPU」と、ユーザインターフェースを「UI」と、それぞれ表示する。
【0050】
メモリ12は主記憶装置であり、所定の機能151~158,160を実現するための所定のコンピュータプログラムを記憶する。記憶装置13は補助記憶装置であり、所定の機能151~158,160を実現する際に使用される管理情報とデータベースなどを記憶する。プロセッサ11は「プロセッサ」の一例である。メモリ12および記憶装置13は「メモリ」の一例である。メモリ12の記憶内容と記憶装置13の記憶内容は、
図3,
図4で後述する。
【0051】
ユーザインターフェース部14は、画面設計情報生成システム1のユーザであるプログラマとの間で情報を交換する装置である。ユーザインターフェース部14は、キーボードなどの入力装置2と、モニタディスプレイなどの出力装置3とに接続される。入力装置2からの情報は、ユーザインターフェース部14を介して画面設計情報生成システム1に入力される。画面設計情報生成システム1からの情報は、ユーザインターフェース部14を介して出力装置3へ出力される。
【0052】
通信部15は、画面設計情報生成システム1が他の情報機器と通信するための通信装置である。通信部15は、通信ネットワークCNを介して他の情報機器と双方向通信可能に接続される。
【0053】
他の情報機器には、例えば、コンピュータ端末4、ストレージシステム5がある。コンピュータ端末4はプログラマの使用する端末であり、ユーザ端末と呼ぶこともできる。プログラマは、コンピュータ端末4を用いて、画面設計情報生成システム1の提供する画面設計情報生成支援サービスを利用し、生成したソースコードを画面設計情報生成システム1へ登録する。コンピュータ端末4は、例えば、プロセッサ、メモリ、ユーザインターフェース部、通信部(いずれも図示せず)を備える。一つの画面設計情報生成システム1に複数のコンピュータ端末4を接続することができる。複数のコンピュータ端末4は共同して新規画面の画面設計情報を作成することもできるし、あるいは、それぞれ別々の新規画面の画面設計情報を作成することもできる。
【0054】
ストレージシステム5は、例えば、フラッシュメモリ、ハードディスク、磁気テープ、光磁気ディスクなどを備えたファイル共有システムのように構成される。記憶装置13に記憶される情報の一部または全部をストレージシステム5に記憶させてもよい。なお、図示は省略するが、複数の画面設計情報生成システム1が一つのストレージシステム5を共有する構成でもよい。
【0055】
記憶媒体MMは、不揮発性メモリまたは電池でバックアップされた揮発性メモリであり、画面設計情報生成システム1に接続することができる。記憶媒体MMは、画面設計情報生成システム1のメモリ12または記憶装置13からコンピュータプログラムまたはデータを読みだして非一時的に記憶することができる。記憶媒体MMを図外の他の計算機に接続し、記憶媒体MMに記憶されたコンピュータプログラムおよびデータを他の計算機のメモリまたは記憶装置(いずれも図示せず)に転送することもできる。
【0056】
図3は、メモリ12に記憶されるコンピュータプログラムの例を示す。メモリ12には、例えば、スニペット抽出部151、ログ解析部152、類似度判定部153、画面部品情報抽出部154、スニペット利用状況作成部155、フロー候補生成部156、画面部品フロー生成部157、フロー候補表示部158、ソースコード生成部160といった各機能を実現するための所定のコンピュータプログラムが記憶されている。
【0057】
スニペット抽出部151は、既存ソースコード情報101から所定の観点でスニペット情報103(スニペット103とも呼ぶ。)を抽出する機能を持つ。ログ解析部152は、既存ソースコード情報101のログ情報105を解析し、カバレッジ情報106を出力する。
【0058】
スニペット類似度判定部153は、抽出された各スニペットの類似度を判定し、スニペット類似度情報107を生成する。スニペットの類似度は、例えば、スニペットに含まれる文字列またはトークン列を比較することで算出される。スニペット類似度情報107は、
図13で後述するように、例えば、比較対象のスニペットを表の縦横に並べ、縦の列と横の行が交差する各セルに類似度を格納して構成される。
【0059】
画面部品情報抽出部154は、既存HTML情報102を解析することにより、画面部品情報108を抽出する。画面部品情報抽出部154は、既存HTML情報102の各画面部品について、例えば、同一画面に存在する他の画面部品との位置関係と画面部品の属性(種類、ラベルなど)とを取得して、画面部品情報108を抽出する。スニペット利用状況作成部155は、スニペット利用状況情報109を作成する。
【0060】
フロー候補生成部156は、イベントフロー候補を生成し、イベントフロー候補の一覧情報110を出力する。
【0061】
フロー候補表示部158は、新規作成対象の画面についてのイベントフロー候補をコンピュータ端末4に送信して、コンピュータ端末4の画面に表示させる機能を持つ。ソースコード生成部160は、プログラマがイベントフロー候補を使用してソースコードを作成するための機能を持つ。プログラマがコンピュータ端末4を用いて作成した新規画面のソースコードは、既存ソースコード情報101の一部として画面設計情報生成システム1に保存される。
【0062】
図4は、記憶装置13に記憶される情報の例を示す。記憶装置13は、例えば、既存ソースコード情報101、既存画面HTML情報102、スニペット情報103、スニペット依存関係情報104、ログ情報105、カバレッジ情報106、スニペット類似度情報107、画面部品情報108、スニペット利用状況情報109、フロー候補一覧情報110、新規画面HTML情報111、イベントフロー候補情報112、出力ソースコード情報120を記憶する。以下、スニペット情報をスニペットと略記するように、「情報」という語句を省略する場合がある。
【0063】
カバレッジ情報106は、抽出されたスニペットの利用量を示す情報である。フロー候補一覧情報110は、既存画面の情報(既存ソースコードおよび既存画面HTMLからなる情報)から抽出されたイベントフローの候補を一覧で示す情報である。出力ソースコード情報120は、イベントフロー候補情報112に基づいてプログラマにより作成されたソースコードである。
【0064】
図5は、画面設計情報生成システム1の機能間の関係と全体の流れを示す。主な流れは、図面中央部のスニペット抽出部151、スニペット利用状況作成部155、フロー候補生成部156、画面部品フロー生成部157、フロー候補表示部158、ソースコード生成部160である。
【0065】
スニペット抽出部151は、既存システムのソースコード101からスニペット103を抽出する。さらに、スニペット抽出部151は、既存ソースコード101の構造情報を解析することにより、スニペット間の依存関係104を抽出する。
【0066】
スニペット類似度判定部153は、各スニペット103の類似度を算出し、スニペット類似度107を出力する。
【0067】
ログ解析部152は、ログ105を解析してカバレッジ106を生成する。画面部品抽出部154は、既存画面HTML102を解析して画面部品108を抽出する。
【0068】
スニペット利用状況作成部155は、スニペット103と、スニペット依存関係104と、スニペット類似度107と、カバレッジ106と、画面部品108とに基づいて、スニペット利用状況109を作成する。
【0069】
フロー候補生成部156は、スニペット利用状況109に基づいてフロー候補一覧110を生成する。画面部品フロー生成部157は、新規画面HTML111とフロー候補一覧110とに基づいてイベントフロー候補112を生成する。
【0070】
フロー候補表示部158は、イベントフロー候補112をユーザインターフェース部14を介してプログラマに提供する。ソースコード生成部160は、イベントフロー候補の中からプログラマにより選択されたイベントフローと、プログラマから入力された初期値などに基づいて新規画面HTML111のソースコード120を生成する。
【0071】
図6は、既存のソースコード情報101の例である。ソースコードの例1010からは、コメント、関数、変数の依存関係に基づいて、複数のスニペット101000,101001,101002,101003,101004,101005,101006,101007を抽出することができる。
図6に示すスニペットは、説明のための例であって、本開示は
図6に示されるスニペットに限定されない。
【0072】
図7は、既存画面HTML情報102の例1020である。既存画面の描画を制御する既存画面HTMLの例1020には、複数の画面部品102000,102001,102002,102003,102004,102005,102006,102010,102011,102012,102013,102020,102021,102030,102031が含まれている。
図7に示すように、既存画面HTMLの例1020には、例えば、テキストや数字の入力欄を示す画面部品、表を示す画面部品、表を前後のページに切り替えるボタンを示す画面部品、お気に入りに追加するボタンを示す画面部品、カートへ追加するボタンを示す画面部品などが含まれている。
図7に示す画面部品は、説明のための例であって、本開示は
図7に示すされる画面部品に限定されない。
【0073】
図8は、既存の画面HTML情報102により表示される画面例1021である。画面例1021は、商品選択画面と商品一覧表とに大別される。
【0074】
商品選択画面は、画面部品102110,102111,102112,102113,102114,102115,102116を含む。これら画面部品は、
図4に示す既存画面HTML例1020の画面部品102000,102001,102002,102003,102004,102005,102006に対応する。
【0075】
商品一覧表は、表10213、詳細10214、画像10215を含む。表10213は、画面部品102120,102121,102123,102130,102131,102132,102133,102134,102135を含む。表10213には、複数の商品の行202136,102137が表示されている。
【0076】
詳細10214は、画面部品102140,102141を含み,1つの行102142が表示されている。
【0077】
画面例1021の一番には、「お気に入りに追加」ボタン102160と、「カートに追加」ボタン102161が表示されている。
【0078】
図9は、スニペット情報103の例1030を示す。スニペット情報(スニペット)103の例1030は、例えば、スニペット識別子(スニペットID)103001、画面名103002、画面部品103003、イベント103004、ソースコード103005、行番号103006、コード断片103007を有する。
【0079】
スニペットID103001は、画面設計情報生成システム1で管理する各スニペットを一意に特定する情報である。画面名103002は、スニペットに対応する画面の名称である。画面名には、例えば「商品検索画面」などがある。
【0080】
画面部品103003は、スニペットに対応する画面部品を示す情報である。イベント103004は、スニペットに対応するイベントを特定する情報である。画面部品103003が操作されるとイベント103004が発生する。
【0081】
ソースコード103005は、スニペットが切り出された元のソースコードを示す情報である。行番号103006は、スニペットの範囲をソースコード103005の行番号で特定する。コード断片103007は、スニペットの内容を示す。
【0082】
図9の例1030では、3つのスニペットを示す3つの行103051,103052,103053が示されている。なお、各図中の記載内容は、それぞれの図中での説明に用いられるもので、他の図との整合性は意識していない。ある図の記載内容と他の図の記載内容が正確に一致していない場合でも、いわゆる当業者であれば、本開示の画面設計情報生成システム1を実現することができる。
【0083】
図10は、スニペット間の依存関係を示す情報104の例1040である。スニペット依存関係情報104の例1040は、例えば、先に実施されるスニペットのID104001(前スニペットID)、その次に実施されるスニペットのID104002(後スニペットID)、前スニペットIDと後スニペットIDとの関係104003を有する。スニペット間の関係104003には、例えば「順序(時系列順)」、「エラーフロー」がある。
【0084】
図11は、ログ情報105の例1050である。ログ情報例1050は、例えば、ソースコード105001、実行された行105002を備える。ログ情報例1050には、3つの行105051,105052,105053が示されている。
【0085】
図12は、カバレッジ情報106の例1060である。カバレッジ情報例1060は、例えば、スニペットID106001、カバレッジの値106002を備える。カバレッジ情報例1060には、3つの行106051,106052,106053が示されている。
【0086】
図13は、スニペット間の類似度を管理するスニペット類似度情報107の例1070である。スニペット類似度情報例1070は、例えば、各スニペットのIDを表の縦107001~107007と横107051~107057に配置し、行と列の交差した箇所に類似度を格納している。例1070では、類似度を小数点付きで表現しているが、整数でもよい。スニペット類似度の例1070は、類似度が大きいスニペット同士は類似しており、類似度の小さいスニペット同士は類似していないということを示している。
【0087】
図14は、画面部品情報108の例1080である。画面部品情報例1080は、例えば、画面部品の設けられる画面を特定する情報108001、画面部品の種類を特定する情報108002、同一画面に存在する他の画面部品との位置関係108003、情報108002で特定された画面部品の属性108004を備えている。
【0088】
他の画面部品との位置関係108003は、例えば、「表」などの他の画面部品の種類、他の画面部品との位置関係(同一DOMであって、上側に位置するなど)である。画面部品の属性108004は、例えば、ラベル名などである。
【0089】
図15は、スニペットの利用状況を示す情報109の例である。スニペット利用状況情報109の例1090は、例えば、スニペットのID109001、スニペットの利用量109002、類似するスニペットのID109003、スニペットが呼び出されるイベントを特定する情報109004、そのスニペットの後に発生するスニペットの情報109005、同一画面内の画面部品についての情報109006、対象の画面部品の情報109007がある。スニペット利用状況情報例1090には、3つの行109051,109052,109053が示されている。
【0090】
イベント109004には、例えば、スニペットに関連するイベントの種類と、そのイベントが発生したときにスニペットが呼び出される確率が記憶される。スニペットの後に発生するスニペットの情報(「事後発生)と
図15では表記されている。)109005は、例えば、スニペットID109001で特定されるスニペットの後に実行される可能性のあるスニペットのIDと、その発生確率と、発生の関係を示す。発生の関係には、時系列順での発生、エラー処理による発生がある。
【0091】
同一画面内の画面部品についての情報109006には、例えば、同一画面内の他の画面部品の種類、スニペットが呼び出されるイベントと関係する確率、画面内での位置関係などが記憶される。対象画面部品の情報109007には、イベント109004の発生に関する画面部品についての情報、すなわち例えば、画面部品の種類およびラベル名が記憶される。
【0092】
図16は、フロー候補の一覧を示す情報110の例1100である。フロー候補一覧情報の例1100は、例えば、イベントフローを特定するID110001、イベント110002、フロー110003、同一画面内の画面部品110004、対象画面部品110005、優先度110006を備える。
【0093】
イベント110002は、イベントフローの発生起点となるイベントを特定する情報である。フロー(イベントフロー)110003は、イベントが発生すると呼び出される一つまたは複数のスニペットをその実行順番と共に示す情報である。同一画面内の画面部品110004は、イベント110002を発生させる対象画面部品110005と同一画面内にある他の画面部品の種類を示す情報である。
【0094】
優先度110006は、ID110001で特定されるイベントフローが選択される際の優先度を示す情報である。
図16では、一つの行110051だけが示されているが、実際には多くのイベントフローが抽出されて管理される。
【0095】
そのため、特定の画面部品の配置おいて特定のイベントが発生した場合に実行されるイベントフロー110003が複数存在する場合があり得る。複数のイベントフロー110003が検出された場合、画面設計情報生成システム1は、より大きい優先度110006を持つイベントフローを選択する。画面設計情報生成システム1は、最も大きな優先度を持つイベントフローを一つだけ選択してプログラマへ提案してもよいし、優先度の大きい順に所定数のイベントフローを選択してプログラマへ提案してもよい。
【0096】
図17は、新規に作成される画面の構成情報(画面HTML情報)111の例1110である。画面例1110には、例えば、各種ボタン、入力欄、表などの、複数の画面部品111000,111001,111002,111003,111004,111005,111010,111011,111012,111013,111020,111030,111031が含まれている。
【0097】
図18は、新規に作成される画面HTML情報111により表示される画面例1111である。画面例1111では、その上側の領域でユーザが商品を検索し、その下側の領域で検索結果が表で示される。ユーザは、検索結果の中からお気に入りの商品を「お気に入り」に追加したり、購入を希望する商品を「カート」へ追加したりする。ここでのユーザとは、新規画面HTML情報例1111により提供されるサービス(オンラインショップなど)を利用する者である。
【0098】
画面例1111は、商品を検索するための画面部品111110,111111,111112,111113,111114,111115と、検索結果を切替表示するための画面部品111120,111121,111122,111123と、表の画面部品11113,111130,111131,111132,111133と、ユーザのお気に入りに追加するための画面部品111140と、ユーザがカートに追加するための画面部品111141とを含む。なお、カートへ追加するボタン111141をユーザが操作すると、図示せぬ商品購入画面に切り替わる。
【0099】
図19は、イベントフロー候補情報112の例1120である。イベントフロー候補情報の例1120は、例えば、イベントフローID112001、イベントの発生する画面112002、イベントの発生する画面部品112003、イベント内容112004、イベントフローの内容112005を備える。イベントフロー候補情報の例1120には、一つの行112051が示されている。
【0100】
図20は、画面設計情報生成システム1を利用するユーザ(プログラマ)へ提供される情報の例31である。出力画面例31は、ユーザインターフェース部14から出力装置3へ送信されて表示される。あるいは、出力画面例31は、通信部15を介してコンピュータ端末4へ送信され、端末画面に表示される。
【0101】
出力画面例31は、イベントについての情報を示すイベント情報表示部311と、イベントフロー候補の一覧を示すイベントフロー候補一覧表示部312と、スニペットに関する情報を示すスニペット表示部313と、ボタン314を含む。
【0102】
イベント情報表示部311は、例えば、画面31100、画面部品31101、イベント31102を含む。イベント情報表示部311には、一つの行31151が示されている。画面31100はイベントの発生する画面の種類を示す。画面部品31101は、イベントを発生させる画面部品の種類を示す。イベント31102は、イベントの発生する操作(ユーザ操作)の種類を示す。
【0103】
イベントフロー候補一覧表示部312は、例えば、イベントフローを選択するための選択部31200、イベントフローを識別するイベントフローID31201、イベントの内容を概略的に示すイベントフロー31202を備える。イベントフロー31202では、一つまたは複数のスニペットIDと、複数スニペット間の実行順序だけを記載することができる。
【0104】
スニペット表示部313は、選択部31200で選択されたイベントフローを構成するスニペットの詳細を表示する。スニペット表示部313では、スニペットID31300,31301と、スニペットの内容(ソースコード断片)31350,31351が表示される。
【0105】
プログラマは、出力装置3(またはコンピュータ端末4の端末画面)に表示されたイベントフロー候補の情報を参考にして、新規画面HTMLで使用されるソースコードを作成する。
【0106】
図21は、イベントフロー候補の情報を用いて新たに作成されるソースコード情報120の例1200である。ソースコード情報の例1200は、複数のソースコード断片120000~120007を含んでいる。
【0107】
図21上側のソースコード断片120001,120002は、
図20でプログラマに提供されたイベントフローを利用して作成されたものである。他のソースコード断片についても同様に、プログラマは、新規画面HTMLとイベントに基づいて画面設計情報生成システム1から提供されるイベントフロー(不図示)を利用して、効率よく新規ソースコードを作成することができる。
【0108】
図22は、スニペット抽出部151が既存のソースコード101からスニペット103を抽出する処理を示す。
【0109】
ステップ15100:スニペット抽出部151は、既存ソースコード情報101の全てのファイルを読み込む。
【0110】
ステップ15101:ループ1の開始。スニペット抽出部151は、既存ソースコード情報101の全てのファイルに対して以下の所定ステップを実行する。
【0111】
ステップ15102:スニペット抽出部151は、既存ソースコード情報101のファイルの画面名を取得する。
【0112】
ステップ15103:ループ2の開始。スニペット抽出部151は、ステップ15101のファイルの全ての画面部品に対して以下の所定ステップを実行する。
【0113】
ステップ15104:ループ3の開始。スニペット抽出部151は、ステップ15103の画面部品の、全ての処理のあるイベントに対して以下の所定ステップを実行する。
【0114】
ステップ15105:スニペット抽出部151は、ステップ15104のイベントに対する処理行を、ステップ15101のファイルから取得する。
【0115】
ステップ15106:スニペット抽出部151は、ステップ15105で取得した処理行を、特定の条件に従い分割する。
【0116】
ステップ15107:ループ4の開始。スニペット抽出部151は、ステップ15106の分割した処理行群の単位に対して以下の所定ステップを実行する。
【0117】
ステップ15108:スニペット抽出部151は、スニペット情報103に一列を追加し、任意のIDをID列103001に、ステップ15102の画面名を画面名列103002に、ステップ15103の画面部品情報を画面部品列103003に、ステップ15104のイベントをイベント列103004に、ステップ15101で選択したファイルのパスをソース列103005に、ステップ15106で分割した行の番号を行番号列103006に、行の文字列をコード断片列103007に、それぞれ書き込む。このステップの後で、ループ4は終了。
【0118】
ステップ15109:ループ5の開始。スニペット抽出部151は、ステップ15106の分割した処理行を組み合わせる。
【0119】
ステップ15110:スニペット抽出部151は、スニペット依存関係情報104のID前列104001とID後列104002に、ステップ15106の処理行群に対応するステップ15108で設定した103001列の値を、関係列1004003に、その関係が順序関係である場合は値「順序」を、その関係がエラー処理である場合は値「エラー」を書き込む。その後、ループ5,ループ3,ループ2,ループ1の順でループ終了し、本処理は正常終了する。
【0120】
図23は、ログ解析部152がログ105を解析する処理を示す。
【0121】
ステップ15200:ログ解析部152は、スニペット情報103の全ての列を読み込む。
【0122】
ステップ15201:ログ解析部152は、ログ情報105の全ての列を読み込む。
【0123】
ステップ15202:ループ1の開始。ログ解析部152は、スニペット情報103の全ての行に対して以下の所定ステップを実行する。
【0124】
ステップ15203:ログ解析部152は、ステップ15202で選択した行のソース列103005の値とソースコード列106001の値を比較し、値が同じ行をログ情報105より取得する。
【0125】
ステップ15204:ループ2の開始。ログ解析部152は、ステップ15201で取得したログ情報105の全ての行に対して以下の所定ステップを実行する。
【0126】
ステップ15205:ログ解析部152は、ステップ15202での行番号列10300とステップ15204の行の実行行列106002を比較し、一致する行数を計算する。この後、ループ2終了。
【0127】
ステップ15206:ログ解析部152は、カバレッジ情報106に1列を追加し、ステップ15202で取得した行のID列103001の値をID列106001に、ステップ15205で計算した行数の総和を値列106002に出力する。この後、ループ1終了。そして本処理は正常終了する。
【0128】
図24は、類似度判定部153が類似度を判定する処理を示す。
【0129】
ステップ15300:類似度判定部153は、スニペット情報103の各行を読み込む。
【0130】
ステップ15301:ループ1の開始。類似度判定部153は、スニペット情報103の全ての行の組み合わせに対して以下の所定ステップを実行する。
【0131】
ステップ15302:類似度判定部153は、ステップ15301で取得した2つの行について、コード断片列103007の一致する行数の和を行数の和で割った値を計算する。
【0132】
ステップ15303:類似度判定部153は、ステップ15301で取得した2つの行のID列103001の値に対応する、スニペット類似度情報1070のセルに、ステップ15302で計算したパーセンテージを書き込む。この後、ループ1終了。そして、本処理は正常終了する。
【0133】
図25は、画面部品抽出部154が画面部品情報を抽出する処理を示す。
【0134】
ステップ15400:画面部品抽出部154は、既存画面HTML情報102の全てのファイルを読み込む。
【0135】
ステップ15401:ループ1の開始。画面部品抽出部154は、ステップ15400で読み込んだすべてのファイルに対して以下の所定ステップを実行する。
【0136】
ステップ15402:画面部品抽出部154は、ステップ15401で選択したファイルから画面部品を抽出する。
【0137】
ステップ15403:ループ2の開始。画面部品抽出部154は、ステップ15402で抽出した全ての画面部品に対して以下の所定ステップを実行する。
【0138】
ステップ15404:画面部品抽出部154は、ステップ15401で選択したファイルから、ステップ15403で選択した画面部品の属性を抽出する。
【0139】
ステップ15405:画面部品抽出部154は、画面部品情報108に一行を追加し、画面列108001にステップ15401で選択したファイルの画面名を、画面部品列108002にステップ15403で選択した画面部品の名前を、画面部品属性列108004にステップ15404で取得した画面部品の属性を書き込む。
【0140】
ステップ15406:ループ3の開始。画面部品抽出部154は、部品の全ての組み合わせに対して以下の所定ステップを実行する。
【0141】
ステップ15407:画面部品抽出部154は、ステップ15401で選択したファイルの情報に基づき、ステップ15406で選択した2つの画面部品間の関係を特定する。
【0142】
ステップ15408:画面部品抽出部154は、画面部品情報108のステップ15404で追加した行の同じ画面の画面部品列108003に、ステップ15407で計算した画面部品間の関係を書き込む。この後、ループ3,ループ2,ループ1の順で終了。そして、本処理は正常終了する。
【0143】
図26は、スニペット利用状況作成部155がスニペットの利用状況を作成する処理を示す。
【0144】
ステップS15500:スニペット利用状況作成部155は、スニペット情報103の全ての行を取得する。
【0145】
ステップS15501:スニペット利用状況作成部155は、ステップ15500で取得したスニペット情報103の行について、その全ての行の組み合わせについて、そのID列103001の値と同じ値を行と列に持つ、スニペット類似度情報107のセルを取得し、その値が1である場合に、ID列103001の2つのIDを同じ群にいれる。
【0146】
ステップS15502:ループ1の開始。スニペット利用状況作成部155は、ステップ15501でまとめた全ての群に対して以下の所定ステップを実行する。
【0147】
ステップS15503:スニペット利用状況作成部155は、ステップ15502で選択した群に対し、スニペット利用状況情報109に、一行書き込む。
【0148】
ステップS15504:スニペット利用状況作成部155は、ステップ15502で選択した群のID列103001の値と同じID列106001を有するカバレッジ情報106の行の値106002の総和を計算し、ステップ15503で追加したスニペット利用状況情報109の行の利用量列109002に書き込む。
【0149】
ステップS15505:スニペット利用状況作成部155は、ステップ15502で選択した群のID列103001の値と同じ値を行または列に有するスニペット類似度情報107のセルの値が一定の閾値以上である場合に、同じ値が行の場合は列の値を、同じ値が列の場合は行の値を取得し、取得した行または列の値を、ステップ15503で追加したスニペット利用状況情報109の行の類似スニペット列109003に書き込む。
【0150】
ステップS15506:スニペット利用状況作成部155は、ステップ15502で選択した群のID列103001の値と同じ値をID列103001に有するスニペット情報103の行のイベント列103003の値を所得し、その群におけるそれぞれのイベントの割合を計算し、ステップ15503で追加したスニペット利用状況情報109の行のイベント列109004に書き込む。
【0151】
ステップS15507:スニペット利用状況作成部155は、ステップ15502で選択した群のID列103001の値と、その前ID列104001の値が同じスニペット依存関係情報104の行の後ID列104002と関係列104003の情報を、ステップ15503で追加したスニペット利用状況情報109の行の事後発生列109005に書き込む。
【0152】
ステップS15508:スニペット利用状況作成部155は、ステップ15502で選択した群の画面名列103002の値及び画面部品列103003の値と同じ値を、画面列108001及び画面部品列108002に有する画面部品情報108の行を取得し、同じ画面の画面部品列108003と対象画面部品列108004の値にその群におけるそれぞれの値の割合を計算して追加し、ステップ15503で追加したスニペット利用状況情報109の行の同じ画面の画面部品列109006と対象画面部品列109007に書き込む。この後、ループ1終了し、本処理は正常終了する。
【0153】
図27は、フロー候補生成部156がフロー候補を生成する処理を示す。
【0154】
ステップS15600:フロー候補生成部156は、スニペット利用状況情報109の各行を読み込む。
【0155】
ステップS15601:フロー候補生成部156は、ステップ15600で取得した行のイベント列109004の値を取得する。
【0156】
ステップS15602:ループ1の開始。フロー候補生成部156は、ステップ15601で取得した全ての値に対して以下の所定ステップを実行する。
【0157】
ステップS15603:ループ2の開始。フロー候補生成部156は、ステップ15602及びステップ15606で取得した全ての値に対して以下の所定ステップを実行する。
【0158】
ステップS15604:フロー候補生成部156は、ステップ15603の値に含まれる割合の数値が一定の閾値を超える、スニペット利用状況情報109の行を抽出する。
【0159】
ステップS15605:フロー候補生成部156は、ステップ15604で抽出した行について、類似スニペット列109003に類似のスニペットが指定される場合は、より利用量列109002の値が大きい行を選択する。
【0160】
ステップS15606:フロー候補生成部156は、事後発生列109005より、その数値が一定の閾値を超える場合に、次のスニペットIDを取得し、その関係とともにフローとして保持する。この後、ループ2は終了する。
【0161】
ステップS15607:フロー候補生成部156は、ループ2のステップ15606の全てで条件に当てはまるスニペットID値がなく、かつステップ15603で未処理の値が残っていないか判定する。「はい」と判定すると、ステップ15603へ戻る。「いいえ」と判定すると、ステップS15608へ進む。
【0162】
ステップS15608:フロー候補生成部156は、フロー候補一覧情報110に一行を追加し、ID列110001に連番を、イベント列110002にステップ15601で取得したイベントを、フロー列110003にステップ15606で作成したフローを、同じ画面の画面部品列110004に同じ画面の画面部品列109006から取得した値を、対象画面部品列110005に対象画面部品列109007から取得した値を、それぞれ書き込む。この後、ループ1は終了する。そして、本処理は正常終了する。
【0163】
図28は、画面部品フロー生成部157が画面部品フローを生成する処理を示す。
【0164】
ステップ15700:画面部品フロー生成部157は、フロー候補一覧情報110の全ての行を読み込む。
【0165】
ステップ15701:ループ1の開始。画面部品フロー生成部157は、ステップ15700で取得したフロー候補一覧情報110の全ての行に対して以下の所定ステップを実行する。
【0166】
ステップ15702:画面部品フロー生成部157は、ステップ15701で選択したフロー候補一覧情報110のフロー列110003の全てのID値と同じ値の、スニペット情報103のID列103001を有する行の画面名列103002の値に対応する、新規HTML情報102のファイルの全ての画面部品を読み込む。
【0167】
ステップ15703:ループ2の開始。画面部品フロー生成部157は、ステップ15702で取得した全ての画面部品の全てのイベントに対して以下の所定ステップを実行する。
【0168】
ステップ15704:画面部品フロー生成部157は、ステップ15703で選択したイベントと、ステップ15702で選択した行のイベント列112004の値を比較する。
【0169】
ステップ15705:画面部品フロー生成部157は、ステップ15704で比較した値は一致するか判定する。
【0170】
ステップ15706:画面部品フロー生成部157は、イベントフロー候補情報112のID列112001に列番を、画面列112002にステップ15702で取得した画面名を、画面部品列112003にステップ15702で取得した画面部品名を、イベント列112004にステップ15703で取得したイベント名を、イベントフロー列112005にステップ15701で選択したフロー候補一覧情報110の行のフロー列110003の値を、それぞれ出力する。この後、ループ2が終了し、続いてループ1も終了する。そして本処理は正常終了する。
【0171】
図29は、フロー候補表示部158がフロー候補をコンピュータ端末4へ表示させる処理を示す。
【0172】
ステップS15800:フロー候補表示部158は、イベントフロー候補情報112の全行を取得する。
【0173】
ステップS15801:フロー候補表示部158は、ステップ15800で所得したイベントフロー候補情報112の全ての行に対し、イベントフロー列112005のイベントフロー値の値に対し、スニペット情報103のID列103001の値が同じ行の、ID列103001及びコード断片列103007の値を取得する。
【0174】
ステップS15802:フロー候補表示部158は、ステップ15800で取得したイベントフロー候補情報112の全行と、ステップ15801で習得したID列103001及びコード断片列103007の値を、出力装置3に表示する。
【0175】
図30は、ソースコード生成部160がソースコード情報を生成する処理を示す。
【0176】
ステップ16000:ソースコード生成部160は、入力装置2より、ステップ15802において出力装置3に表示したイベントフロー候補に対する、選択列31200において選択されたイベントフロー候補のID31201を取得する。
【0177】
ステップ16001:ソースコード生成部160は、ステップ16000で取得したIDと同じID列112001の値を有するイベントフロー候補情報112の行の、イベントフロー列112005のイベントフロー値の値に従い、その含むスニペットIDに対し、スニペット情報103のID列103001が同じ行のコード断片列103007の値で置き換えた文字列を生成する。
【0178】
ステップ16002:ソースコード生成部160は、ステップ16001にて作成した文字列を出力ソースコード情報120に出力する。
【0179】
このように構成される本実施例によれば、これから作成しようとする新規画面に複数の画面部品がある場合に、暗黙的な画面部品間の関係を考えてイベントフローをフルスクラッチで作成する必要がなく、新画面の設計情報(イベントフロー)を効率的に作成することができる。
【0180】
本実施例では、実績のある既存ソースコード情報を使って、作成対象の新画面に似た画面のソースコード断片を抽出して再利用できるため、プログラマは効率的に新画面を作成することができる。
【0181】
なお、本発明は上述の実施形態に限定されず、様々な変形例が含まれる。上記実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることもできる。また、ある実施形態の構成に他の実施形態の構成を加えることもできる。また、各実施形態の構成の一部について、他の構成を追加・削除・置換することもできる。
【0182】
本発明の各構成要素は、任意に取捨選択することができ、取捨選択した構成を具備する発明も本発明に含まれる。さらに特許請求の範囲に記載された構成は、特許請求の範囲で明示している組合せ以外にも組み合わせることができる。
1:画面設計情報生成システム、2:入力装置、3:出力装置、4:コンピュータ端末、5:ストレージシステム、101:既存ソースコード情報、102:既存画面HTML、103:スニペット情報、104:スニペット依存関係情報、105:ログ情報、106:カバレッジ情報、108:画面部品情報、109:スニペット利用状況情報、110:フロー候補一覧情報、111:新規画面HTML情報、112:イベントフロー候補情報、120:出力ソースコード情報、151:スニペット抽出部、152:ログ解析部、153:スニペット類似度判定部、154:画面部品情報抽出部、155:スニペット利用状況作成部、156:フロー候補生成部、157:画面部品フロー生成部、158:フロー候補表示部、160:ソースコード生成部