JP4996262B2 - プログラム部品化支援装置 - Google Patents

プログラム部品化支援装置 Download PDF

Info

Publication number
JP4996262B2
JP4996262B2 JP2007006659A JP2007006659A JP4996262B2 JP 4996262 B2 JP4996262 B2 JP 4996262B2 JP 2007006659 A JP2007006659 A JP 2007006659A JP 2007006659 A JP2007006659 A JP 2007006659A JP 4996262 B2 JP4996262 B2 JP 4996262B2
Authority
JP
Japan
Prior art keywords
group
component
symbol
program
reference relationship
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007006659A
Other languages
English (en)
Other versions
JP2008176364A (ja
Inventor
有希彦 河原塚
成人 大條
真也 今西
正樹 若林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Faurecia Clarion Electronics Co Ltd
Original Assignee
Clarion Co Ltd
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Clarion Co Ltd, Hitachi Ltd filed Critical Clarion Co Ltd
Priority to JP2007006659A priority Critical patent/JP4996262B2/ja
Publication of JP2008176364A publication Critical patent/JP2008176364A/ja
Application granted granted Critical
Publication of JP4996262B2 publication Critical patent/JP4996262B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、プログラムを分割し、プログラム部品の集合として再構成するプログラム部品化支援装置に関する。
C言語をはじめとするプログラム言語により記述されたプログラムは、関数やメソッド等のプログラム言語の持つ機能により、プログラムをモジュール化し再利用することが可能である。しかし、保守による機能拡張を続けたソフトウェアは、モジュール同士が相互に参照して依存関係が複雑になることが多く、その結果、プログラムの再利用及びメインテナンスが困難になる。既存資産のプログラムの再利用性及びメインテナンス性を高めるには、既存資産であるプログラムを、モジュール間の参照関係が疎であるプログラム部品に分割することがポイントであるが、いかに効率よく分割するかがソフトウェア開発における課題の1つとなっている。
こうした課題に対して、プログラムのソースコードを解析しソースコード中の参照関係をユーザに提示する技術や、自動でソフトウェアの分割指針を提示する技術などが提案されている。
特許文献1では、プログラムを構成する特定の部分(プログラム断片)と外部とのインターフェースに関する情報の理解を容易にすることを目的として、ユーザがソースコード中の任意のプログラム断片を指定すると、そのプログラム断片と外部との変数参照関係の情報を変数ごとに抽出する技術が開示されている。
特許文献2では、ソフトウェアを構成するモジュールの構造化を促進し、独立性、保守性および再利用性の高いモジュールの作成を目的とし、モジュール内のブロックの特性データを測定し、測定した特性データに基づきモジュール分割の指針をユーザに提示する技術が開示されている。
特開2005−18114号公報 特開2004−295425号公報
上記特許文献1では、プログラム中の指定した箇所と外部とのインターフェース情報を抽出することはできるが、複数箇所での変数、関数、領域の選択と参照関係の抽出に関しては考慮はなされていない。さらに、特許文献1にてプログラム分割箇所における参照関係を解析しても、その箇所は参照関係が疎となる最も適切な分割箇所であるかどうかは分からない。ユーザは分割箇所を変更しながら試行錯誤的に解析を行い、その結果を見ながら適切な分割箇所を探す必要があった。
上記特許文献2では、モジュール構造化支援装置は、解析結果を基に自動的にプログラム分割指針を提示する。このためユーザは、解析対象のプログラムを指定するだけで、プログラムの適切な分割箇所を知ることができる。その半面、プログラム分割箇所及び分割規模は装置に予め設定されている条件に従って自動的に決定されてしまうため、ユーザが所望する部品規模や部品グループの条件を反映させることができなかった。
さらに特許文献1と特許文献2の技術を組み合わせようとした場合、プログラムを部品化し部品グループの要素を指定するために用いる共通の変数をどのように設定するかという課題がある。
本発明の目的は、ユーザが試行錯誤することなく適切なプログラム分割箇所を知ることができ、ユーザにより指定されたプログラム部品規模や部品グループの条件を反映させたプログラム部品化支援装置を提供することである。
本発明のプログラム部品化支援装置は、指定されたプログラムからシンボルを抽出し、抽出したシンボル間の参照関係を解析するシンボル情報解析部と、シンボル情報解析部で解析したシンボル間の参照関係をユーザに提示し、ユーザから、各シンボルを分類させるための部品グループの設定と各シンボルをどの部品グループに所属させるかの指定を受け付ける部品グループ指定部と、シンボル情報解析部の解析結果を参照して、部品グループ指定部にて受け付けた部品グループの指定に従い、指定された部品グループ間の参照関係を解析する部品グループ間参照関係解析部と、部品グループ間参照関係解析部の解析結果を表示させる表示制御部を備える。
また前記部品グループ指定部は、前記シンボルを分類する際に一部のシンボルについてはその所属先を一旦未定とするグレーグループに収容して受け付け、前記部品グループ間参照関係解析部は、該グレーグループをどの部品グループに所属させるべきかを判定して部品グループを再構成する。その際前記部品グループ間参照関係解析部は、再構成後の部品グループ間の参照量が最小となるように前記グレーグループの所属先を決定する。
さらに、ユーザから前記部品グループ間の参照指針の指定を受け付ける部品グループ間参照指針指定部を有し、前記部品グループ間参照関係解析部は、上記部品グループ間参照指針指定部にて受け付けた参照指針の指定を満足するように前記グレーグループの所属先を決定する。その際前記部品グループ間参照関係解析部は、前記グレーグループの所属先を変えた各種配置パターンについて前記指定された参照指針との一致度を求め、該一致度が最大となるもののうち、前記部品グループ間の参照量が最小となる配置パターンを最適構成として決定する。
本発明のプログラム部品化支援装置によれば、ユーザ所望のプログラム部品規模や部品グループの条件を反映させて、適切な分割箇所でプログラムを部品化でき、ユーザの利便性が向上する。
以下、本発明の実施の形態を図面を用いて説明する。
図1は、本発明によるプログラム部品化支援装置の実施例1を示すブロック構成図である。本装置は、例えばパソコンに解析用ソフトウェアを搭載して以下の機能を実現する。初めに用語の定義をすると、「シンボル」とは関数名、変数名である。また、プログラムの分割単位である「プログラム部品」はシンボルで構成され、「部品グループ」とは、プログラム部品の集合である。以下、構成各部の説明をする。
ユーザ入力部11は、ユーザからのデータ入力や処理要求を受け付ける。対象プログラム指定部12は解析対象となるプログラムを指定し、プログラム記憶部13に指定されたプログラムを記憶する。
シンボル情報解析部14は、プログラム記憶部13に記憶されたプログラムを参照し、関数、変数といったシンボル情報を解析し、その後解析したシンボル情報を用いて、シンボル間の参照関係を解析する。シンボル情報記憶部15には、解析したシンボル情報をシンボルテーブル(図4)として記憶する。参照関係記憶部16には、解析したシンボル間の参照関係をシンボル間参照関係テーブル(図6)として記憶する。
部品グループ指定部17は、参照関係記憶部16に記憶されたシンボル間参照関係を基に、ユーザによりそのシンボルを所属させる部品グループを指定し、部品グループ指定情報記憶部18には、指定されたシンボルの所属先を部品グループ配置テーブル(図8)として記憶する。部品グループ間参照関係解析部19は、部品グループ指定情報記憶部18の情報を基に、部品グループ間の参照関係を解析し、解析結果記憶部20に解析結果を部品グループ間参照関係テーブル(図9)として記憶する。表示制御部21は、ユーザ入力部11からの要求を受けると解析結果を表示させる。
図2は、実施例1に係るプログラム部品化支援装置の全体の処理を示すフローチャートである。以下、処理の順に説明する。
(ステップS101)ユーザはプログラム指定部12にて、解析対象とするプログラムの指定を行う。
(ステップS102)シンボル情報解析部14にて、シンボルの抽出を行う。シンボルの抽出では、プログラム中で使われている関数名と、すべての関数から参照可能なグローバル変数の変数名を抽出する。具体的には、ソースコードの字句解析を行い単語列に分割し、単語列を基に、言語の構文規則から構文を解釈することにより抽出する。抽出したシンボルには、それぞれにIDを割り当てる。抽出した結果は、シンボルテーブル(図4)としてシンボル情報記憶部15に記憶する。また、プログラムを実行させてメモリアクセスのログを取り、メモリアドレスとシンボルの対応付けを行うという、動的解析手法を用いて求めることができる。
(ステップS103)シンボル情報解析部14にてシンボル間の参照関係の解析を行う。プログラム中全ての関数において、関数内で参照しているシンボルを抽出し、シンボル間参照関係テーブル(図6)を作成し、参照関係記憶部16に記憶する。
(ステップS104)表示制御部21は、S103で行ったシンボル間の参照関係の解析結果を参照関係記憶部16から読み出し表示する。表示例を図7に示す。
(ステップS105)ユーザは部品グループ指定部17にて、S101で入力したプログラムを複数の部品グループに分割する。その際、S104で出力したシンボル間の参照関係の解析結果からシンボルをどの部品グループに所属するかを指定し、指定した内容を部品グループ指定情報記憶部18に格納する。部品グループの設定を行う際、ユーザに対し部品グループ配置テーブル(図8)を表示する。
(ステップS106)部品グループ間参照関係解析部19にて、部品グループ間の参照関係を解析する。これの詳細は図3で説明する。
(ステップS107)表示制御部21は、S106で解析した部品グループ間参照関係を図10に示すように表示する。
このように本実施例の処理では、ユーザはステップS105にて部品グループの分割の指定を行うことができる。その際、シンボルの参照関係の解析結果を見てシンボルをどの部品グループに所属するかを指定できることに特徴がある。
図3は、図2におけるステップS106(部品グループ間参照関係解析部19)の処理を、詳細に記述したフローチャートである。
(ステップS1061)S102で検出した全てのシンボルを調査するためにシンボル調査カウンタを用意する。図6に示すIDの順で調査を進めるため、まず用意したシンボル調査カウンタの値を1で初期化し、調査対象となるシンボルのIDが1のもの、図6でいえばfunc1を調査対象にする。
(ステップS1062)調査対象のシンボルが所属する部品グループを取得する。部品グループは、S105で設定した部品グループ配置テーブル(図8)を参照することにより求める。
(ステップS1063)調査対象シンボルが参照するシンボルを取得する。シンボルの取得には、S103で解析したシンボル間参照関係テーブル(図6)を参照して求める。
(ステップS1064)S1063で取得したシンボルの所属する部品グループとシンボル種別を、部品グループ配置テーブル(図8)とシンボルテーブル(図4)より取得する。
(ステップS1065)上記S1062からS1064により、ID=1のシンボルの所属する部品グループと、そのシンボルが参照するシンボルの所属する部品グループが求まる。求めた部品グループ間参照関係から、解析結果記憶部20に記憶している部品グループ間参照関係テーブル(図9)を更新する。
(ステップS1066)S1063で取得したすべての参照先シンボルに対して、前記S1064の処理を実行したかを判定する。NOであればS1064に戻り、YESであれば次のS1067に進む。
(ステップS1067)次に、調査対象であるすべてのシンボルに対し部品グループの所属と参照関係の調査を行ったかどうかを判定する。シンボルカウンタの値が、図6に示すIDの値の最大値(ID=8)に達したかどうかを判定する。NOであればS1068へ進み、YESであればステップS106の処理を終了する。
(ステップS1068)シンボル調査カウンタをインクリメントして、S1062に戻り次のシンボルを調査する。このようにして、部品グループ間参照関係テーブル(図9)を完成させる。
以下、上記処理の各ステップで扱うデータについて具体例で説明する。
図4は、ステップS102においてシンボル情報解析部14により解析したシンボル情報解析結果を示すシンボルテーブルの例である。IDは、対象プログラムから抽出したシンボルごとに一意に割り振られた番号を示す。SYMBOL_NAMEは、抽出されたシンボル名を示す。KINDは、抽出されたシンボルの種別が、関数であるか変数であるかを示す。図4では、例えばシンボル名func1のIDは1、種類は関数である。
図5は、解析対象プログラムの一例で、ステップS103にてシンボル間の参照関係の解析を説明する図である。(a)は、解析対象のソースコードの抜粋を記載したもので、プログラムはC言語で記述された場合である。(b)は、(a)のソースコードにおけるシンボル参照関係を示す。図では、1つの関数(例えばfunc3)に着目し、内部で参照しているシンボルの参照関係を示す。関数を四角形、変数を楕円形で表記し、参照元から参照先に向け矢印を引いている。
図6は、ステップS103にてシンボル間の参照関係を解析して作成したシンボル間参照関係テーブルの例を示す図である。図4と同様に、IDはシンボルごとに割り振られた番号、SYMBOL_NAMEは抽出されたシンボル名である。REFERENCEは、当該シンボルが参照する参照先のシンボルのIDを示す。例えばシンボルfunc3は、ID2,ID7のシンボルを参照しているから、すなわちfunc2,var1を参照していることを示す。
図7は、ステップS104にてシンボル間の参照関係を表示した一例を示す図である。図6のテーブルの内容をビジュアルに示す。図7の凡例は図5(b)と同様である。
図8は、ステップS105にて、プログラムを部品グループに分割するために用いる部品グループ配置テーブルの例を示す図である。部品グループに分割するために、各シンボルがどの部品グループに所属するかを設定する。GROUPは部品グループを示し、ここでは2つの部品グループGroup1,Group2に分割する。そして、シンボルfunc1,func2,func4はGroup1に所属するように、他のシンボルfunc3,func5,func6,var1,var2はGroup2に所属するように設定している(所属を○印で示す)。部品グループは、任意のグループ数であってもよい。
図9は、ステップS106にて、部品グループ間の参照関係を解析して作成した部品グループ間参照関係テーブルの一例を示す図である。このテーブルは、部品グループ間の参照の強さを数値(参照量)で定量的に表したものである。
図10は、ステップS107にて、部品グループ間参照関係テーブル(図9)を基に部品グループ間の参照関係を表示した画面の一例である。表示ウィンドウ31は解析結果を表示する領域であり、ユーザはカーソル35を操作し表示切替ボタンを選択することで、表示制御部21により表示内容を切り替えることができる。
図10(a)は、全体表示ボタン32を選択し、部品グループ全体を表示した場合である。この表示ではシンボルは表示されず、部品グループ間の参照関係が表示される。参照は矢印にて示され、矢印の太さで参照量を示している。本例では、Group1とGroup2が相互参照しており、Group1からGroup2への参照量がより多いことを示している。この表示により、部品グループ間の関係を俯瞰的につかむことができる。
図10(b)は、Symbolボタン33を選択し、各シンボル間の参照関係を表示した場合である。この表示では、部品グループ内のシンボル間の参照関連図が表示され、部品グループ間の詳細な参照関係を知ることができる。
図10(c)は、Metricsボタン34を選択し、図9の部品グループ間参照関係テーブルの形式で表示した場合である。この表示では、部品グループ間の参照量を数値で知ることができる。
このように実施例1では、まず対象プログラム中の各シンボルの参照関係を解析して出力する。ユーザはその出力結果を見て、各シンボルを複数の部品グループのいずれに所属させるかを指定する。次に、ユーザによって指定された部品グループ間のシンボル参照関係を解析し出力する。これにより、部品グループ間の依存関係が明らかとなり、ユーザに対し部品化指針を提供することができる。その際、ユーザはシンボルの参照関係を見ながら参照関係が疎となる箇所で分割できるとともに、分割する部品規模、部品グループ単位をユーザの所望する条件を反映させることができるので利便性が向上する。また本実施例では、プログラムを解析し、部品グループの要素を指定するために共通の変数としてシンボルを用いているので、一貫した処理が可能となる。
次に、本発明によるプログラム部品化支援装置の実施例2について説明する。実施例2の装置構成は前記実施例1(図1)と同様であるが、実施例1に次の機能を追加している。
部品グループ指定部17は、参照関係記憶部16に記憶されたシンボル名を基に、ユーザがそのシンボルを所属させる部品グループを指定するが、その際部品グループだけでなく所属先を一旦未定とするグレーグループを設ける。部品グループ指定情報記憶部18は、部品グループ指定部17にて指定されたシンボルが所属する部品グループとグレーグループの設定を、グレーグループ設定テーブル(図12)として記憶する。部品グループ間参照関係解析部19は、部品グループ指定情報記憶部18の情報を基に、グレーグループをどの部品グループに所属させるべきかを判定し、判定結果に従い再構成した部品グループ間の参照関係を解析する。このように実施例2では、グレーグループを設定することで、より的確なプログラム部品化を実現させるものである。
図11は、実施例2に係るプログラム部品化支援装置の全体の処理を示すフローチャートである。ここで、ステップS201からステップS205の動作は、実施例1(図2のS101からS105)と同様のため説明を省略する。
(ステップS206)S205において、ユーザは各シンボルをどの部品グループに所属させるかを指定するが、どの部品グループに所属させるかを特定できないシンボルについては、部品グループ指定部17にてグレーグループ設定テーブルを作成し、所属未定シンボルを一旦このグレーグループに収容する。グレーグループの設定については、図12で述べる。
(ステップS207)部品グループ間参照関係解析部19は、グレーグループをどの部品グループに所属させるべきかの判定処理を行う。まず、グレーグループを各部品グループに配置した際の部品グループ間の参照量を算出し、部品グループ判定テーブル(図14)を作成する。そして、部品グループ間の参照量が最小となるようにグレーグループの配置を決定する。
(ステップS208)S207の判定結果に基づき、解析結果記憶部20の部品グループ配置テーブルを更新する。表示制御部21は、グレーグループを最適に配置した部品グループの構成または部品グループ間参照関係を表示する。表示形式は実施例1(図10)の場合と同様である。
図12は、図11におけるステップS206のグレーグループ設定テーブルの一例を示す図である。この例では、部品グループ(Group1とGroup1)の他に、所属先が未定のシンボルを収容するグレーグループを2個(Gray1とGray2)作成している。そして、シンボルfunc3,func4,var1を所属先未定のシンボルとし、func3,var1はグレーグループGray1に、func4はグレーグループGray2に収容している。その際ユーザは、シンボル間の参照関係(図6及び図7)を参照することで、参照関係の強いシンボル同士を、同一のグレーグループに設定することができる。図12では、参照関係にあるfunc3とvar1とを、同一のグレーグループGray1に設定している。このように、関係のあるシンボル同士を同一のグレーグループに設定することにより、グレーグループ単位での参照関係の判別を容易にすることができる。グレーグループの数は所属未定のシンボル数の状況に応じて、適宜増加すればよい。
図13は、図12のようにグレーグループを指定した際の、シンボル間の参照関係を示す図である。
図14は、ステップS207にて、部品グループ間参照関係解析部19により作成した部品グループ判定テーブルの一例を示す図である。指定したグレーグループを各部品グループに配置させた場合の、部品グループ間の参照量を解析したものである。部品グループ間の参照量を求める際は、図3記載のフローチャートと同様の処理を行う。
GRAY_GROUP_NAMEは、グレーグループの名称であり、ここではGray1とGray2が存在する。GROUP_PATTERNは、上記グレーグループを、どの部品グループに配置するかを示す配置パターンである。本例では部品グループが2グループ、グレーグループが2グループあるため、配置パターンの組み合わせは2×2=4通り存在する。このため4パターンの試行を行う。
部品グループ間の参照量として、「Metrics:Func Ref」は関数参照量を、「Metrics:Var Ref」は変数参照量を、「Metrics:SUM」は上記「Metrics:Func Ref」と「Metrics:Var Ref」の合計を示す。例えば配置パターン(a)の場合は、Gray1、Gray2ともGroup1に配置しており、関数参照が2箇所、変数参照が1箇所、参照量の合計は3箇所であることを示している。
各配置パターンのうち参照量の合計が最小となるもの、すなわち「Metrics:SUM」の値が最小となるは配置パターン(d)の場合で、Gray1をGroup1に、Gray2をGroup2に配置した場合である。
図15は、図14の部品グループ判定テーブルの内容を、各配置パターンにおけるシンボル間の参照関係を示す図として表したものである。図15(a)〜(d)は、図14の配置パターン(a)〜(d)に対応している。図15(d)は、Gray1をGroup1に、Gray2をGroup2に配置した場合で、Group1とGroup2の参照量は1関数0変数となり参照量が最小となることが分かる。
前記実施例1の場合には、ユーザが指定した部品グループ間のシンボル参照関係は図9に示すように合計5箇所(参照量=5)であった。これに対し本実施例2では、所属未定のシンボルを収容するグレーグループを設定し、グレーグループの所属先を参照量が最小となるように自動的に判定処理を実施する。その結果、図14(d)のように部品グループ間参照関係は1箇所となり、参照関係がより少ない部品グループに分割できる。
このように実施例2では、入力されたプログラム中の各シンボルをユーザの所望する部品規模、部品グループ単位で分割するだけでなく、所属先を一旦未定とするグレーグループを設けてその所属先を部品グループ間の参照量が最小になるように自動的に配置するので、参照関係が最小になる箇所でプログラムを分割することができる。
図16は、本発明によるプログラム部品化支援装置の実施例3を示すブロック構成図である。ここでは、前記実施例1、実施例2と異なる構成の部分について説明する。
部品グループ間参照指針指定部22は、ユーザから部品グループ間の参照指針を受け付け部品グループ間参照指針指定テーブル(図18)を作成する。部品グループ間参照指針記憶部23は、作成した部品グループ間参照指針指定テーブルを記憶する。部品グループ間参照関係解析部19は、部品グループ指定情報記憶部18の情報と部品グループ間参照指針記憶部23の情報を基に、グレーグループをどの部品グループに所属させるべきかを判定し、判定結果に従い再構成した部品グループ間の参照関係を解析する。このように実施例3では、部品グループ間のシンボル参照指針を指定することで、よりユーザの要望に応える形でプログラムを分割するものである。
図17は、実施例3に係るプログラム部品化支援装置の全体の処理を示すフローチャートである。ここで、ステップS301からステップS306の動作は、実施例2(図11のS201からS206)と同様のため説明を省略する。
(ステップS307)ステップS306にて部品グループ指定部17によりグレーグループを指定した後、ユーザは部品グループ間参照指針指定部22にて、部品グループ間参照指針を指定する。参照指針の指定には、図18に示すテーブルを利用する。参照指針とは、部品グループ間の参照関係の許可/不許可をユーザが指定するものである。例えばライブラリのように、他のプログラム部品から参照されるがそのプログラム部品は他のプログラム部品を参照しない、というプログラム部品を作成する場合などにこのような参照指針の指定は有効となる。指定した部品グループ間参照指針指定テーブルは、部品グループ間参照指針記憶部23に記憶される。
(ステップS308)部品グループ間参照関係解析部19にて、グレーグループを所属させる部品グループを変えた各種配置パターンについて、部品グループ関参照指針指定テーブル(図18)で指定した参照指針条件をどれだけ満足するかを判定する。そして判定結果を「POLICY_MATCH」という指標で表現した部品グループ判定テーブル(図19)を作成する。
(ステップS309)S308の判定結果に基づき、解析結果記憶部20に記憶された部品グループ配置テーブルを、グレーグループを最適に配置した構成に更新する。そして表示制御部21は、グレーグループを最適に配置した部品グループの構成または部品グループ間参照関係を表示する。表示形式は実施例1(図10)の場合と同様である。
図18は、ステップS307にて、部品グループ間の参照指針を指定した部品グループ間参照指針指定テーブルの一例を示す図である。ユーザは、部品グループ間参照指針指定部22にて、部品グループ間参照指針指定テーブルを編集する。図18では、2個の部品グループ間の参照関係を指定したもので、対象となる部品グループから参照先部品グループへ参照を許す場合は○印を、参照を許さない場合は×印を付している。ここでは、Group1からGroup2への参照を許し、Group2からGroup1への参照を許さないように指定している。
図19は、ステップS308にて、部品グループ間参照関係解析部19により判定した部品グループ判定テーブルの一例を示す図である。グレーグループを各部品グループに配置させた各配置パターンにおいて、前記図14で述べた部品グループ間の参照量(Metrics)を解析するとともに、部品グループ間参照指針に指定された条件をどれだけ満足しているかを示す指標「POLICY_MATCH」を設けている。
「POLICY_MATCH」記載の値は、Metrics算出の際に求めた部品グループ間の参照ごとに、その参照が部品グループ間参照指針指定テーブル(図18)に記載の参照指針を満たしているかを判定する。例えば、Group1からGroup2に参照があった場合には図18の指針(○印)を満たし、Group2からGroup1に参照があった場合には図18の指針(×印)を満たさない。このようにして全ての参照に対して指針を満足する割合(参照指針との一致度)を求め、百分率で表示している。
算出した「POLICY_MATCH」の値を比較し、その値(一致度)が最大となるもののうち、参照量が最小となる配置パターンを最適構成と判定する。本例では、配置パターン(a)と(d)とが共に「POLICY_MATCH」=100%となる。このうち、部品グループ間参照関係が最小「Metrics:SUM」=1となるパターン(d)を最適構成とする。
前記実施例2の場合には、所属未定のシンボルを収容するグレーグループを設定し、グレーグループの所属先を参照量が最小となるように自動的に判定した。これに対し実施例3では、ユーザはさらに部品グループ間のシンボル参照指針を指定することができ、その参照指針を最も満足するようにグレーグループの所属先を自動的に判定するものである。
このように実施例3では、入力されたプログラム中の各シンボルをユーザの所望する部品規模、部品グループ単位で分割するだけでなく、ユーザの所望する部品グループ間の参照条件を反映させることができるので、よりユーザの要望に応える形でプログラムを分割することができる。
本発明によれば、ソフトウェア開発における保守業務等でプログラムを好適に部品化するプログラム部品化支援装置を提供し、既存資産のプログラムの再利用性及びメインテナンス性の向上に大きく寄与する。
本発明によるプログラム部品化支援装置の実施例1を示すブロック構成図。 実施例1に係るプログラム部品化支援装置の全体の処理を示すフローチャート。 図2におけるステップS106の処理を、詳細に記述したフローチャート。 シンボル情報解析結果を示すシンボルテーブルの例。 シンボル間の参照関係の解析を説明する図。 シンボル間参照関係テーブルの例を示す図。 シンボル間の参照関係を表示した一例を示す図。 部品グループ配置テーブルの例。 部品グループ間参照関係テーブルの一例を示す図。 部品グループ間の参照関係を表示した画面の一例。 実施例2に係るプログラム部品化支援装置の全体の処理を示すフローチャート。 グレーグループ設定テーブルの一例を示す図。 図12のようにグレーグループを指定した際のシンボル間の参照関係を示す図。 部品グループ判定テーブルの一例を示す図。 図14の内容をシンボル間の参照関係を示すように表した図。 本発明によるプログラム部品化支援装置の実施例3を示すブロック構成図。 実施例3に係るプログラム部品化支援装置の全体の処理を示すフローチャート。 部品グループ間参照指針指定テーブルの一例を示す図。 部品グループ判定テーブルの一例を示す図。
符号の説明
11…ユーザ入力部、12…対象プログラム指定部、13…プログラム記憶部、14…シンボル情報解析部、15…シンボル情報記憶部、16…参照関係記憶部、17…部品グループ指定部、18…部品グループ指定情報記憶部、19…部品グループ間参照関係解析部、20…解析結果記憶部、21…表示制御部、22…部品グループ間参照指針指定部、23…部品グループ間参照指針記憶部。

Claims (2)

  1. 指定されたプログラムからシンボルを抽出し、抽出したシンボル間の参照関係を解析するシンボル情報解析部と、
    該シンボル情報解析部で解析したシンボル間の参照関係をユーザに提示し、ユーザから、各シンボルを分類させるための部品グループの設定と各シンボルをどの部品グループに所属させるかの指定を受け付ける部品グループ指定部と、
    上記シンボル情報解析部の解析結果を参照して、上記部品グループ指定部にて受け付けた部品グループの指定に従い、指定された部品グループ間の参照関係を解析する部品グループ間参照関係解析部と、
    該部品グループ間参照関係解析部の解析結果を表示させる表示制御部と、
    ユーザから前記部品グループ間の参照指針の指定を受け付ける部品グループ間参照指針指定部を備え、
    前記部品グループ指定部は、前記シンボルを分類する際に一部のシンボルについてはその所属先を一旦未定とするグレーグループに収容して受け付け、
    前記部品グループ間参照関係解析部は、上記部品グループ間参照指針指定部にて受け付けた参照指針の指定を満足するように前記グレーグループをどの部品グループに所属させるべきかを判定して所属先を決定することで部品グループを再構成することを特徴とするプログラム部品化支援装置。
  2. 請求項1記載のプログラム部品化支援装置において、
    前記部品グループ間参照関係解析部は、前記グレーグループの所属先を変えた各種配置パターンについて前記指定された参照指針との一致度を求め、該一致度が最大となるもののうち、前記部品グループ間の参照量が最小となる配置パターンを最適構成として決定することを特徴とするプログラム部品化支援装置。
JP2007006659A 2007-01-16 2007-01-16 プログラム部品化支援装置 Expired - Fee Related JP4996262B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007006659A JP4996262B2 (ja) 2007-01-16 2007-01-16 プログラム部品化支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007006659A JP4996262B2 (ja) 2007-01-16 2007-01-16 プログラム部品化支援装置

Publications (2)

Publication Number Publication Date
JP2008176364A JP2008176364A (ja) 2008-07-31
JP4996262B2 true JP4996262B2 (ja) 2012-08-08

Family

ID=39703363

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007006659A Expired - Fee Related JP4996262B2 (ja) 2007-01-16 2007-01-16 プログラム部品化支援装置

Country Status (1)

Country Link
JP (1) JP4996262B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5462213B2 (ja) * 2011-03-28 2014-04-02 株式会社日立製作所 ソフトウェア部品作成支援装置および方法
JP5762857B2 (ja) * 2011-07-01 2015-08-12 株式会社日立製作所 ソフトウェア開発成果物間の依存関係評価装置及び評価方法
JP7387734B2 (ja) 2018-11-29 2023-11-28 バンティック インコーポレイテッド イベント駆動型アプリケーションのルールに基づく割り当て

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03144729A (ja) * 1989-10-30 1991-06-20 Matsushita Electric Ind Co Ltd ソフトウェア自動生成装置およびその方法
JPH0520037A (ja) * 1991-07-09 1993-01-29 Mitsubishi Electric Corp モジユール分配方式
JPH08314702A (ja) * 1995-05-19 1996-11-29 Nec Corp 視覚プログラミングシステムおよび図形プログラム編集方法
JP2000020298A (ja) * 1998-06-29 2000-01-21 Hitachi Ltd ソフトウェア開発支援装置

Also Published As

Publication number Publication date
JP2008176364A (ja) 2008-07-31

Similar Documents

Publication Publication Date Title
US7552418B2 (en) Systems and methods for creating and providing templates in a single file
US7581206B2 (en) Systems and methods for creating and providing templates in a single file
US6757889B1 (en) Source program checking device and program and method for same
US20030193521A1 (en) Rapid GUI refacing of a legacy application
US20060026559A1 (en) Automatic content completion of valid values for method argument variables
JP3842592B2 (ja) 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム
JP2009129179A (ja) プログラム並列化支援装置およびプログラム並列化支援方法
US10976899B2 (en) Method for automatically applying page labels using extracted label contents from selected pages
EP3103002B1 (en) Batch generation of links to documents based on document name and page content matching
US20080034288A1 (en) Text-Driven Macros Integrated with a Help System of a Computer Program
JPH0683598A (ja) ジョブフロー仕様書自動作成方法
WO2014120142A1 (en) Systems and methods for determining compatibility between software licenses
US20050015746A1 (en) Orchestration designer
US9557989B2 (en) Comparison and merging of IC design data
CN113283216A (zh) 网页内容显示方法、装置、设备及存储介质
US7769773B1 (en) Relevant rule inspector for hierarchical documents
US20040044954A1 (en) Data-bidirectional spreadsheet
JP4996262B2 (ja) プログラム部品化支援装置
JP4826120B2 (ja) 業務仕様作成支援システム及び方法
US20040064788A1 (en) System and method for generating source code for an XML application
JP2006277127A (ja) 修正プログラムの比較方法
JP2006294019A (ja) 汎用ソフトウェア要件アナライザ
US20030154462A1 (en) Software maintenance material generation apparatus and generation program therefor
JP4813906B2 (ja) 画面パターン分類装置、画面パターン分類方法及び画面パターン分類プログラム
JP2011113298A (ja) 流用ソースコード解析システム及びプログラム並びに記録媒体

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070116

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080409

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080409

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120307

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120424

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120511

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

Free format text: PAYMENT UNTIL: 20150518

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees