JP6902513B2 - ソースコード生成支援装置およびソースコード生成支援方法 - Google Patents

ソースコード生成支援装置およびソースコード生成支援方法 Download PDF

Info

Publication number
JP6902513B2
JP6902513B2 JP2018165636A JP2018165636A JP6902513B2 JP 6902513 B2 JP6902513 B2 JP 6902513B2 JP 2018165636 A JP2018165636 A JP 2018165636A JP 2018165636 A JP2018165636 A JP 2018165636A JP 6902513 B2 JP6902513 B2 JP 6902513B2
Authority
JP
Japan
Prior art keywords
parts
component
existing
specifications
disassembled
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.)
Active
Application number
JP2018165636A
Other languages
English (en)
Other versions
JP2020038521A (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
Original Assignee
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2018165636A priority Critical patent/JP6902513B2/ja
Publication of JP2020038521A publication Critical patent/JP2020038521A/ja
Application granted granted Critical
Publication of JP6902513B2 publication Critical patent/JP6902513B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

本発明は、ソースコード生成支援装置およびソースコード生成支援方法に関するものである。
従来、ソフト開発の効率や品質を向上する手段として、コード記述を部品化し、それら部品の組合せによってコード全体を作成する技術がある。
この技術には、部品を活用することでコード記述工数を削減できる利点がある。また、部品およびその組合せを事前にテストしておくことで、テストを省略できるという利点もある。
このようなコード生成に関連する従来技術としては、例えば、ソフトウェアを部品化したソフトウェア部品の機能を実現するための典型的な処理の内容を示す処理内容情報と見出語とが対応付けられたテンプレートデータを記憶するテンプレート記憶手段と、前記ソフトウェア部品に対応するソースコード内から前記見出語を検出し、検出した見出語を含む部分と前記テンプレートデータ内で該見出語に対応付けられている処理内容情報とをマッピングし、マッピングした結果を保持するマッピングテーブルを作成する処理・ソースマッピング手段と、前記マッピングテーブルを参照して、前記ソースコードの所定部分と該所定部分に対応する処理内容情報とを、両者の対応関係がわかるように表示する処理・ソースマッピング結果表示手段と、を備えることを特徴とするソフトウェア再利用支援装置(特許文献1参照)などが提案されている。
特許第5800657号公報
上述の従来技術では、ユーザが入力したコードを部品として登録する際、構文解析を行うことで可変項目の自動設定が可能となり、汎用性の高い部品を効率的に作成することができる。
ところが、上述の技術を採用し一定数の部品を揃えたとしても、顧客や機種ごとの細かいカスタマイズが求められるケースが存在する。この場合、部品の組合せにて作成したコードを開発者が直接変更する事態も起こりうる。
また上述の変更が、部品の可変項目ではなく不変項目を対象とするものであれば、変更後のコードに対するテストが必要になる。しかしながら、この変更が軽微であると認識された場合、必要であるはずのテストが省略される恐れがある。テストの省略は、不具合の見逃しにつながる可能性が高い。
また変更後のコードを新たな部品として登録する際、使用頻度の低い部品まで闇雲に登録するケースもある。こうした登録を行うとすれば、部品登録の際のレビューやテストにかかるコストが徒に増加する。また登録部品の検索効率も低下する。
そこで本発明の目的は、部品を活用したソースコード生成の効率および精度を良好なも
のとする技術を提供することにある。
上記課題を解決する本発明のソースコード生成支援装置は、ユーザによる変更が施されたコードを保持する記憶部と、前記コードにおける前記変更の対象箇所を含む部品に対し、記号実行を行うことで当該部品の仕様を抽出する処理と、前記抽出した仕様と、1または複数の既存部品ないし当該既存部品の1または複数の分解部品の仕様とを比較する処理と、前記比較の結果、前記部品の仕様と一致する1または複数の既存部品ないし分解部品を特定できた場合、前記コードにおける前記対象箇所の部品を前記特定した1または複数の既存部品ないし分解部品で置換する処理と、を実行する演算部と、を含むことを特徴とする。
また、本発明のソースコード生成支援方法は、ユーザによる変更が施されたコードを保持する記憶部を備える情報処理装置が、前記コードにおける前記変更の対象箇所を含む部品に対し、記号実行を行うことで当該部品の仕様を抽出する処理と、前記抽出した仕様と、1または複数の既存部品ないし当該既存部品の1または複数の分解部品の仕様とを比較する処理と、前記比較の結果、前記部品の仕様と一致する1または複数の既存部品ないし分解部品を特定できた場合、前記コードにおける前記対象箇所の部品を前記特定した1または複数の既存部品ないし分解部品で置換する処理と、を実行することを特徴とする。
本発明によれば、部品を活用したソースコード生成の効率および精度を良好なものとできる。
本実施形態のソースコード生成支援装置の構成例を示す図である。 本実施形態のテンプレート部品例を示す図である。 本実施形態のブロック部品の例1を示す図である。 本実施形態のブロック部品の例2を示す図である。 本実施形態の生成コードの例1を示す図である。 本実施形態の変更後生成コードの例を示す図である。 本実施形態におけるソースコード生成支援装置のハードウェア構成例を示す図である。 本実施形態のソースコード生成支援方法のフロー例1を示す図である。 本実施形態の変更部品の例を示す図である。 本実施形態のソースコード生成支援方法のフロー例2を示す図である。 本実施形態の部品の仕様例を示す図である。 本実施形態のソースコード生成支援方法のフロー例3を示す図である。 本実施形態のソースコード生成支援方法のフロー例4を示す図である。 本実施形態の既存部品組合せの例を示す図である。 本実施形態の画面例1を示す図である。 本実施形態のブロック部品の例3を示す図である。 本実施形態のソースコード生成支援方法のフロー例5を示す図である。 本実施形態の分解前の部品の例を示す図である。 本実施形態の分解部品の例を示す図である。 本実施形態のソースコード生成支援方法のフロー例6を示す図である。 本実施形態の画面例2を示す図である。 本実施形態のソースコード生成支援方法のフロー例7を示す図である。 本実施形態のソースコード生成支援方法のフロー例8を示す図である。 本実施形態のソースコード生成支援方法のフロー例9を示す図である。 本実施形態のソースコード生成支援方法のフロー例10を示す図である。 本実施形態の生成コード2の例を示す図である。
−−−システム構成−−−
以下に本発明の実施形態について図面を用いて詳細に説明する。図1は、本実施形態のソースコード生成支援装置100の構成例を示す図である。図1に示すソースコード生成支援装置100は、部品を活用したソースコード生成の効率および精度を良好なものとするコンピュータ装置である。
このソースコード生成支援装置100は、ソフト開発を行うベンダー、SIer等が運用する情報処理装置である。ソフト開発の担当者らは、このソースコード生成支援装置100を利用し、既存の部品(所定規模のコード記述。以下、既存部品)を適宜組合せるなどしてソースコード全体の生成を効率的に遂行する。また、機能が重複する、すなわち代替可能な既存部品の削除や、新たな部品登録の必要性の的確な判断等を通じて、部品規模の最適化を図ることとなる。
こうした本実施形態のソースコード生成支援装置100は、既存部品保持部110、コード作成部111、コード保持部112、コード編集部113、変更部品特定部114、部品仕様抽出部115、変更部品仕様保持部116、部品仕様比較判定部117、部品追加部118、部品削除部119、部品結合部120、および、コード更新部121を備えている。
このうち既存部品保持部110は、ソースコード生成に用いる上述の既存部品を保持、管理するものである。既存部品保持部110が保持する既存部品は、図2〜4に示す、テンプレート部品125およびブロック部品126を含む。
テンプレート部品125は、生成対象となりうるソースコードの1部または全部の雛形である。一方、ブロック部品126は、テンプレート部品125に組み込まれ、呼び出し対象となるコード記述である。
テンプレート部品125は、図2に示すようにブロック部品126を組み込む箇所として、「処理呼び出し」のコメントが一部に含まれている。この「処理呼び出し」箇所に、ブロック部品126が組み込まれる。
また、コード作成部111は、ソースコード生成支援装置100にアクセスしてきたユーザ端末等に対し、ソースコード生成用のユーザインターフェイスを提供してユーザ指示を取得し、当該ユーザ指示に応じてソースコード(例えば、図5の生成コード127)の生成を行うものである。
上述のユーザインターフェイスは、例えば、ユーザ指示に応じたテンプレート部品を、ユーザ端末等に画面出力させ、このテンプレート部品に対するブロック部品の設定指示を受け付ける、といった一連のインターフェイスである。なお、ユーザ端末は、上述のソフト開発の担当者が操作する端末である。
また、コード保持部112は、コード作成部111が生成したソースコードを格納、管理するものである。
また、コード編集部113は、コード保持部112が保持するソースコードに対し、例えば、上述のユーザ端末から受けた修正要求に応じて、対応する修正処理を実行する。こ
の修正処理を経たソースコードを、変更後生成コード128(例えば、図6の変更後生成コード128)とする。
また、変更部品特定部114は、コード保持部112が保持するソースコードに対し、コード編集部113を介してユーザ端末から受けた修正内容、すなわちソースコードにおける変更箇所を特定する。
また、部品仕様抽出部115は、変更部品特定部114が特定した変更箇所を含む部品に対し、記号実行を行うことで当該部品の仕様を抽出するものである。
また、変更部品仕様保持部116は、部品使用抽出部115が抽出した仕様を保持する。
また、部品仕様比較判定部117は、変更部品仕様保持部116が保持する仕様と、1または複数の既存部品(既存部品保持部110から呼び出す)ないし当該既存部品の1または複数の分解部品の仕様とを比較するものである。
また、部品追加部118は、上述の部品仕様比較判定部117での比較の結果、部品使用抽出部115が抽出した、変更箇所における部品の仕様と一致する既存部品ないし分解部品を特定できなかった場合、当該変更箇所を含む部品を、新たな既存部品として既存部品保持部110に格納するものである。
また、部品削除部119は、新たな既存部品の格納後の既存部品保持部110から、削除候補である1または複数の既存部品、および、その他の1または複数の既存部品を抽出し、ここで抽出した既存部品の間で仕様の比較を実行し、当該比較の結果、仕様の一致がみられた場合、削除候補である1または複数の既存部品を、既存部品保持部110から削除する。
また、部品結合部120は、下記のコード更新部による置換がなされた後のコード保持部112から、所定のソースコードを抽出し、当該ソースコードを構成する部品のうち互いに所定関係を有する部品群が、コード保持部112で保持する他のソースコードでも同じ関係を持って使用されているか判定し、この判定の結果、上述の部品群が上述の他のソースコードでも同じ関係を持って使用されている場合、当該部品群を構成する各部品を結合した新たな既存部品を既存部品保持部110に格納し、また、当該部品群を既存部品保持部110から削除するものである。
また、コード更新部121は、上述の部品仕様比較判定部117での比較の結果、上述の変更箇所を含む部品の仕様と一致する、1または複数の既存部品ないし分解部品を特定できた場合、処理対象のソースコード(コード保持部112が保持している)における対象箇所の部品を、特定した1または複数の既存部品ないし分解部品で置換するものである。
−−−ハードウェア構成−−−
また、ソースコード生成支援装置100のハードウェア構成は以下の如くとなる。図7は、本実施形態のソースコード生成支援装置100のハードウェア構成例を示す図である。 ソースコード生成支援装置100は、SSD(Solid State Drive)やハードディスクドライブなど適宜な不揮発性記憶素子で構成される記憶部101、RAMなど揮発性記憶素子で構成されるメモリ103、記憶部101に保持されるプログラム102をメモリ103に読み出すなどして実行し装置自体の統括制御を行なうとともに各種判定、演算及び制御処理を行なうCPUなどの演算部104、ユーザからのキー入力
や音声入力を受け付ける入力部105、処理データの表示を行うディスプレイ等の出力部106、プログラムやデータ等を外部媒体から読み取るインターフェイスたる外部媒体入出力部107、を備える。
なお、記憶装置101内には、本実施形態のソースコード生成支援装置として必要な機能を実装する為のプログラム102に加えて、テンプレート部品125、ブロック部品126、生成コード127、変更後生成コード128、変更部品129、部品仕様130、既存部品組合せ131、分解前部品132、分解部品133、および、更新後生成コード134、が少なくとも記憶されている。
−−−フロー例1−−−
以下、本実施形態におけるソースコード生成支援方法の実際手順について図に基づき説明する。以下で説明するソースコード生成支援方法に対応する各種動作は、ソースコード生成支援装置100がメモリ等に読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
図8は、本実施形態におけるソースコード生成支援方法のフロー例1を示す図である。ここでは、既存部品の組合せにて作成されたソースコード(図5の生成コード127参照)が、コード編集部113を介して開発者によって変更された状況(図6の変更後生成コード128)を想定する。ただし、この変更の前後の当該ソースコードは、いずれもコード保持部112に保持されている。また、上述の変更は、既存部品における可変項目ではなく不変項目を対象とするものであったとする。
そこでまず、変更部品特定部114は、コード保持部112において、上述の変更の前後のそれぞれのソースコード(以後の生成コード)を読み出し、これらソースコードの間で各行を照合するなどして差分、すなわちコード変更箇所を特定する(s10)。
続いて、変更部品特定部114は、上述の変更後の生成コードにおいて、s10で特定したコード変更箇所の前後のコードを検索し、ラベルを表すコメント文を取得する(s11)。図6の変更後生成コード128の例であれば、“ブロック部品「ファイル削除」ここから”と、“ブロック部品「ファイル削除」ここまで”が、コメント分に該当する。
また、変更部品特定部114は、s11で取得したコメント文を参照することで、コード変更箇所がどの部品に含まれるかを特定し(s12)、処理を終了する。上述の例の場合、“ブロック部品「ファイル削除」ここから”と、“ブロック部品「ファイル削除」ここまで”との間にあるコード、すなわちブロック部品(図9の変更部品129)が相当する。
−−−フロー例2−−−
続いて、部品仕様抽出部115における処理について説明する。図10は、本実施形態におけるソースコード生成支援方法のフロー例2を示す図である。
上述のフロー例1における、変更部品特定部114による変更部品特定を経て、部品仕様抽出部115は以下の処理を実行する。
すなわち部品仕様抽出部115は、s12で特定された変更部品129に対し、記号実行を行って、当該変更部品129の仕様すなわちステートメントを取得する(s20)。こうして得られるステートメントの例を図11に示す。ここで例示するように、変更部品129の探索で特定されたパスごとに、当該パスのパス条件、変数状態、および、ファイ
ル操作、といった値が仕様が、その有無に応じて特定されることとなる。
続いて、部品仕様抽出部115は、s20で得たステートメントが、変数状態とファイル操作のいずれについての値であるか判定する(s21)。
上述の判定の結果、当該ステートメントが変数状態についての値である場合(s21:変数)、部品仕様抽出部115は、従来の記号実行と同様に、s20で得ているステートメントに基づいて、パス条件あるいはパス実行結果を更新する(s22)。
一方、上述の判定の結果、当該ステートメントがファイル操作についての値である場合(s21:ファイル操作)、部品仕様抽出部115は、取得したステートメントを、ファイル操作情報として保持する(s23)。
続いて、部品仕様抽出部115は、全てのパスについて探索を完了したか判定する(s24)。
上述の判定の結果、全てのパスについての探索が完了していない場合(s24:n)、部品仕様抽出部115は、処理をs20に戻す。
他方、上述の判定の結果、全てのパスについて探索を完了している場合(s24:y)、部品仕様抽出部115は、処理を終了する。
−−−フロー例3〜5−−−
続いて、部品仕様比較判定部117における処理について説明する。図12、図13、および、図17は、それぞれ本実施形態におけるソースコード生成支援方法のフロー例3、4、5を示す図である。
まず、部品仕様比較判定部117は、上述のフロー例2において部品仕様抽出部115が得た変更部品の仕様を取得する(s30)。
続いて、部品仕様比較判定部117は、既存部品保持部110において、例えばランダムに選定した所定の既存部品同士を組合せ、既存部品組合せ(図14の既存部品組合せ131参照)を作成する(s31)。
また、部品仕様比較判定部117は、s31で作成した既存部品組合せ131の仕様を、例えば部品仕様抽出部115により抽出する(s32)。
続いて、部品仕様比較判定部117は、s32で得た既存部品組合せ131の仕様と変更部品の仕様とが一致するか判定する(s33)。この仕様の一致の判定は、例えば、図11で例示した部品仕様130におけるパス条件、変数状態、および、ファイル操作、の各値が全て一致することをもって、「仕様が一致」と判定する。
上述の判定の結果、仕様の一致が判明した場合(s33:y)、部品仕様比較判定部117は、処理をs36に遷移させる。
他方、上述の判定の結果、仕様の不一致が判明した場合(s33:n)、部品仕様比較判定部117は、上述の既存部品組合せの仕様と変更部品の仕様を、出力部106にて表示させ(図15の画面500参照)、両者の仕様は一致するとみなしてよいか否かについてユーザ指示を受け付ける。
また、部品仕様比較判定部117は、上述の画面を介して仕様一致とみなす旨のユーザ指示を受けたか判定する(s34)。
上述の判定の結果、仕様は一致とみなす旨のユーザ指示を受けていた場合(s34:y)、部品仕様比較判定部117は、処理をs36に遷移させる。
他方、上述の判定の結果、仕様は一致とみなす旨のユーザ指示を受けていない場合(s34:n)、部品仕様比較判定部117は、全ての既存部品組合せを作成したか判定する(s35)。
上述の判定の結果、既存部品の全ての組合せに関して既存部品組合せの作成を終えていない場合(s35:n)、部品仕様比較判定部117は、処理をs31に遷移させる。
他方、上述の判定の結果、全ての既存部品組合せを作成済みである場合(s35:y)、部品仕様比較判定部117は、処理をs37(図13のフロー)に遷移させる。
他方、上述のs33、s34での判定の結果、処理をs36に遷移させた部品仕様比較判定部117は、当該既存部品組合せで、変更部品の代替が可能と判定する(s36)。このように変更部品と置換可能と判定された既存部品組合せの例を図16に例示する。
一方、上述のs35での判定の結果、s37に処理を遷移させた部品仕様比較判定部117は、既存部品保持部110における所定の既存部品を分解して、分解部品を作成する(s37)。
この分解部品の作成手順については、図17のフローに基づき詳細説明する。この場合、部品仕様比較判定部117は、既存部品保持部110から分解対象の既存部品(図18の分解前の部品132参照)を取得する(s50)。
また、部品仕様比較判定部117は、当該既存部品において、ネスト構造外の行を分解点として選択する(s51)。
続いて、部品仕様比較判定部117は、s51で選択した分解点で当該既存部品を分解した場合、予め定めた所定条件を満たすか判定する(s52)。
上述の判定の結果、所定条件を満たさない場合(s52:n)、部品仕様比較判定部117は、処理をs51に遷移させる。
他方、上述の判定の結果、所定条件を満たす場合(s52:y)、部品仕様比較判定部117は、選択した分解点で既存部品を分解して分解部品(図19の分解部品133参照)を作成し(s53)、本フローを終了する。
ここで図13のフローに関する説明に戻る。s37で分解部品を作成した部品仕様比較判定部117は、既存部品保持部110における所定の既存部品と、s53で得た分解部品133とを組合せることで、既存分解部品組合せを作成する(s38)。
また、部品仕様比較判定部117は、既存分解部品組合せの仕様を、部品仕様抽出部115により抽出する(s39)。
続いて、部品仕様比較判定部117は、s39で得た既存分解部品組合せの仕様と、s30で得ている変更部品の仕様とが一致するか判定する(s40)。
上述の判定の結果、仕様が一致するものであった場合(s40:y)、部品仕様比較判定部117は、既存分解部品で変更部品の代替が可能と判定し(s41)、処理を終了する。
他方、上述の判定の結果、仕様が一致しないものであった場合(s40:n)、部品仕様比較判定部117は、図15と同様の画面を出力部106に表示させ、両者の仕様は一致するとみなしてよいか否かのユーザ指示を受け付ける。
この場合、部品仕様比較判定部117は、仕様は一致するとみなしてよい旨のユーザ指示を受け付けたか判定する(s42)。
上述の判定の結果、仕様は一致するとみなしてよい旨のユーザ指示を受けた場合(s42:y)、部品仕様比較判定部117は、既存分解部品で変更部品の代替が可能と判定し(s41)、処理を終了する。
他方、上述の判定の結果、仕様は一致とみなしてよい旨のユーザ指示を受けていない場合(s42:n)、部品仕様比較判定部117は、全ての既存分解部品組合せを作成したか判定する(s43)。
上述の判定の結果、既存分解部品の全ての組合せに関して既存分解部品組合せの作成を終えていない場合(s43:n)、部品仕様比較判定部117は、処理をs38に遷移させる。
他方、上述の判定の結果、全ての既存分解部品組合せを作成している場合(s43:y)、部品仕様比較判定部117は、全ての分解方法を試したか判定する(s44)。
上述の判定の結果、全ての分解方法を試し終えていない場合(s44:n)、部品仕様比較判定部117は、処理をs37に遷移させる。
他方、上述の判定の結果、全ての分解方法を試し終えていた場合(s44:y)、部品仕様比較判定部117は、変更部品を新規の既存部品として登録すべきであると判定し(s45)、処理を終了する。
−−−フロー例6−−−
続いて、部品追加部118における処理について説明する。図20は、本実施形態におけるソースコード生成支援方法のフロー例6を示す図である。
この場合、部品追加部118は、部品仕様比較判定部117による判定結果、すなわち部品仕様比較判定結果が、既存部品で代替可能、分解部品で代替可能、および、新規部品登録要、のいずれであったか判定する(s60)。
上述の判定の結果、部品仕様比較の判定結果が、既存部品で代替可能である旨を示すものであった場合であった場合(s60:既存部品で代替可能)、部品追加部118は処理を終了する。
他方、上述の判定の結果、部品仕様比較の判定結果が、分解部品で代替可能である旨を示すものであった場合(s60:分解部品で代替可能)、部品追加部118は、分解部品を新規部品として登録して良いとのユーザ指示を受け付けたか判定する(s61)。このユーザ指示を受け付けるインターフェイスの例として、図21にユーザ確認画面600を
示す。
この判定の結果、当該ユーザ指示を受けていなかった場合(s61:n)、部品追加部118は、処理を終了する。
他方、上述の判定の結果、当該ユーザ指示を受けている場合(s61:y)、部品追加部118は、当該分解部品を新規の既存部品として既存部品保持部110に登録し(s62)、処理を終了する。
一方、上述の判定の結果、部品仕様比較の判定結果が、新規部品登録要である旨を示すものであった場合(s60:新規部品登録要)、部品追加部118は、当該変更部品を新規部品として登録して良いとのユーザ指示を受け付けたか否か判定する(s63)。このユーザ指示を受け付けるインターフェイスの例として、図21にユーザ確認画面600を示す。
この判定の結果、当該ユーザ指示を受けていなかった場合(s63:n)、部品追加部118は、処理を終了する。
他方、上述の判定の結果、当該ユーザ指示を受けている場合(s63:y)、部品追加部118は、当該変更部品を新規の既存部品として既存部品保持部110に登録し(s64)、処理を終了する。
−−−フロー例7−−−
続いて、変更部品が複数存在する場合における、部品仕様比較判定部117ないし部品追加部118の処理について説明する。図22は、本実施形態におけるソースコード生成支援方法のフロー例7を示す図である。ここでは、部品追加部118が処理を実行するものとして説明を行う。
まず、部品追加部118は、複数の変更部品の全てに対して以降の処理(s71〜77)を実行したか判定する(s70)。
上述の判定の結果、複数の変更部品全てについて処理を実行済みであることが判明した場合(s70:y)、部品追加部118は、処理を終了する。なお、部品追加部118は、各変更部品に関して、本フローの処理を完了するごとに所定のフラグを付与するなどして、処理の未済ステータスを例えばメモリ上で管理しているものとする。
一方、上述の判定の結果、複数の変更部品のうち未処理のものが残っている場合(s70:n)、未処理の変更部品を1つ選択する(s71)。
また、部品追加部118は、s71で選択した変更部品の他の、残りの変更部品(未処理のもの)が存在するか、すなわちs71で選択したもの以外に未処理のものが残っておらず、他の変更部品は直近までのフローにおけるs73で全て取得したか判定する(s72)。
この判定の結果、他の全ての変更部品を取得済みであった場合(s72:y)、部品追加部118は、処理をs70に遷移させる。
他方、上述の判定の結果、他の全ての変更部品を取得済みではなかった場合(s72:n)、未処理である他の変更部品を取得する(s73)。
また、部品追加部118は、s71で選択した変更部品を新規部品として登録することで、s73で選択した他の変更部品と仕様が一致する既存部品組合せ、あるいは分解部品組合せを作成できるか判定する(s74)。
この判定の結果、s71で選択した変更部品を新規部品として登録することで、s73で選択した他の変更部品と仕様が一致する既存部品組合せ、あるいは分解部品組合せを作成できない場合(s74:n)、処理をs72に遷移させる。
他方、上述の判定の結果、s71で選択した変更部品を新規部品として登録することで、s73で選択した他の変更部品と仕様が一致する既存部品組合せ、あるいは分解部品組合せを作成できる場合(s74:y)、当該変更部品に関して管理している置換可能数をインクリメントし、処理をs72に遷移させる。この置換可能数は、変更部品のうち、既存部品や分解部品などとの置換可能性がより高いもの、すなわち部品間の置換に関しての汎用性が高い、ことを示す値と言える。
こうした一連の処理を繰り返し実行した結果、上述のs70における判定にて、全ての変更部品について実行したことが判明した場合(s70:y)、部品追加部118は、置換可能数が最も大きい変更部品を新規部品として既存部品保持部110に登録する(s76)。
また、部品追加部118は、新規部品として登録しなかった変更部品、つまり、置換可能数が最大ではなかった変更部品について、部品仕様比較判定部117を呼び出して該当処理を再実行し(s77)、処理を終了する。
−−−フロー例8−−−
続いて、部品削除部119における処理について説明する。図23は、本実施形態におけるソースコード生成支援方法のフロー例8を示す図である。
この場合、部品削除部119は、既存部品保持部110で保持する既存部品のうち、例えば、入力部105を介して受けた削除候補部品に関する選択指示に基づき、対応する既存部品を抽出する(s80)。
続いて、部品削除部119は、s80で選択した削除候補部品とは別の既存部品を、既存保持部110から適宜ルールで複数抽出し、既存部品組合せを作成する(s81)。
また、部品削除部119は、s80で選択した削除候補部品、および、s81で得た既存部品組合せ、のそれぞれの仕様を部品仕様抽出部115により特定する(s82)。
続いて、部品削除部119は、s82で得た、削除候補部品の仕様と既存部品組合せの仕様とが一致するか判定する(s83)。
上述の判定の結果、仕様が一致しない場合(s83:n)、部品削除部119は、全ての既存部品組合せを作成したか判定する(s84)。
この判定の結果、全ての既存部品に関して組合せを作成済みでなかった場合(s84:n)、部品削除部119は、処理をs81に遷移させる。
他方、上述の判定の結果、全ての既存部品組合せを作成済みである場合(s84:y)、部品削除部119は、処理をs87に遷移させる。
一方、上述のs83での判定の結果、仕様が一致するものである場合(s83:y)、部品削除部119は、削除候補部品を削除してよいとのユーザ指示を受けているか判定する(s85)。このユーザ指示を受け付けるインターフェイスの例は、図21のユーザ確認画面600が該当する。
上述の判定の結果、ユーザ指示を受けている場合(s85:y)、部品削除部119は、s80で選択した削除候補部品を既存部品保持部110から削除する(s86)。
他方、上述の判定の結果、ユーザ指示を受けていない場合(s85:n)、部品削除部119は、処理をs87に遷移させる。
s87における部品削除部119は、全ての削除候補部品を既存部品保持部110から選択したか判定する(s87)。
この判定の結果、全ての削除候補部品を選択済みではなかったる場合(s87:n)、部品削除部119は、処理をs80に遷移させる。
一方、上述の判定の結果、全ての削除候補部品を選択済みであった場合(s87:y)、部品削除部119は、処理を終了する。
−−−フロー例9−−−
続いて、部品結合部120における処理について説明する。図24は、本実施形態におけるソースコード生成支援方法のフロー例9を示す図である。
この場合まず、部品結合部120は、コード保持部112が保持する全てのソースコードについて、以下のs91〜97の各処理を実行したか判定する(s90)。
上述の判定の結果、全てのソースコードについて処理を完了している場合(s90:y)、部品結合部120は、処理を終了する。
一方、上述の判定の結果、コード保持部112におけるソースコードのうち未処理のものが残されている場合(s90:n)、部品結合部120は、コード保持部112から未処理のソースコードを所定ルールで1つ取得する(s91)。部品結合部120は、コード保持部112における各ソースコードについて、本フローの完了に伴う所定のフラグを付与する制御を行い、この結果を例えばメモリ上で管理しているものとする。
また、部品結合部120は、s91で得たソースコードに関して、当該ソースコードに含まれる全ての部品について以下のs93〜s97を実行したか判定する(s92)。
上述の判定の結果、当該ソースコードが含む全ての部品に関して処理が完了している場合(s92:y)、部品結合部120は、処理をs90に遷移させる。
他方、上述の判定の結果、当該ソースコードが含む部品のうち処理が未完了のものが存在している場合(s92:n)、部品結合部120は、当該ソースコードを構成する部品で未処理のものの中から所定の部品“A”を取得する(s93)。部品結合部120は、処理対象のソースコードが含む各部品について、本フローの完了に伴う所定のフラグを付与する制御を行い、この結果を例えばメモリ上で管理しているものとする。
また、部品結合部120は、上述のソースコードにおいて、s93で得た部品Aの直後に配置されている部品“B”を取得する(s94)。
続いて、部品結合部120は、上述の部品“A”を使用している、すなわち含んでいる他のソースコードをコード保持部112から取得する(s95)。
また、部品結合部120は、部品“A”を使用している他の全てのソースコードにおいて、部品“A”の直後に部品“B”が使用されているか判定する(s96)。
この判定の結果、他のソースコードのうち部品“A”の直後に部品“B”が使用されていないものも存在する場合(s96:n)、部品結合部120は、処理をs92に遷移させる。
他方、上述の判定の結果、他の全てのソースコードにおいて、部品“A”の直後に部品“B”が使用されていることが判明した場合(s96:y)、部品結合部120は、部品“A”と部品“B”の組合せを新規の既存部品として、既存部品保持部110に登録し(s97)、処理を終了する。
−−−フロー例10−−−
続いて、コード更新部121における処理について説明する。図25は、本実施形態におけるソースコード生成支援方法のフロー例10を示す図である。
この場合、コード更新部121は、部品仕様比較判定部117における処理結果、すなわち部品仕様比較判定結果が、新規部品登録要、分解部品で代替可能、および、既存部品で代替可能、のいずれであったか判定する(s100)。
上述の判定の結果、部品仕様比較判定結果が「新規部品登録要」であった場合(s100:)、コード更新部121は、処理を終了する。
他方、上述の判定の結果、部品仕様比較判定結果が「分解部品で代替可能」であった場合(s100:分解部品で代替可能)、コード更新部121は、変更後生成コード128における変更部品を分解部品で置換し(s101)、処理を終了する。
一方、上述の判定の結果、部品仕様比較判定結果が「既存部品で代替可能」であった場合(s100:既存部品で代替可能)、コード更新部121は、変更後生成コード128における変更部品を既存部品で置換し(s102)、処理を終了する。
こうしたコード更新部121による、ソースコードにおける変更部品の、分解部品ないし既存部品での置換、の具体例については、図26の更新後生成コード134に示す。
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
こうした本実施形態によれば、部品を活用したソースコード生成の効率および精度を良好なものとできる。
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態のソースコード生成支援装置において、前記記憶部は、前記既存部品を保持するものであり、前記演算部は、前記比較の結果、前記特定した1または複数の分解部品を、新たな前記既存部品として記憶部に格納する処理を更に実行するものである、としてもよい。
これによれば、既存部品を分解して得た分解部品を既存部品として以後活用可能となり
、ひいては、部品を活用したソースコード生成の効率および精度をさらに良好なものとできる。
また、本実施形態のソースコード生成支援装置において、前記演算部は、前記新たな既存部品の格納後の記憶部から、削除候補である1または複数の既存部品、および、その他の1または複数の既存部品を抽出し、前記抽出した既存部品の間で前記仕様の比較を実行し、当該比較の結果、仕様の一致がみられた場合、前記削除候補である1または複数の既存部品を、前記記憶部から削除する処理を更に実行するものである、としてもよい。
これによれば、既存部品として記憶部に格納したもののうち、幅広く活用できる有用なものを残すことが可能となり、ひいては、部品を活用したソースコード生成の効率および精度をさらに良好なものとできる。
また、本実施形態のソースコード生成支援装置において、前記演算部は、前記置換がなされた後の記憶部から、所定のコードを抽出し、当該コードを構成する部品のうち互いに所定関係を有する部品群が、前記記憶部で保持する前記コード以外の他のコードでも同じ関係を持って使用されているか判定し、前記判定の結果、前記部品群が前記他のコードでも同じ関係を持って使用されている場合、当該部品群を構成する各部品を結合した新たな既存部品を記憶部に格納し、前記部品群を記憶部から削除する処理を更に実行するものである、としてもよい。
これによれば、常に記述されやすい部品群を既存部品として記憶部に格納し、以後活用可能でき、ひいては、部品を活用したソースコード生成の効率および精度をさらに良好なものとできる。
また、本実施形態のソースコード生成支援装置において、前記演算部は、前記比較の結果、前記特定ができなかった前記部品が複数存在する場合、当該複数の前記部品のうち所定の1つとそれ以外の他部品に関して、前記1つの部品により、前記他部品と仕様が同じ既存部品の組合せを作成できるか、および、前記1つの部品を分解して作成した分解部品により、前記他部品と仕様が同じ既存部品の組合せを作成できるか、を判定する処理と、前記判定の結果、既存部品の組合せを作成できる事象の数を、前記1つの部品に関する置換可能数としてカウントする処理と、前記複数の前記部品のうち、前記置換可能数が最大のものを、新たな前記既存部品として記憶部に格納する処理と、を更に実行するものである、としてもよい。
これによれば、ユーザ作成の部品で既存部品の置換対象とできなかったもののうち、他の部品との関係において、最も幅広く活用可能なものを特定し、既存部品として活用することが可能となる。ひいては、部品を活用したソースコード生成の効率および精度をさらに良好なものとできる。
また、本実施形態のソースコード生成支援装置において、前記演算部は、前記比較の結果、前記部品の仕様と部分一致する1または複数の既存部品ないし分解部品を特定できた場合、当該特定した1または複数の既存部品ないし分解部品に関するユーザ判断を所定装置から受け付け、当該ユーザ判断が仕様は一致しているとみなす旨を示すものであれば、前記コードにおける前記対象箇所の部品を前記特定した1または複数の既存部品ないし分解部品で置換するものである、としてもよい。
これによれば、既存部品等の仕様との完全一致をみないがユーザが認めた部品について、既存部品との置換を行うことが可能となり、ひいては、部品を活用したソースコード生成の効率および精度をさらに良好なものとできる。
また、本実施形態のソースコード生成支援装置において、前記演算部は、前記部品に対する前記記号実行において、プログラム実行パスを探索する際に、変数値に関する条件に加え、当該プログラム実行パスで実行されるファイル操作をパス条件として抽出し、前記変数値に関する条件および前記パス条件を、前記部品の仕様として抽出するものである、としてもよい。
これによれば、仕様として重要な観点であるファイル操作についても考慮可能となり、ひいては、部品を活用したソースコード生成の効率および精度をさらに良好なものとできる。
また、本実施形態のソースコード生成支援装置において、前記演算部は、前記既存部品から1または複数の分解部品を生成する処理を更に実行するものであって、当該分解部品の生成に際し、前記既存部品のコードにおけるネスト構造外の行を分解点として取得し、当該分解点のうち所定の分解点にてコードを分解した場合に得られる分解部品が規定の条件を満たすか判定し、前記判定の結果、前記規定の条件を満たす場合、前記所定の分解点にて既存部品を分解することで分解部品を生成するものである、としてもよい。
これによれば、部品として所定の意義を備える規模のコードを分解部品として適宜に生成し、これを仕様の一致判定等の所定処理に適用可能となる。ひいては、部品を活用したソースコード生成の効率および精度をさらに良好なものとできる。
100 ソースコード生成支援装置
101 記憶部
102 プログラム
103 メモリ
104 演算部
105 入力部
106 出力部
107 外部媒体入出力部
110 既存部品保持部
111 コード作成部
112 コード保持部
113 コード編集部
114 変更部品特定部
115 部品仕様抽出部
116 変更部品仕様保持部
117 部品仕様比較判定部
118 部品追加部
119 部品削除部
120 部品結合部
121 コード更新部
125 テンプレート部品
126 ブロック部品
127 生成コード
128 変更後生成コード
129 変更部品
130 部品仕様
131 既存部品組合せ
132 分解前部品
133 分解部品
134 更新後生成コード

Claims (9)

  1. ユーザによる変更が施されたコードを保持する記憶部と、
    前記コードにおける前記変更の対象箇所を含む部品に対し、記号実行を行うことで当該部品の仕様を抽出する処理と、前記抽出した仕様と、1または複数の既存部品ないし当該既存部品の1または複数の分解部品の仕様とを比較する処理と、前記比較の結果、前記部品の仕様と一致する1または複数の既存部品ないし分解部品を特定できた場合、前記コードにおける前記対象箇所の部品を前記特定した1または複数の既存部品ないし分解部品で置換する処理と、を実行する演算部と、
    を含むことを特徴とするソースコード生成支援装置。
  2. 前記記憶部は、前記既存部品を保持するものであり、
    前記演算部は、前記比較の結果、前記特定した1または複数の分解部品を、新たな前記既存部品として記憶部に格納する処理を更に実行するものである、
    ことを特徴とする請求項1に記載のソースコード生成支援装置。
  3. 前記演算部は、
    前記新たな既存部品の格納後の記憶部から、削除候補である1または複数の既存部品、および、その他の1または複数の既存部品を抽出し、前記抽出した既存部品の間で前記仕様の比較を実行し、当該比較の結果、仕様の一致がみられた場合、前記削除候補である1または複数の既存部品を、前記記憶部から削除する処理を更に実行するものである、
    ことを特徴とする請求項2に記載のソースコード生成支援装置。
  4. 前記演算部は、
    前記置換がなされた後の記憶部から、所定のコードを抽出し、当該コードを構成する部品のうち互いに所定関係を有する部品群が、前記記憶部で保持する前記コード以外の他のコードでも同じ関係を持って使用されているか判定し、前記判定の結果、前記部品群が前記他のコードでも同じ関係を持って使用されている場合、当該部品群を構成する各部品を結合した新たな既存部品を記憶部に格納し、前記部品群を記憶部から削除する処理を更に実行するものである、
    ことを特徴とする請求項1に記載のソースコード生成支援装置。
  5. 前記演算部は、
    前記比較の結果、前記特定ができなかった前記部品が複数存在する場合、
    当該複数の前記部品のうち所定の1つとそれ以外の他部品に関して、前記1つの部品により、前記他部品と仕様が同じ既存部品の組合せを作成できるか、および、前記1つの部品を分解して作成した分解部品により、前記他部品と仕様が同じ既存部品の組合せを作成できるか、を判定する処理と、
    前記判定の結果、既存部品の組合せを作成できる事象の数を、前記1つの部品に関する置換可能数としてカウントする処理と、
    前記複数の前記部品のうち、前記置換可能数が最大のものを、新たな前記既存部品として記憶部に格納する処理と、
    を更に実行するものである、
    ことを特徴とする請求項1に記載のソースコード生成支援装置。
  6. 前記演算部は、
    前記比較の結果、前記部品の仕様と部分一致する1または複数の既存部品ないし分解部品を特定できた場合、当該特定した1または複数の既存部品ないし分解部品に関するユーザ判断を所定装置から受け付け、当該ユーザ判断が仕様は一致しているとみなす旨を示すものであれば、前記コードにおける前記対象箇所の部品を前記特定した1または複数の既
    存部品ないし分解部品で置換するものである、
    ことを特徴とする請求項1に記載のソースコード生成支援装置。
  7. 前記演算部は、
    前記部品に対する前記記号実行において、プログラム実行パスを探索する際に、変数値に関する条件に加え、当該プログラム実行パスで実行されるファイル操作をパス条件として抽出し、前記変数値に関する条件および前記パス条件を、前記部品の仕様として抽出するものである、
    ことを特徴とする請求項1に記載のソースコード生成支援装置。
  8. 前記演算部は、
    前記既存部品から1または複数の分解部品を生成する処理を更に実行するものであって、当該分解部品の生成に際し、前記既存部品のコードにおけるネスト構造外の行を分解点として取得し、当該分解点のうち所定の分解点にてコードを分解した場合に得られる分解部品が規定の条件を満たすか判定し、前記判定の結果、前記規定の条件を満たす場合、前記所定の分解点にて既存部品を分解することで分解部品を生成するものである、
    ことを特徴とする請求項1に記載のソースコード生成支援装置。
  9. ユーザによる変更が施されたコードを保持する記憶部を備える情報処理装置が、
    前記コードにおける前記変更の対象箇所を含む部品に対し、記号実行を行うことで当該部品の仕様を抽出する処理と、
    前記抽出した仕様と、1または複数の既存部品ないし当該既存部品の1または複数の分解部品の仕様とを比較する処理と、
    前記比較の結果、前記部品の仕様と一致する1または複数の既存部品ないし分解部品を特定できた場合、前記コードにおける前記対象箇所の部品を前記特定した1または複数の既存部品ないし分解部品で置換する処理と、
    を実行することを特徴とするソースコード生成支援方法。
JP2018165636A 2018-09-05 2018-09-05 ソースコード生成支援装置およびソースコード生成支援方法 Active JP6902513B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018165636A JP6902513B2 (ja) 2018-09-05 2018-09-05 ソースコード生成支援装置およびソースコード生成支援方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018165636A JP6902513B2 (ja) 2018-09-05 2018-09-05 ソースコード生成支援装置およびソースコード生成支援方法

Publications (2)

Publication Number Publication Date
JP2020038521A JP2020038521A (ja) 2020-03-12
JP6902513B2 true JP6902513B2 (ja) 2021-07-14

Family

ID=69738034

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018165636A Active JP6902513B2 (ja) 2018-09-05 2018-09-05 ソースコード生成支援装置およびソースコード生成支援方法

Country Status (1)

Country Link
JP (1) JP6902513B2 (ja)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03223926A (ja) * 1990-01-29 1991-10-02 Shimadzu Corp プログラム部品の二重登録防止装置
JPH0916389A (ja) * 1995-07-03 1997-01-17 Nippon Telegr & Teleph Corp <Ntt> プログラム部品自動生成方法及び装置
JPH09292986A (ja) * 1996-04-26 1997-11-11 Hitachi Ltd 部品抽出方法
JPH10198557A (ja) * 1997-01-08 1998-07-31 Mitsubishi Electric Corp 画面設計支援システム及び画面設計支援ツールを記録した媒体
JP4613214B2 (ja) * 2008-02-26 2011-01-12 日立オートモティブシステムズ株式会社 ソフトウェア自動構成装置
WO2013161057A1 (ja) * 2012-04-27 2013-10-31 株式会社日立製作所 ソースコード検査方法及び装置
US20140143762A1 (en) * 2012-11-21 2014-05-22 Fujitsu Limited Symbolic execution of dynamic programming languages
JP5903038B2 (ja) * 2012-12-26 2016-04-13 株式会社日立製作所 ソースコード等価性検証装置、および、ソースコード等価性検証方法
US20180181485A1 (en) * 2015-04-28 2018-06-28 Hitachi, Ltd. Source code equivalence verification device and source code equivalence verification method
WO2016189721A1 (ja) * 2015-05-28 2016-12-01 三菱電機株式会社 ソースコード評価装置及びソースコード評価方法及びソースコード評価プログラム

Also Published As

Publication number Publication date
JP2020038521A (ja) 2020-03-12

Similar Documents

Publication Publication Date Title
CN108762743B (zh) 一种数据表操作代码生成方法及装置
JP4368336B2 (ja) カテゴリ設定支援方法及び装置
US20080120601A1 (en) Information processing apparatus, method and program for deciding priority of test case to be carried out in regression test background of the invention
US9632754B2 (en) Auto generation and linkage of source code to test cases
US9626164B1 (en) Test-driven development module for repository-based development
CN109308254B (zh) 一种测试方法、装置及测试设备
CN111026433A (zh) 基于代码变更历史的软件代码质量问题自动修复方法、系统及介质
US11163560B1 (en) Methods and arrangements to process comments
JP6440895B2 (ja) ソフトウェア分析装置及びソフトウェア分析方法
CN111290785A (zh) 评估深度学习框架系统兼容性的方法、装置、电子设备以及存储介质
JP5900193B2 (ja) 更新判定プログラムおよび更新判定装置
JP2016126552A (ja) テスト選択プログラム、テスト選択方法、及びテスト選択装置
US10678864B2 (en) Analysis model preparing system, programming apparatus, and analysis model preparing method
KR20200073700A (ko) 문서를 생성하고 관리하기 위한 장치 및 방법
JP2006285707A (ja) 業務仕様作成支援システム及び方法
US10241899B2 (en) Test input information search device and method
JP6902513B2 (ja) ソースコード生成支援装置およびソースコード生成支援方法
CN114201382A (zh) 测试用例生成方法、装置、存储介质和电子设备
JP7284687B2 (ja) マッピングシステム及びマッピング方法
CN114564228A (zh) 一种应用程序更新方法、装置、计算机设备及存储介质
CN114237588A (zh) 一种代码仓库选择方法、装置、设备及存储介质
CN114281688A (zh) 一种无码或低码的自动化用例管理方法和装置
CN114385155A (zh) vue项目可视化工具生成方法、装置、设备及存储介质
CN109019217B (zh) 一种电梯控制软件现场调试系统
US20190026795A1 (en) Evaluation device and evaluation method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200828

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210609

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210615

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210621

R150 Certificate of patent or registration of utility model

Ref document number: 6902513

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150