JP2019148859A - フローダイアグラムを用いたモデル開発環境におけるデザインパターンの発見を支援する装置および方法 - Google Patents
フローダイアグラムを用いたモデル開発環境におけるデザインパターンの発見を支援する装置および方法 Download PDFInfo
- Publication number
- JP2019148859A JP2019148859A JP2018031590A JP2018031590A JP2019148859A JP 2019148859 A JP2019148859 A JP 2019148859A JP 2018031590 A JP2018031590 A JP 2018031590A JP 2018031590 A JP2018031590 A JP 2018031590A JP 2019148859 A JP2019148859 A JP 2019148859A
- Authority
- JP
- Japan
- Prior art keywords
- node
- flow
- partial flow
- candidate
- partial
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/77—Software metrics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Operations Research (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Quality & Reliability (AREA)
- Marketing (AREA)
- Economics (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
【課題】フローダイアグラムを用いたモデル開発環境におけるデザインパターンの発見を支援する。【解決手段】デザインパターン発見支援装置は、編集中のフローに関して第1ノードが選定された場合に、第2ノードの1以上の候補である1以上の第2ノード候補を提示する。第1ノードは、入力ノードと出力ノードのうちの一方の種類のノードに該当するいずれかのノードである。第2ノードは、入力ノードと出力ノードのうちの他方の種類のノードと入力ノードと出力ノードのいずれにもなれる種類のノードである入力/出力ノードとのうちのいずれかの種類に該当するノードのうちの、第1ノードに対応するノードである。当該支援装置は、1以上の第2ノード候補からいずれかの第2ノード候補が第2ノードとして選定された場合に、第1ノードと第2ノード間の部分フローの1以上の候補である1以上の部分フロー候補を提示する。【選択図】 図1
Description
本発明は、概して、フローダイアグラムを用いたモデル開発環境におけるソフトウェア開発を支援する技術に関する。
ソフトウェアの開発において、ソースコードを記述することなく、モデル図を記述することにより動作するソフトウェアを開発できるモデル開発環境が存在する。例えば、HTTP通信やデータベースとの接続などをフローダイアグラムによって記述して実行できるNode-RED(https://nodered.org/)、信号処理や制御ロジックをブロックダイアグラムとして記述し、実行可能なソースコードを生成することのできるMathWorks社のSimuLink(商標)、といったモデル開発環境が存在する。このようなモデル開発環境では、ソフトウェアの構成要素や処理単位がノードであり、ノード同士がエッジで接続される。
ノードとエッジは有向グラフにおける用語であり、Node-REDにおけるフローダイアグラムもSimuLinkにおけるブロックダイアグラムも有向グラフとして捉えることができる。本明細書において、フローダイアグラムとブロックダイアグラムと有向グラフは同義とし、フローダイアグラムは単に「フロー」と呼ぶことができ、「フロー」と「グラフ」は同義とする。あるグラフの一部を「部分グラフ」と呼ぶが、同様に、あるフローの一部を「部分フロー」と呼ぶ。そして、部分フローに対して、フローの一部分ではなく全体を表す用語として、「全体フロー」という用語を用いる。
また、ソースコードの記述方法においては、「デザインパターン」と呼ばれる定石が存在する。デザインパターンに沿ったソースコードは、そうでないソースコード(例えば、デザインパターンとしての価値の無い単なる部分フロー(または全体フロー)のソースコード)よりも保守性が高いため、ソフトウェアの品質と開発の生産性に寄与する。モデル開発環境におけるフローダイアグラムの記述においても、同様にデザインパターンが存在する。例えば、Node-REDにおいて、HTTPリクエストをHTTP-inノードで受け付けた後、HTTPリクエストに含まれるボディとクエリーを抽出する処理をfunctionノードで実装し、抽出したデータを他のノードに送り、最終的にHTTP-outノードでHTTPリクエストの応答を返すといった一連の処理は汎用的であり、デザインパターンに該当する。開発者は、デザインパターンに沿って開発することにより、開発するソフトウェアの品質や開発効率が向上することが期待できる。
有向グラフにおける技術として、変更前後のブロックダイアグラム同士の差分を容易に確認することのできる技術(特許文献1)と、同一の部分グラフまたは類似した部分グラフを、部分グラフ同士の類似度を算出しながら効率的に検出することのできる技術(特許文献2)が存在する。
フローダイアグラムは有向グラフであるため、フローダイアグラムにおけるデザインパターンを発見するために、特許文献1または特許文献2における技術を利用することが考えられる。デザインパターンを発見することができれば、ソフトウェア開発に関し開発者の負担を低減することが期待できる。
しかし、フローダイアグラムを用いたモデル開発環境におけるノードには、複数の種類がある。具体的には、例えば、フローダイアグラムで記述されたシステムの外部からの入力を受け付けるノード(入力ノード)、そのフローダイアグラムで記述されたシステムの外部に出力するノード(出力ノード)、どちらも行うノード(入力ノードにも出力ノードにもなれるノードである入力/出力ノード)がある。入力ノード、出力ノードおよび入力/出力ノード以外の種類のノードとして、例えば、さらに、条件分岐を行うノード、処理を遅らせるノード、1つのデータを複数のノードに出力するノードなどの制御用のノード、数値演算を行うノードが存在する。
よって、特許文献1および2における技術でデザインパターンを発見しようとすると、入力ノードが含まれた部分フロー、出力ノードが含まれた部分フロー、入力と出力の両方を行うノードが含まれた部分フロー、条件分岐を行うノードが含まれた部分フロー、数値演算を行うノードが含まれた部分フローなどが雑多に含まれる結果となり得る。この結果の中には、デザインパターンとして相応しい有用な部分フローも含まれ得るが、そうではないものも多く含まれてしまう可能性が高い。例えば、条件分岐を行うノードと処理を遅らせるノードを組み合わせた部分フローが複数見つかった場合、それがどのような入力ノードや出力ノードに対して実行されるフローなのかがわからなければ、開発者はその部分フローを活用しづらい。また、既存のフローダイアグラム群から部分フローの出現頻度を調べるだけでは、開発者が開発しようとしている処理の種類が考慮されていないため、参考するに相応しい部分フローを探すのに時間がかかってしまう。処理の種類とは、例えば、HTTPリクエストの受付、データベースの利用、モーターの制御、音声信号処理などが該当する。開発者が開発しようとしている処理の種類に合致しない部分フローが提示されたとき、開発者はそれらの部分フローを活用しづらい。
本発明は、このような問題に鑑みてなされたもので、フローダイアグラムを用いたモデル開発環境における有用なデザインパターンの発見を支援することを目的とする。
デザインパターン発見支援装置は、フローダイアグラムを用いたモデル開発環境における編集中のフローに関して第1ノードが選定された場合に、第2ノードの1以上の候補である1以上の第2ノード候補を提示する。第1ノードは、入力ノードと出力ノードのうちの一方の種類のノードに該当するいずれかのノードである。第2ノードは、入力ノードと出力ノードのうちの他方の種類のノードと入力ノードと出力ノードのいずれにもなれる種類のノードである入力/出力ノードとのうちのいずれかの種類に該当するノードのうちの、第1ノードに対応するノードである。当該支援装置は、1以上の第2ノード候補からいずれかの第2ノード候補が第2ノードとして選定された場合に、第1ノードと第2ノード間の部分フローの1以上の候補である1以上の部分フロー候補を提示する。
本発明により、第1ノードが選定された場合に、1以上の第2ノード候補が提示され、いずれかの第2ノード候補が選定された場合に、2ノード間の1以上の部分フロー候補が提示される。このため、フローダイアグラムを用いたモデル開発環境において、デザインパターンと呼ぶに相応しい有用なものを効率的に発見することができ、以って、開発効率が向上する。
以下の説明では、「インターフェース部」は、1以上のインターフェースでよい。当該1以上のインターフェースは、ユーザインターフェース部と、通信インターフェース部とのうちの少なくとも通信インターフェース部を含んでよい。ユーザインターフェース部は、1以上のI/Oデバイス(例えば入力デバイス(例えばキーボード及びポインティングデバイス)と出力デバイス(例えば表示デバイス))と表示用計算機とのうちの少なくとも1つのI/Oデバイスでもよいし、それに代えて又は加えて、当該少なくとも1つのI/Oデバイスに対するインターフェースデバイスでもよい。通信インターフェース部は、1以上の通信インターフェースデバイスでよい。1以上の通信インターフェースデバイスは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ部」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、以下の説明では、「PDEV部」は、1以上のPDEVであり、典型的には補助記憶デバイスでよい。「PDEV」は、物理的な記憶デバイス(Physical storage DEVice)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)またはSSD(Solid State Drive)である。
また、以下の説明では、「記憶部」は、メモリ部およびPDEV部のうちの少なくとも1つ(典型的には少なくともメモリ部)である。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも1つのプロセッサは、処理の一部または全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
また、以下の説明では、「kkk部」(インターフェース部、記憶部およびプロセッサ部を除く)の表現にて機能を説明することがあるが、機能は、1以上のコンピュータープログラムがプロセッサ部によって実行されることで実現されてもよいし、1以上のハードウェア回路によって実現されてもよい。プログラムがプロセッサ部によって実行されることで機能が実現される場合、定められた処理が、適宜に記憶部および/または通信インターフェース部等を用いながら行われるため、機能はプロセッサ部の少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機または計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各機能の説明は一例であり、複数の機能が1つの機能にまとめられたり、1つの機能が複数の機能に分割されたりしてもよい。
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる構造体を説明することがあるが、構造体は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx構造体」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号を使用し、同種の要素を区別して説明する場合は、要素のIDを使用することがある。例えば、ノードを特に区別しないで説明する場合には、「ノード501」と記載し、個々のノードを区別して説明する場合には、「ノードA」、「ノードB」のように記載することがある。
また、以下の説明では、「データセット」とは、アプリケーションプログラムのようなプログラムから見た1つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペアおよびタプルのうちのいずれでもよい。
本発明の一実施例を説明する。
まず、図1は、本発明の一実施例に係るデザインパターン発見支援装置(以下、支援装置)100を含むシステム全体の構成図である。
支援装置100は、フローダイアグラムを用いたモデル開発環境におけるデザインパターンの発見を支援する装置である。支援装置100を含むシステム全体において、開発環境サーバー装置200およびリポジトリサーバー装置300が存在する。装置100、200および300の各々は、1以上のコンピューターであるコンピューター装置である。開発者は、開発環境サーバー装置200上で実行されるソフトウェアであるフローダイアグラムを用いたモデル開発環境201を用いて開発を行う。開発したフローは、ファイル(データセットの一例)として扱われ、リポジトリサーバー装置300内に存在するソフトウェアであるフロー保存用リポジトリ301に保存される。
支援装置100は、フロー保存用リポジトリ301に保存されている複数のフローのファイルを読み込む。本実施例では、フロー保存用リポジトリ301に保存されているフロー、およびフロー保存用リポジトリ301から読み込んだフローのことを「全体フロー」と呼び、部分フローと明確に区別する。
図1のように、支援装置100、開発環境サーバー装置200およびリポジトリサーバー装置300は、例えばインターネットのような通信ネットワークを介して互いに通信する。装置100、200および300は、別々の装置であってもよいし、装置100、200および300のうちの2以上の装置が、1つのコンピューター装置として、その中に、後述の機能101、102、103、104、105、201および301のうちの少なくとも一部の機能を内包する構成としてもよい。機能101、102、103、104、105、201および301は、例えば、1以上のコンピュータープログラムがプロセッサ部によって実行されることで実現されてよい。
本実施例の実装として、支援装置100は、インターフェース部111、記憶部112およびそれらに接続されたプロセッサ部113を有し、プロセッサ部113が、記憶部112に格納されているコンピュータープログラム(例えばデザインパターン発見支援プログラム)を実行することで、機能150(機能101、102、103、104および105)が、Webアプリケーションとされ、フローダイアグラムを用いたモデル開発環境201が、モデル開発環境を提供する既存のシステム(例えばNode-RED)であって、フロー保存用リポジトリ301が、既存のシステム(例えば、Git(登録商標)のようなバージョン管理システム)とすることが挙げられる。
支援装置100は、機能として、デザインパターンの発見を支援するデザインパターン発見支援部(以下、支援部)150を有する。支援部150は、入力/出力スコアを算出する入力/出力スコア算出部101、部分フロースコアを算出する部分フロースコア算出部102、部分フローを検出する部分フロー検出部103、部分フロー類似度(以下、類似度)を算出する部分フロー類似度算出部104、および、ノードや部分フローの候補を提供する候補提供部105を有する。
支援装置100は、後述する探索ノードテーブル、タグ係数テーブル、エッジ係数テーブルに記録する情報および類似度の閾値を任意のコンピューター装置400から受け取り、登録する。
支援装置100は、フロー保存用リポジトリ301に保存されている複数の全体フローを読み込み、処理を行うことにより、フローダイアグラムを用いたモデル開発環境における有用なデザインパターンの発見を支援する。
図2は、支援装置100が行う一連の処理を示す。
当該一連の処理において、部分フロースコアテーブル320(例えば図3参照)および入力/出力スコアテーブル420(例えば図4参照)といったテーブルが作成される。
部分フロースコアテーブル320は、ある起点となるノードと終点となるノードとの間にある部分フローに関する情報を格納するテーブルであり、起点となるノードと終点となるノードとのペアである起点/終点ペアごとに存在する。例えば、図3は、起点となるノードAと終点となるノードBとの起点/終点ペアに対する部分フロースコアテーブルである。当該テーブルによれば、当該ペアについて、4つの部分フローが存在する。部分フロースコアテーブル320は、部分フローIDカラム311、部分フロー情報カラム312、全体フローIDカラム313、全体フロータグカラム314、類似部分フローIDカラム315、エッジ数カラム316および部分フロースコアカラム317を有する。部分フローIDカラム311とは、部分フローのIDが記録されるカラムである。部分フロー情報カラム312とは、部分フローそのものの情報が記録されるカラムである。全体フローIDカラム313とは、その部分フローを抽出する情報源である全体フローのIDが記録されるカラムである。全体フロータグカラム314とは、その全体フローのタグ(以下、全体フロータグ)を示す情報を扱うカラムである。「全体フロータグ」とは、具体的には、先述したHTTPリクエストの受付、データベースの利用、モーターの制御、音声信号処理などのような処理の種類である。類似部分フローIDカラム315とは、部分フローと類似する部分フローのIDが記録されるカラムである。エッジ数カラム316とは、その部分フローのエッジ数を記録するカラムである。部分フロースコアカラム317とは、その部分フロースコアテーブル320における起点となるノードと終点となるノードとの間の部分フローのうち、どれをデザインパターンとして優先的に提示するかを決めるためのスコア(部分フロースコア)を記録するカラムである。部分フロースコアテーブル320は、記憶部112に格納される。
入力/出力スコアテーブル420とは、起点となるノードと終点となるノードとの起点/終点ペアに関する情報を格納するテーブルである。例えば、図4に例示の入力/出力スコアテーブル420には、6つの起点/終点ペアに関する情報が記録されている。入力/出力スコアテーブル420は、ペアIDカラム411、ペアカラム412および入力/出力スコアカラム413を有する。ノードのペアにはIDが存在し、起点/終点ペアのIDが、ペアIDカラム411に記録される。ペアカラム412には、起点ノードのIDと終点ノードのIDが記録される。起点/終点ペアを構成する起点ノードおよび終点ノードのいずれも、1つとは限らない。例えば、ペアID“5”の起点/終点ペアでは、2つのノードBおよびノードCが起点ノードであり、2つのノードXおよびノードYが終点ノードである。入力/出力スコアカラム413は、ノードペアごとに算出されるスコア(入力/出力スコア)を記録するものである。入力/出力スコアテーブル420は、記憶部112に格納される。
以下、図2に示す処理の詳細を説明する。
部分フロー検出部103は、ステップS101にて、フロー保存用リポジトリ301から全体フロー群(例えば、フロー保存用リポジトリ301に格納されている全ファイル)を取得する。ステップS102にて、部分フロー検出部103は、1つでも全体フローを取得できたか(取得できたファイルが1つでもあるか)を判定する。ステップS102の判定結果がtrueであれば、部分フロー検出部103は、ステップS103にて、図2の一連の処理において未選択の全体フローのうちのいずれか1つの全体フローを選択し、処理がステップS104に進む。ステップS102の判定結果がfalseであれば、部分フロー検出部103は、当該一連の処理を終了する。
以下、図5に示す2つの全体フロー1および2が取得できた場合を例に取り、図2の処理を説明する。なお、全体フローnとは、全体フローIDが“n”の全体フローである。全体フローは、複数のノード501と1以上のエッジ502を含む。
ステップS104では、部分フロー検出部103は、選択全体フロー(ステップS103にて選択した全体フロー)の中に、探索開始/終了ペアが存在するかを判定する。「探索開始/終了ペア」とは、全体フローを探索する際の探索を開始するノードと探索を終了するノードとのペアのことである。探索開始/終了ペアは、探索ノードテーブル620(図6参照)に基づいて決定される。探索ノードテーブル620は、探索開始ノード(探索を開始するノード)のIDが記録されるカラム(開始のみカラム)611、探索終了ノード(探索を終了するノード)のIDが記録されるカラム(終了のみカラム)612、探索開始/終了ノード(探索開始ノードと探索終了ノードの両方に該当するノード)のIDが記録されるカラム(開始/終了両方カラム)613、および、探索開始ノードおよび探索終了ノードのどれにも該当しないノードのIDが記録される(除外カラム)614を有する。探索ノードテーブル620における各情報は、図1における任意のコンピューター装置400からあらかじめ登録された情報である。なお、カラム611から613に記録されたID以外のIDを有するノードは、探索開始ノードおよび探索終了ノードのどれにも該当しないノードとみなすことができるため、除外カラム614は無くてもよい。また、探索開始ノードは、入力ノードに相当し、探索終了ノードは、出力ノードに相当し、探索開始/終了ノードは、入力/出力ノードに相当する。
図5の全体フローと図6の探索ノードテーブル620から、探索開始ノード群は{A, B, C}(ノードA、BおよびC)であり、探索終了ノード群は{X, Y, B, C}であり、除外ノードは{a, b, c, d, e}であることがわかる。選択全体フローが図5の全体フロー1であれば、図5の全体フロー1は、探索開始ノード群のノードと探索終了ノード群のノードの両方を含むので(すなわち、全体フロー1のいずれの先頭ノードも、探索開始ノードAであり、全体フロー1の末尾ノードが、探索終了ノードXであるので)、ステップS104の判定結果がtrueであり、処理がステップS105へ進む。もし、選択全体フローについて、ステップS104の判定条件に合致しない場合は、処理がステップS110へ進む。
ステップS105では、部分フロー検出部103は、選択全体フローについて、探索開始ノード群にあるノードから探索終了ノード群にあるノードへの経路を探索する。図5の全体フロー1に対して図6の探索ノードテーブル620をもとに探索すると、ノードAからノードBに至る経路が3つ、ノードAからノードCに至る経路が1つ、ノードBからノードXに至る経路が2つ、ノードCからノードXに至る経路が1つ、ノードAからノードXに至る経路が3つ発見される。ノードAからノードBに至る経路については、部分フロー検出部103は、入力/出力スコアテーブル420をもとに、入力ノードをノードA、出力ノードをノードBとした起点/終点ペアがあると判定できる。そして、ステップS106では、部分フロー検出部103は、探索開始/終了ペアテーブル720(図7参照)に、全体フローに対してどのような探索開始/終了ペアが存在するかを登録する。探索開始/終了ペアテーブル720は、全体フローIDが記録されるカラム(全体フローIDカラム)711、および、探索開始/終了ペアの情報が記録されるカラム(探索開始/終了ペアカラム)712を有する。例えば、部分フロー検出部103は、全体フロー1について、ノードAからノードBに至る経路が存在するので“(A->B)”を探索開始/終了ペアカラム712に登録し、更に、ノードAからノードCに至る経路が存在するので“(A->C)”を探索開始/終了ペアカラム712に登録する。
ただし、ノードBからノードXに至る経路、ノードCからノードXに至る経路、ノードAからノードXに至る経路については、部分フロー検出部103は、“(B->X)”、“(C->X)”および“(A->X)”を探索開始/終了ペアカラム712に登録するわけではない。例えば、ノードBからノードXへの経路上のノードeには、着目している探索ノードBに接続されている入力エッジ(着目入力エッジ)以外からの入力エッジが存在する。ノードXには、1つのノードBから出力されたデータだけが流れるわけではなく、2つのノードBと1つのノードCである3つのノードから出力されたデータが流れる。この場合、部分フロー検出部103は、ノードBからノードXに至る経路に対する探索開始/終了ペアは、“(B, B, C->X)とする。このように、着目している探索開始ノードと着目している探索終了ノードの間にある部分フロー中のノードに、着目している探索ノードに接続されている着目入力エッジ以外からの入力エッジが存在する場合、部分フロー検出部103は、その着目入力エッジ以外の各入力エッジから、探索ノードテーブル620をもとに、探索開始ノードまたは探索開始/終了両方ノードに該当するノードに辿りつくまで遡り、見つかったノードを、着目している探索開始ノードに加える(つまり、着目している探索開始ノードのIDと見つかったノードのIDとを探索開始ノードのIDとしてカラム712に登録する)。
そして、ステップS107では、部分フロー検出部103は、全体フロー1について探索開始/終了ペアテーブル720から未探索の探索開始/終了ペアのうちのいずれか1つの探索開始/終了ペア(例えば(A->B))を選択し、処理が、処理A(図8のステップS201)に進む。処理Aを図8が示す。ステップS201では、部分フロースコア算出部102は、既に選択ペア(ステップS107で選択された探索開始/終了ペア)の部分フロースコアテーブル320が存在するかを判定する。ステップS201の判定結果がfalseの場合は、ステップS202にて、部分フロースコア算出部102は、選択ペア(A->B)用の部分フロースコアテーブル320を新規に作成し、ステップS204における記録対象をそのテーブル320とする。ステップS201の判定結果がtrueの場合は、ステップS203にて、部分フロースコア算出部102は、ステップS204における記録対象を既に存在する“(A->B)”用の部分フロースコアテーブル320とする。
ステップS204では、部分フロースコア算出部102は、選択ペアを構成するノード間の部分フローを探索し、記録対象の部分フロースコアテーブル320の部分フロー情報カラム312、全体フローIDカラム313、全体フロータグカラム314およびエッジ数カラム316に情報を追加する。部分フローの探索方法は、特許文献2に記載の方法など、既存の方法でよい。例えば、図5の全体フロー1から、選択ペア(A->B)を構成するノードAおよびB間の部分フローを探索すると、部分フロースコア算出部102は、図9中の部分フローIDカラム311における“A_B_1”および“A_B_2”の各々について、部分フロー情報カラム312、全体フローIDカラム313、全体フロータグカラム314およびエッジ数カラム316に追加されるべき情報を得られる。
処理Aが終了すると、図2のステップS108に処理が進む。ステップS108では、部分フロー検出部103は、探索開始/終了ペアテーブル720に未探索の探索開始/終了ペアが存在するかを判定する。図7において、全体フロー1について、探索開始/終了ペア(A->B)の探索が終了している場合、探索開始/終了ペア(A->C)が未探索であるため、ステップS108の判定結果がtrueであり、ステップS109にて、部分フロー検出部103は、探索開始/終了ペア(A->C)を選択する。当該ペア(A->C)について、処理Aが実行される。このようにして、ある全体フローにおける各探索開始/終了ペアについて処理Aが実行され、当該各探索開始/終了ペアについて、部分フロースコアテーブル320が作成される(既にその探索開始/終了ペアについて部分スコアテーブル320があれば更新される)。全ての探索開始/終了ペアについて処理Aが実行された場合、ステップS108の判定結果がfalseであり、処理がステップS110へ進む。
ステップS110では、部分フロー検出部103は、ステップS104からステップS108に至る探索を行っていない全体フローが存在するかを判定する。ステップS110の判定結果がtrueの場合は、処理がステップS111に進む。図5のように全体フロー1の次に全体フロー2が存在する場合は、ステップS111にて、部分フロー検出部103は、全体フロー2を選択する。
このようにして、全体フロー1および全体フロー2のそれぞれについてステップS103かあらステップS111が行われ、結果として、図9から図14に示す部分フロースコアテーブル320が作成(または更新)される。この時点では、図9から図14に示す通り、まだ、類似部分フローIDカラム315と部分フロースコアカラム317に登録される情報は得られていない。
ステップS110の判定結果がfalseの後、処理B(図15のステップS301)が実行される。処理Bを図15が示す。ステップS301では、部分フロースコア算出部102は、作成(または更新)された部分フロースコアテーブル320(例えば、図9から図14に示す部分フロースコアテーブル320)の未選択の部分フロースコアテーブル320のうちのいずれか1つの部分フロースコアテーブル320を選択する。ここでは最初にペア(A->B)用の部分フロースコアテーブル320(図9参照)が選択されたとする。そして、ステップS302では、部分フロー類似度算出部104は、選択部分フロースコアテーブル320(ステップS301にて選択した部分フロースコアテーブル320)に存在する部分フロー同士で類似する部分フローを検出し、類似部分フローIDカラム317に、類似する部分フローのIDを記録する。具体的には、例えば、部分フロー類似度算出部104は、選択部分フロースコアテーブル320に存在する各部分フローについて、選択部分フロースコアテーブル320に存在する別の部分フロー毎に、当該別の部分フローの類似度を算出し、当該類似度が閾値未満か否かに応じて、当該別の部分フローを類似部分フローとするか否かを決定する。図9に示すペア(A->B)用の部分フロースコアテーブル320によれば、部分フローA_B_1と部分フローA_B_3は一致しているため、それらの部分フローは互いに類似していると判定できる。また、部分フローA_B_2は部分フローA_B_1にノードcを1つ加えたものであるため、それらの部分フローも互いに類似していると判定できる。いずれの部分フローといずれの部分フローが類似しているかを判定する方法は、既存の方法(例えば、特許文献2の方法、または特許文献1と2の方法を組み合わせた方法)でよい。ただし、類似度(部分フローの類似度)は、完全一致する場合を“1”とし、0以上1以下の値をとるものとする。また、ある部分フロー同士が類似しているか否かを決定する類似度の閾値は(つまり、本実施例では、ある部分フローとの類似度が閾値以上の部分フローが当該ある部分フローについての類似部分フローである)、あらかじめ図1における任意のコンピューター装置400から設定されている。類似度の閾値(例えば0.3)未満の類似度は切り捨てて0とみなされ、結果として、類似度が閾値未満の部分フローは、類似部分フローとは判定されない。
ステップS303では、部分フロースコア算出部102は、選択部分フロースコアテーブル320中の各部分フローについて、部分フロースコアを算出し、算出した部分フロースコアを部分フロースコアカラム317に記録する。各部分フローについて、当該部分フローの部分フロースコアの算出式は、当該部分フローの類似部分フローの類似度の和に“1”を加えた値とする。例えば、部分フローA_B_1の部分フロースコアは、(部分フローA_B_1と部分フローA_B_2の類似度)+(部分フローA_B_1と部分フローA_B_3の類似度)+(部分フローA_B_1と部分フローA_B_4の類似度)+1である。また、2つの部分フロー同士の類似度Kを、片方の部分フローにノードまたはエッジを1つ加えるまたは減らす操作を行ってもう片方の部分フローと同一の部分フローとなるまでの操作数をxとしたときに、K=1−0.1x(ただし1−0.1xが負となる場合にK=0とする)と定義した場合、ペア(A->B)用の部分フロースコアテーブル320における部分フロースコアは、図18のようになる。このように、本実施例では、各部分フローについて、部分フロースコアは、類似部分フローが多い程高く、各類似部分フローの類似度が高い程高い傾向にある。類似部分フローが多い程部分フロースコアが高い理由は、類似部分フローが多い程、デザインパターンの構成要素となる確率が高いと考えられ、結果として、デザインパターンの発見の確率が高いと考えられるからである。各類似部分フローの類似度が高い程部分フロースコアが高い理由は、汎用性の高い部分フローである可能性が高く、結果として、デザインパターンの発見の確率が高いと考えられるからである。
ステップS304では、部分フロースコア算出部102は、部分フロースコアの算出を行っていない部分フロースコアテーブル320(つまり、ステップS301にて未選択の部分フロースコアテーブル320)が存在するかを判定する。ステップS304の判定結果がtrueの場合、部分フロースコア算出部102は、ステップS305にて、次の部分フロースコアテーブル320を選択し、当該選択した部分フロースコアテーブル320について、S302およびS303にて部分フロースコアを算出する。ステップS304の判定結果がfalseの場合、図18から図23のように、全ての部分フロースコアテーブル320の類似部分フローIDカラムと部分フロースコアカラムに情報が書き込まれている。ステップS304の判定結果がfalseの場合、処理が処理C(図16のステップS401)に進む。処理Cを図16が示す。
ステップS401では、入力/出力スコア算出部101が、探索開始/終了ペアテーブル720上の全探索開始/終了ペアに対応する部分フロースコアテーブル320の中から、未選択の部分フロースコアテーブル320のうちのいずれか1つの部分フロースコアテーブル320を選択する。図16の説明において、ここで選択された部分フロースコアテーブル320を「選択部分フロースコアテーブル320」と呼び、選択部分フロースコアテーブル320に対応した探索開始/終了ペアを「選択ペア」と呼ぶ。
ステップS402では、入力/出力スコア算出部101は、選択部分フロースコアテーブル320のエッジ数カラム316に記録されている全てのエッジ数を用いて、選択ペアの入力/出力スコアを算出し、入力/出力スコアテーブル420の入力/出力スコアカラム413における該当フィールド(選択ペアに対応したフィールド)に、算出した入力/出力スコアを記録する。入力/出力ペアスコアの算出式は、各部分フローを図17に示すエッジ係数テーブル(エッジ数が記録されるカラム1711とエッジ数に対応した係数(エッジ係数)が記録されるカラム1712とを有するテーブル)1720におけるエッジ数に対する係数で除算したものの和である。例えば、図9のペア(A->B)用部分フロースコアテーブル320の場合、選択ペア(A->B)の入力/出力スコアは、1/3+1/5+1/3+1/5と算出できる。エッジ係数テーブル1720は、図1における任意のコンピューター装置400からあらかじめ登録されている。エッジ係数を設定することにより、後述する図24における候補提示の順序を調整することができる。このように、本実施例では、選択ペアについて、入力/出力スコアは、部分フローが多い程高く、各部分フローにおけるエッジが多い程低い傾向にある。部分フローが多い程入力/出力スコアが高い理由は、部分フローが多い程、入力ノードと出力ノード間の部分フローの候補が多く、結果として、デザインパターンの発見の確率が高いと考えられるからである。各部分フローにおけるエッジが多い程入力/出力スコアが低い理由は、エッジが多い程部分フローの構成は複雑である傾向にあり、結果として、デザインパターンの発見の確率が低いと考えられるからである。
ステップS403では、入力/出力スコア算出部101は、まだ入力/出力スコアを算出していない入力/出力ペア(探索開始/終了ペア)が存在するか(つまり、未選択の部分フロースコアテーブル320が存在するか)を判定する。ステップS403の判定結果がtrueの場合、入力/出力スコア算出部101は、ステップS404にて、スコア未算出の入力/出力ペアを選択し(つまり、未選択の部分フロースコアテーブル320のうちのいずれか1つの部分フロースコアテーブル320を選択し)、ステップS402にてスコア算出処理を行う。全ての入力/出力ペアについてスコアを算出すると、ステップS403の判定結果がfalseであり、図2の処理が終了する。
図1に示すように、開発環境サーバー装置200は候補情報を要求し、支援装置100は候補情報を返す。この候補情報は、図2の処理で得られた情報をもとに算出される。この典型例を図24に示す。また、図24の状況における処理をシーケンス図として図25に示す。なお、以下の説明において、モデル開発環境201にノードを置くとは、モデル開発環境201が提供するフロー編集画面(例えばGUI(Graphical User Interface))のようなモデル開発環境(例えばUI(User Interface))上にノードを選定(ノードを表すオブジェクトを選定)することを意味する。選定(ノードおよび部分フローの選定)および候補提示は、インターフェース部111経由で行われる。
図25のステップS500およびステップS501に示すように、開発環境サーバー装置200から支援装置100へ、探索開始ノード、探索終了ノード、タグ係数、エッジ係数、類似度の閾値、編集中のフローのタグが登録されているとする。
そして、開発環境サーバー装置200の利用者(以下、開発者)が、フローダイアグラムを用いたモデル開発環境201(フロー開発環境)に入力ノードAを置いたとする。このとき、モデル開発環境201は、入力ノードAに続く出力ノードの候補を支援装置100に要求する。この要求は図25のS502に相当する。すると、支援装置100の候補提供部105は、入力/出力スコアテーブル420を参照し、ノードAを入力ノードとする入力/出力ペアを検索する。例えば、(A->B)、(A->C)、(A->D)という3つの入力/出力ペアが存在し、入力/出力スコアの高さもこの降順である場合、候補提供部105は、開発環境サーバー装置200に、それらの出力ノードB、CおよびDと順位を応答する。この応答は図25のS503に相当する。そして、モデル開発環境201はその応答に基づいて、図24のように、ノードAに続く出力ノード候補B、CおよびDを提示する。入力/出力スコアは、高い順に、(A->B)、(A->C)、(A->D)であるため、出力ノード候補は、入力/出力スコアの高い順に(ノードB、ノードCおよびノードDの順に)並ぶ(図24参照)。
次に、開発者が、提示された候補の中からノードBを選ぶと、編集中のフローにノードBが置かれる。このとき、モデル開発環境201は、支援装置100に、「対象ペア(A->B)間の部分フローの候補」を要求する。対象ペアが(A->B)である理由は、入力ノードAに対してノードBが出力ノードとして選択されたためである。この要求は図25のS504に相当する。すると、支援装置100の候補提供部105は、対象ペア(A->B)用の部分フロースコアテーブル320を参照する。候補提供部105は、編集中フローのタグ(モデル開発環境201に対して入力されたタグ)と一致する全体フロータグが、全体フロータグカラム314に存在する場合、当該一致する全体フロータグに対応した全体フローに属する各部分フローについて、図26に示すタグ係数テーブル(全体フロータグが記録されるカラム2611と係数(タグ係数)が記録されるカラム2612とを有するテーブル)2620に記されたタグ係数(当該一致する全体フロータグに対応したタグ係数)を、部分フロースコアに乗算する。タグ係数テーブル2620とは、全体フロータグごとに定められる係数(タグ係数)を記録するテーブルであり、図1に示すように任意のコンピューター装置400から登録されるもの(例えば記憶部112に格納されるもの)である。タグ係数を設定することにより、どのような種類のフローを優先的に提示するかを定めることができる。
例えば、編集中フローのタグがTagAおよびTagBであり、部分フロースコアテーブル320上のある部分フローの全体フロータグがTagAであり、タグ係数テーブル2620にてTagAの係数が1.1とされていた場合、候補提供部105は、部分フロースコアに1.1を乗算することにより得られた値(以下、部分フロー候補スコア)を取得する。部分フローの部分フロー候補スコアは、当該部分フローが属する全体フローの1以上の全体フロータグが編集中フローのタグと一致した場合、当該1以上の全体フロータグにそれぞれ対応した1以上のタグ係数が反映された部分フロースコアに相当する(例えば、編集中フローのタグがTagAおよびTagBであり、全体フロータグがTagAだけでなくTagBもあれば、TagAのタグ係数に加えてTagBのタグ係数も部分フロースコアに乗算される)。一方、部分フローの部分フロー候補スコアは、当該部分フローが属する全体フローのいずれの全体フロータグも編集中フローのタグと一致しない場合、部分フロースコアそれ自体に相当する。このように、同一の部分フローについて、部分フロー候補スコアは、一致する全体フロータグが少なくとも1つ存在する場合、一致する全体フロータグが1つも存在しない場合に比して、相対的に高くなる。こうして、候補提供部105は、ある部分フローテーブルにおける全ての部分フローについて、一致する全体フロータグが存在するか否かを基に、部分フロー候補スコアを算出する。なお、上述したように、部分フローの部分フロースコアは、当該部分フローの全類似部分フローの類似度の和に“1”を加えたものであるが、部分フロースコアを“1”以上に維持する理由は、少なくとも1つの全体フロータグが一致する部分フローの部分フロー候補スコアを、部分フロースコアにタグ係数が乗算されることでより小さくなってしまうことを避けるためである。
図25のS505に示すように、候補提供部105は、対象ペア(A->B)用の部分フロースコアテーブル320から特定される全部分フローの部分フロー候補スコアと当該全部分フローの部分フロー情報とを含んだ応答を、開発環境サーバー装置200に送信する。モデル開発環境201は、この応答を受けて、図24に示すように、入力ノードAと出力ノードB間の部分フローの候補を提示する。部分フローは、部分フロー候補スコアの高い順(降順)に並ぶ。
そして、モデル開発環境201は、開発者から、その提示された部分フロー候補の中から1つの部分フローが選択されると、入力ノードAと出力ノードB間にその選択された部分フローを置く。この場合、モデル開発環境201において、選択された部分フローの入力エッジが入力ノードAと接続されて、選択された部分フローの出力エッジが出力ノードBと接続される。
さらに、出力ノードBが、入力/出力の両方を行うノードの場合(例えば、モデル開発環境201が、ノードBが入力/出力の両方を行うノードであることを探索ノードテーブル620を基に特定した場合)、図25のS506に示すように、モデル開発環境201が、「ノードBに対する出力ノードの候補」を支援装置100に要求し、その応答がS507に示すように返る。当該応答は、ノードBを入力ノードとして入力/出力スコアテーブル420を参照することで得られた情報(ノードBを入力ノードとした各ペアについて、出力ノードと入力/出力スコアとを含んだ情報)を含む。そして、モデル開発環境201は、ノードBに続く出力ノードの候補を提示する。この候補も、入力/出力スコアの高い順(降順)に並ぶ。
このようにして、入力ノードの選定、出力ノードの候補提示および選定、それらの間の部分フローの候補提示および選定を繰り返すことにより、開発者がデザインパターンを発見することができる。発見されたデザインパターンに基づいた効率的な開発を実現できる。
以上、一実施例を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
例えば、入力ノードが置かれた後に出力ノードの候補が提示されることに代えて、出力ノードが置かれた後に入力ノードの候補が提示されてもよい。入力ノードの候補の提示に関する処理は、出力ノードの候補の提示に関する処理(例えば、ステップS502からステップS503)の上述の説明において、入力ノードと出力ノードを読み替えることで、理解できる。
また、例えば、部分フローの候補の提示に関する処理に代えてまたは加えて、出力ノード(または入力ノード)の候補の提示に関する処理において、置かれた入力ノード(または出力ノード)を含んだペア毎に、入力/出力スコアに、編集中フローのタグと一致する全体フロータグの有無に応じて、タグ係数が反映されてもよい。すなわち、出力ノード(または入力ノード)の候補の並びは、入力/出力候補スコア(入力/出力スコアそれ自体、または、一致する全体フロータグがあればタグ係数が反映されたスコア)の降順でもよい。この場合、入力/出力スコアは、部分フロースコア同様“1”以上に維持されてもよい。置かれた入力ノード(または出力ノード)を含んだ各ペアについて、入力/出力候補スコアは、編集中のフローのタグと一致する全体フロータグを持つ全体フローの数が多い程(一致する全体フロータグが多い程)、高い傾向にあってよい。
また、例えば、一致する全体フロータグがある候補(出力ノード(または入力ノード)、あるいは、部分フロー)を示すオブジェクトは、一致する全体フロータグの有無に応じて、または、一致する全体フロータグの数に応じて、強調表示されてもよい。これにより、開発者は、編集中のフローのタグと一致する全体フロータグが少なくとも1つある全体フローに基づく候補がすぐにわかる。この場合、候補提供部105が、開発環境サーバー装置200に送信する応答に、各候補について、一致する全体フロータグの数を示す情報を含めてよい。表示の強調度合は、一致する全体フロータグの数に応じて異なってよい。
また、例えば、出力ノード(または入力ノード)、あるいは、部分フローの候補として、表示可能な数の上限(例えば上位M個(Mは自然数))があってもよいし、スクロール等により候補一覧が見られるようになっていてもよい。
100:デザインパターン発見支援装置
101:入力/出力スコア算出部
102:部分フロースコア算出部
103:部分フロー検出部
104:部分フロー類似度算出部
105 候補提供部
111:インターフェース部
112:記憶部
113:プロセッサ部
150:デザインパターン発見支援部
200:開発環境サーバー装置
201:フローダイアグラムを用いたモデル開発環境
300:リポジトリサーバー装置
301:フロー保存用リポジトリ
400:任意のコンピューター装置
101:入力/出力スコア算出部
102:部分フロースコア算出部
103:部分フロー検出部
104:部分フロー類似度算出部
105 候補提供部
111:インターフェース部
112:記憶部
113:プロセッサ部
150:デザインパターン発見支援部
200:開発環境サーバー装置
201:フローダイアグラムを用いたモデル開発環境
300:リポジトリサーバー装置
301:フロー保存用リポジトリ
400:任意のコンピューター装置
Claims (12)
- (A)フローダイアグラムを用いたモデル開発環境における編集中のフローに関して第1ノードが選定された場合に、第2ノードの1以上の候補である1以上の第2ノード候補を提示し、
前記第1ノードは、入力ノードと出力ノードのうちの一方の種類のノードに該当するいずれかのノードであり、
前記第2ノードは、入力ノードと出力ノードのうちの他方の種類のノードと入力ノードと出力ノードのいずれにもなれる種類のノードである入力/出力ノードとのうちのいずれかの種類に該当するノードのうちの、前記第1ノードに対応するノードであり、
(B)前記1以上の第2ノード候補からいずれかの第2ノード候補が第2ノードとして選定された場合に、前記第1ノードと前記第2ノード間の部分フローの1以上の候補である1以上の部分フロー候補を提示する、
ことをコンピューター装置に実行させるコンピュータープログラム。 - 前記選定された前記第2ノードが、入力/出力ノードに該当している場合、当該第2ノードを別の第1ノードとして(A)を実行する、
ことを前記コンピューター装置に実行させる請求項1に記載のコンピュータープログラム。 - 前記1以上の第2ノード候補は、入力/出力候補スコアの降順で並び、
前記1以上の第2ノード候補の各々について、当該第2ノード候補の入力/出力候補スコアは、前記第1ノードと当該第2ノード候補とで構成されたペアのスコアであって、既存の全ての全体フローに基づくスコアであり、
前記1以上の部分フロー候補は、部分フロー候補スコアの降順で並び、
前記1以上の部分フロー候補の各々について、当該部分フロー候補の部分フロー候補スコアは、当該部分フロー候補のスコアであって、前記全ての全体フローにおいて前記第1ノードと前記第2ノードとのペアに存在する全ての部分フローのうち当該部分フロー候補に該当する部分フローに基づくスコアである、
請求項1に記載のコンピュータープログラム。 - 前記1以上の第2ノード候補の各々について、当該第2ノード候補の入力/出力候補スコアは、前記第1ノードと当該第2ノード候補とのペアに存在する部分フローが多い程、高く、前記第1ノードと当該第2ノード候補とのペアに存在する各部分フローにおけるエッジが多い程、低い傾向にある、
請求項3に記載のコンピュータープログラム。 - 前記1以上の部分フロー候補の各々について、当該部分フロー候補の部分フロー候補スコアは、前記第1ノードと当該第2ノード候補とのペアに存在する部分フローのうち当該部分フロー候補と類似する部分フローである類似部分フローが多い程、高く、各類似部分フローの類似度が高い程、高い傾向にある、
請求項3に記載のコンピュータープログラム。 - 前記1以上の第2ノード候補の各々について、当該第2ノード候補の入力/出力候補スコアは、前記第1ノードと当該第2ノード候補とのペアを含んだ全体フローに関連付けられている全体フロータグのうち、前記編集中のフローの処理の種類を示すタグと一致する全体フロータグが多い程、高い傾向にあり、
各全体フローについて、当該全体フローに関連付けられている全体フロータグは、当該全体フローの処理の種類を示す、
請求項3に記載のコンピュータープログラム。 - 前記1以上の部分フロー候補の各々について、当該部分フロー候補の部分フロー候補スコアは、前記第1ノードと前記第2ノードとのペアにおける当該部分ブロー候補を含んだ全体フローに関連付けられている全体フロータグのうち、前記編集中のフローの処理の種類を示すタグと一致する全体フロータグが多い程、高い傾向にあり、
各全体フローについて、当該全体フローに関連付けられている全体フロータグは、当該全体フローの処理の種類を示す、
請求項3に記載のコンピュータープログラム。 - (A)では、前記1以上の第2ノード候補のうちのタグ一致第2ノード候補が強調表示され、
前記タグ一致第2ノード候補は、前記編集中のフローの処理の種類を示すタグと一致する全体フロータグが関連付けられている全体フローに含まれているペアを構成する第2ノード候補であって、前記第1ノードとのペアを構成する第2ノード候補であり、
各全体フローについて、当該全体フローに関連付けられている全体フロータグは、当該全体フローの処理の種類を示す、
請求項1に記載のコンピュータープログラム。 - (B)では、前記1以上の部分フロー候補のうちのタグ一致部分フロー候補が強調表示され、
前記タグ一致部分フロー候補は、前記編集中のフローの処理の種類を示すタグと一致する全体フロータグが関連付けられている全体フローに含まれている部分フローであり、
各全体フローについて、当該全体フローに関連付けられている全体フロータグは、当該全体フローの処理の種類を示す、
請求項1に記載のコンピュータープログラム。 - 前記全ての全体フローを読み込み、
前記全ての全体フローの各々について、
入力ノードと出力ノードのペアを探索し、
探索された各ペアについて、
当該ペアに存在する部分フローを検出し、
検出された各部分フローについて、
当該ペアにおける全別の部分フローから、各別の部分フローとの類似度を基に、類似部分フローを検出し、
各類似部分フローの類似度を基に、部分フロースコアを算出し、
当該ペアにおける各部分フローを基に、当該ペアの入力/出力スコアを算出する、
を前記コンピューター装置に実行させ、
前記1以上の第2ノード候補の各々について、当該第2ノード候補の入力/出力候補スコアは、前記第1ノードと当該第2ノード候補とで構成されたペアの入力/出力スコアに従うスコアであり、
前記1以上の部分フロー候補の各々について、当該部分フロー候補の部分フロー候補スコアは、当該部分フロー候補の部分フロースコアに従うスコアである、
請求項3に記載のコンピュータープログラム。 - インターフェース部と、
前記インターフェース部に接続されたプロセッサ部と
を有し、
前記プロセッサ部は、
(A)フローダイアグラムを用いたモデル開発環境における編集中のフローに関して第1ノードが前記インターフェース部を介して選定された場合に、第2ノードの1以上の候補である1以上の第2ノード候補を前記インターフェース部を介して提示し、
前記第1ノードは、入力ノードと出力ノードのうちの一方の種類のノードに該当するいずれかのノードであり、
前記第2ノードは、入力ノードと出力ノードのうちの他方の種類のノードと入力ノードと出力ノードのいずれにもなれる種類のノードである入力/出力ノードとのうちのいずれかの種類に該当するノードのうちの、前記第1ノードに対応するノードであり、
(B)前記1以上の第2ノード候補からいずれかの第2ノード候補が第2ノードとして前記インターフェース部を介して選定された場合に、前記第1ノードと前記第2ノード間の部分フローの1以上の候補である1以上の部分フロー候補を前記インターフェース部を介して提示する、
デザインパターン発見支援装置。 - (A)フローダイアグラムを用いたモデル開発環境における編集中のフローに関して第1ノードが選定された場合に、第2ノードの1以上の候補である1以上の第2ノード候補を提示し、
前記第1ノードは、入力ノードと出力ノードのうちの一方の種類のノードに該当するいずれかのノードであり、
前記第2ノードは、入力ノードと出力ノードのうちの他方の種類のノードと入力ノードと出力ノードのいずれにもなれる種類のノードである入力/出力ノードとのうちのいずれかの種類に該当するノードのうちの、前記第1ノードに対応するノードであり、
(B)前記1以上の第2ノード候補からいずれかの第2ノード候補が第2ノードとして選定された場合に、前記第1ノードと前記第2ノード間の部分フローの1以上の候補である1以上の部分フロー候補を提示する、
デザインパターン発見支援方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018031590A JP2019148859A (ja) | 2018-02-26 | 2018-02-26 | フローダイアグラムを用いたモデル開発環境におけるデザインパターンの発見を支援する装置および方法 |
US16/131,897 US20190265954A1 (en) | 2018-02-26 | 2018-09-14 | Apparatus and method for assisting discovery of design pattern in model development environment using flow diagram |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018031590A JP2019148859A (ja) | 2018-02-26 | 2018-02-26 | フローダイアグラムを用いたモデル開発環境におけるデザインパターンの発見を支援する装置および方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019148859A true JP2019148859A (ja) | 2019-09-05 |
Family
ID=67684535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018031590A Ceased JP2019148859A (ja) | 2018-02-26 | 2018-02-26 | フローダイアグラムを用いたモデル開発環境におけるデザインパターンの発見を支援する装置および方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20190265954A1 (ja) |
JP (1) | JP2019148859A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11574062B2 (en) | 2020-03-26 | 2023-02-07 | Hitachi, Ltd. | Application development assistance system and application development assistance method |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098093B (zh) * | 2022-08-24 | 2022-12-02 | 湖南云畅网络科技有限公司 | 一种数据流程表达式处理方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6549221B1 (en) * | 1999-12-09 | 2003-04-15 | International Business Machines Corp. | User interface management through branch isolation |
US7051069B2 (en) * | 2000-09-28 | 2006-05-23 | Bea Systems, Inc. | System for managing logical process flow in an online environment |
-
2018
- 2018-02-26 JP JP2018031590A patent/JP2019148859A/ja not_active Ceased
- 2018-09-14 US US16/131,897 patent/US20190265954A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11574062B2 (en) | 2020-03-26 | 2023-02-07 | Hitachi, Ltd. | Application development assistance system and application development assistance method |
Also Published As
Publication number | Publication date |
---|---|
US20190265954A1 (en) | 2019-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190251471A1 (en) | Machine learning device | |
JP5472110B2 (ja) | 関係性発見装置、関係性発見方法および関係性発見プログラム | |
WO2018188378A1 (zh) | 一种给应用标注标签的方法、装置、终端及计算机可读存储介质 | |
US11232267B2 (en) | Proximity information retrieval boost method for medical knowledge question answering systems | |
EP3685258B1 (en) | Ranking of software code parts | |
JP6737151B2 (ja) | 同義表現抽出装置、同義表現抽出方法、及び同義表現抽出プログラム | |
JP2014112283A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
KR101624420B1 (ko) | 검색 대상의 관련 키워드를 이용한 검색 방법 및 시스템 | |
US20150199364A1 (en) | Data analyzing apparatus and program | |
JP5194818B2 (ja) | データ分類方法およびデータ処理装置 | |
JP2019148859A (ja) | フローダイアグラムを用いたモデル開発環境におけるデザインパターンの発見を支援する装置および方法 | |
US10216792B2 (en) | Automated join detection | |
JP2012038066A (ja) | データ処理装置及びデータ処理方法及びプログラム | |
US20180039646A1 (en) | Method and apparatus for storing access log based on keyword | |
JP2011100208A (ja) | 行動推定装置、行動推定方法および行動推定プログラム | |
JP5439235B2 (ja) | 文書分類方法、文書分類装置、およびプログラム | |
JP5790820B2 (ja) | 不整合検出装置、プログラム及び方法、修正支援装置、プログラム及び方法 | |
Hindle | Stopping duplicate bug reports before they start with Continuous Querying for bug reports | |
JP5826148B2 (ja) | 図面管理サーバ及びこれを用いた図面管理システム | |
JP2011138512A (ja) | 重複画像除去時の代表画像の選択方法及びシステム | |
JP6646699B2 (ja) | 検索装置及び検索方法 | |
JP5971794B2 (ja) | 特許調査支援装置、特許調査支援方法、およびプログラム | |
JP2019215825A (ja) | 情報処理装置および情報処理方法 | |
JP7339148B2 (ja) | 検索支援装置 | |
WO2024047997A1 (ja) | 文書分析装置、及び文書分析用プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200302 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210129 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20210209 |
|
A045 | Written measure of dismissal of application [lapsed due to lack of payment] |
Free format text: JAPANESE INTERMEDIATE CODE: A045 Effective date: 20210629 |