JP6851210B2 - 分析支援装置、分析支援方法および分析支援プログラム - Google Patents
分析支援装置、分析支援方法および分析支援プログラム Download PDFInfo
- Publication number
- JP6851210B2 JP6851210B2 JP2017020554A JP2017020554A JP6851210B2 JP 6851210 B2 JP6851210 B2 JP 6851210B2 JP 2017020554 A JP2017020554 A JP 2017020554A JP 2017020554 A JP2017020554 A JP 2017020554A JP 6851210 B2 JP6851210 B2 JP 6851210B2
- Authority
- JP
- Japan
- Prior art keywords
- source code
- elements
- script
- analysis support
- conversion
- 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
Links
- 238000004458 analytical method Methods 0.000 title claims description 102
- 238000000034 method Methods 0.000 title claims description 52
- 230000006870 function Effects 0.000 claims description 91
- 238000006243 chemical reaction Methods 0.000 claims description 73
- 238000012545 processing Methods 0.000 claims description 36
- 230000001419 dependent effect Effects 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 11
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000003672 processing method Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013102 re-test Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Description
このようなプログラムでは、具体例として、テーブル上のある行に定義された関数ポインタが示す関数に、その関数ポインタと同じ行に定義された変数が引数として代入されるといった処理が行われる。この場合、これらの関数ポインタと変数はお互いに変更による影響を受ける。つまり、依存関係が成り立つ。このように、テーブルの処理方法に応じて、テーブルの行単位もしくは列単位で局所的に依存関係が生じる。
また、ソフトウェア構造解析ツールはソースコードの全ての依存関係をそのまま表示するため、使用者が興味のない要素の依存関係も表示され、解析結果が煩雑になり、確認し難いことも課題になっている。
前記ソースコードを、前記ソースコードに含まれる前記複数の要素のうちの互いに依存する要素を関連付けた形式に変換する変換規則を記述したスクリプトを取得するスクリプト取得部と、
前記スクリプトに記述された前記変換規則に従って、前記ソースコードを変換する変換部とを備えた。
***構成の説明***
図1を用いて、本実施の形態に係る分析支援装置100の構成について説明する。
図1に示すように、分析支援装置100は、コンピュータである。
分析支援装置100は、プロセッサ910、記憶装置920、入力インタフェース930、出力インタフェース940、および通信装置950といったハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを含む。
記憶部150は、メモリ921により実現される。また、記憶部150は、補助記憶装置922のみ、あるいは、メモリ921および補助記憶装置922で実現されてもよい。記憶部150の実現方法は任意である。
なお、分析支援プログラムプロダクトとは、分析支援プログラム620が記録された記憶媒体および記憶装置である。分析支援プログラムプロダクトは、外観に関わらず、コンピュータ読み取り可能なプログラムをロードしているものを指す。
図2は、本実施の形態に係る分析支援装置100の分析支援方法610および分析支援プログラム620の分析支援処理S100を示すフローチャートである。分析支援プログラム620は、以下に示す各処理をコンピュータである分析支援装置100に実行させる。
分析支援装置100は、複数の要素を含むソースコード51の分析を支援する。分析支援装置100は、テーブルの要素の変換規則8を簡略的に記述したスクリプト52を取得し、そのスクリプト52をもとに、ソースコード51のテーブル処理部分をソフトウェア構造解析ツールで正確に依存関係を解釈できる記述形式に変換する。ソースコード51のテーブル処理部分をソフトウェア構造解析ツールで正確に依存関係を解釈できる記述形式とは、ソースコードに含まれる複数の要素のうちの互いに依存する要素を関連付けた形式である。分析支援装置100は、依存関係分析支援装置ともいう。
ステップS110において、ソースコード取得部110は、ソースコード取得処理S10を実行する。ソースコード取得処理S10において、ソースコード取得部110は、記憶部150からソースコード51を取得し、ソースコード51からソースコード51のデータをソースコードデータ5として読み取る。ソースコード取得部110は、ソースコード読取部ともいう。
ソースコード51は、テーブル12に対する処理である関数13を記述する。具体的には、図3に示すように、ソースコード51は、テーブル12である定義テーブルに対する処理である関数13、すなわちmain関数を記述している。
ソースコード51は、テーブル12の要素11として複数の要素511を含む。具体的には、テーブル12である定義テーブルの要素11として、条件1、関数1、引数1、条件2、関数2、引数2、・・・といった複数の要素511を含む。実際には、定義テーブルに設定される関数1および関数2の各々は、関数1および関数2の各々を示す関数ポインタである。具体的には、定義テーブルには条件、関数および引数が複数定義されており、foreach文で定義テーブルから一行ずつ「テーブル定義」として取り出される。そのテーブル定義に含まれる条件が満たされた時に、テーブル定義に含まれる関数が呼び出され、その関数にテーブル定義に含まれる引数が代入される。
以上のように、ソースコード51のmain関数では、定義テーブルのある行に定義された条件1が満たされると、関数ポインタが示す関数1に、その関数1と同じ行に定義された変数が引数1として代入されるといった処理が行われる。この場合、これらの条件1と関数1と変数1とはお互いに変更による影響を受ける。つまり、条件1と関数1と変数1とは依存関係が成り立つ。条件1と関数1と変数1とは、互いに依存する要素14である。このように、テーブルの処理方法に応じて、テーブルの行単位もしくは列単位で局所的に依存関係が生じる。
ステップS120において、スクリプト取得部120は、スクリプト取得処理S20を実行する。スクリプト取得処理S20において、スクリプト取得部120は、ソースコード51を、ソースコード51に含まれる複数の要素511のうちの互いに依存する要素14を関連付けた形式に変換する変換規則8を記述したスクリプト52を取得する。スクリプト52は、複数の要素511を互いに依存する要素14ごとに展開する規則を変換規則8として記述している。また、スクリプト52は、変換規則8と変換規則8を用いて変換する関数7とを含む。図3の例では、変換する関数7は、main関数である。
具体的には、スクリプト取得部120は、記憶部150からスクリプト52を取得する。スクリプト52は予め利用者により生成され、入力インタフェース930を介して記憶部150に記憶されている。スクリプト取得部120は、変換規則8と、変換規則8を用いて変換する関数7であるmain関数とをスクリプト52から抽出する。つまり、スクリプト取得部120は、スクリプト52から、変換する関数7と変換規則8を読み取るスクリプト読取部ともいう。
一行目の「SCRIPT main()」ではmain関数を変換する関数7として変換することを指定している。二行目の「TABLE “定義テーブル”」では「定義テーブル」という名前のテーブル12を扱うことを指定している。一行目で指定された関数は、二行目で指定されたテーブルの行ごとの処理単位で展開されることになる。三行目以降は「定義テーブル」の展開後の関数の雛形および形式を指定している。ここで使われている「$COL[0]」は一行目で指定されたテーブルの一列目をこの位置に挿入することを意味する。
なお、図4の例では、C言語の構文にあわせて書いているが、抽象化した書式を使うことで多言語に対応できる。
スクリプト取得部120は、複数の要素511のうち変換しない要素9を指定したスクリプト52aを取得してもよい。
図5に示すスクリプト52aは、図4で示したスクリプト52に、不要な行を指定する条件を追加したものの例である。スクリプト52aにおいて、2行目の「EXCLUDE COL[n]=X」のように、変換しない要素9を指定することで、分析支援装置100は、n列目の要素がXになる時に、展開しないように指定することができる。
この条件はユーザインタフェースから指定できるものとする。具体例としては、分析支援装置100は、このスクリプト52aにおいて不要なものの条件を、ユーザから入力機器および入力インタフェース930を介して取得する条件取得部を備えていてもよい。
ステップS130において、変換部130は、変換処理S30を実行する。変換処理S30において、変換部130は、スクリプト52に記述された変換規則8に従って、ソースコード51を変換する。変換部130は、ソースコード51に記述された変換する関数7を変換規則8に従って変換し、複数の要素511を互いに依存する要素14ごとに展開する。
具体的には、変換部130は、ソースコードデータ5から変換する関数7を検索する。変換部130は、ソースコード51において見つかった関数13を変換規則8に従って変換し、変換後ソースコードデータ10を生成する。
ステップS140において、変換後コード出力部140は、変換後コード出力処理S40を実行する。変換後コード出力処理S40において、変換後コード出力部140は、変換後ソースコードデータ10を元に変換後ソースコード53を生成する。変換後コード出力部140は、出力インタフェース940を介して、生成した変換後ソースコード53をディスプレイといった出力機器に出力する。
変換部130は、互いに依存する要素14ごとの処理を、複数の関数の各関数に展開する。あるいは、変換部130は、互いに依存する要素14ごとの処理を、一の関数に展開してもよい。
図6において、main_テーブル処理1行目関数とmain_テーブル処理2行目関数とが複数の関数17の例である。ソースコード51は、互いに依存する要素14ごとの処理が、複数の関数17の各関数18において展開されている。すなわち、条件1、関数1および引数1の処理が、main_テーブル処理1行目関数において展開され、条件2、関数2および引数2の処理が、main_テーブル処理2行目関数において展開されている。
以上のように、図6では、定義テーブルの各行に対する処理が一つ一つの関数に展開される。
図7において、main関数が一の関数19の例である。ソースコード51は、互いに依存する要素14ごとの処理が、一の関数19に展開されている。すなわち、条件1、関数1および引数1の処理と、条件2、関数2および引数2の処理とが、一のmain関数において展開されている。
図6では、テーブル定義1列ごとの関数の展開方法を示したが、図7のように一つの関数に定義テーブルの各行に対する処理を展開してもよい。
本実施の形態では、ソースコード取得部110と、スクリプト取得部120と、変換部130と、変換後コード出力部140との機能がソフトウェアで実現される。しかし、変形例として、ソースコード取得部110と、スクリプト取得部120と、変換部130と、変換後コード出力部140との機能がハードウェアで実現されてもよい。
図8に示すように、分析支援装置100は、処理回路909、入力インタフェース930、出力インタフェース940、および通信装置950といったハードウェアを備える。
本実施の形態に係る分析支援装置100では、ソースコードを、ソフトウェア構造解析ツールが依存関係を正確に解釈できる記述形式のソースコードに変換する。よって、本実施の形態に係る分析支援装置100によれば、ソフトウェアの依存関係をより正確かつ簡単に特定することができるようになる。
また、分析支援装置は、1つの装置でなく、複数の装置から構成された分析支援システムでもよい。
なお、上述した実施の形態は、本質的に好ましい例示であって、本発明、その適用物および用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
Claims (8)
- 複数の要素を含むソースコードの分析を支援する分析支援装置において、
前記ソースコードを、前記ソースコードに含まれる前記複数の要素のうちの互いに依存する要素を関連付けた形式に変換する変換規則を記述したスクリプトを取得するスクリプト取得部と、
前記スクリプトに記述された前記変換規則に従って、前記ソースコードを変換する変換部と
を備え、
前記ソースコードは、テーブルの要素として前記複数の要素を含み、
前記スクリプト取得部は、
前記複数の要素を前記互いに依存する要素ごとに展開する規則を前記変換規則として記述した前記スクリプトを取得する分析支援装置。 - 前記ソースコードは、前記テーブルに対する処理である関数を記述し、
前記スクリプト取得部は、
前記変換規則と前記変換規則を用いて変換する前記関数とを前記スクリプトから抽出し、
前記変換部は、
前記ソースコードに記述された前記関数を前記変換規則に従って変換し、前記複数の要素を前記互いに依存する要素ごとに展開する請求項1に記載の分析支援装置。 - 前記変換部は、
前記互いに依存する要素ごとの処理を、一の関数に展開する請求項2に記載の分析支援装置。 - 前記変換部は、
前記互いに依存する要素ごとの処理を、複数の関数の各関数に展開する請求項2に記載の分析支援装置。 - 前記スクリプト取得部は、
前記複数の要素のうち変換しない要素を指定した前記スクリプトを取得する請求項1から請求項4のいずれか1項に記載の分析支援装置。 - 複数の要素を含むソースコードの分析を支援する分析支援装置の分析支援方法において、
スクリプト取得部が、前記ソースコードを、前記ソースコードに含まれる前記複数の要素のうちの互いに依存する要素を関連付けた形式に変換する変換規則を記述したスクリプトを取得し、
変換部が、前記スクリプトに記述された前記変換規則に従って、前記ソースコードを変換する分析支援方法であって、
前記ソースコードは、テーブルの要素として前記複数の要素を含み、
前記スクリプト取得部が、前記複数の要素を前記互いに依存する要素ごとに展開する規則を前記変換規則として記述した前記スクリプトを取得する分析支援方法。 - 複数の要素を含むソースコードの分析を支援する分析支援装置の分析支援プログラムにおいて、
前記ソースコードを、前記ソースコードに含まれる前記複数の要素のうちの互いに依存する要素を関連付けた形式に変換する変換規則を記述したスクリプトを取得するスクリプト取得処理と、
前記スクリプトに記述された前記変換規則に従って、前記ソースコードを変換する変換処理と
をコンピュータである前記分析支援装置に実行させる分析支援プログラムであって、
前記ソースコードは、テーブルの要素として前記複数の要素を含み、
前記スクリプト取得処理は、
前記複数の要素を前記互いに依存する要素ごとに展開する規則を前記変換規則として記述した前記スクリプトを取得する分析支援プログラム。 - 複数の要素を含むソースコードの分析を支援する分析支援装置において、
前記ソースコードに含まれる前記複数の要素のうちの互いに依存する要素を関連付けた形式に前記ソースコードを変換する変換規則に従って、前記ソースコードを変換する変換部を備え、
前記ソースコードは、テーブルの要素として前記複数の要素を含み、
前記変換部は、
前記複数の要素を前記互いに依存する要素ごとに展開する規則を前記変換規則として、前記変換規則に従って、前記ソースコードを変換する分析支援装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017020554A JP6851210B2 (ja) | 2017-02-07 | 2017-02-07 | 分析支援装置、分析支援方法および分析支援プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017020554A JP6851210B2 (ja) | 2017-02-07 | 2017-02-07 | 分析支援装置、分析支援方法および分析支援プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018128792A JP2018128792A (ja) | 2018-08-16 |
JP6851210B2 true JP6851210B2 (ja) | 2021-03-31 |
Family
ID=63172959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017020554A Active JP6851210B2 (ja) | 2017-02-07 | 2017-02-07 | 分析支援装置、分析支援方法および分析支援プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6851210B2 (ja) |
-
2017
- 2017-02-07 JP JP2017020554A patent/JP6851210B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2018128792A (ja) | 2018-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4148527B2 (ja) | 機能テスト・スクリプト生成装置 | |
US9558016B2 (en) | Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product | |
CN107644286B (zh) | 工作流处理方法及装置 | |
US9021428B2 (en) | Troubleshooting visuals and transient expressions in executing applications | |
US9842043B2 (en) | System and method to implement an electronic document based automated testing of a software application | |
US9454466B2 (en) | Explaining partially illegal combinations in combinatorial models | |
JP4395761B2 (ja) | プログラムテスト支援装置およびその方法 | |
US9262125B2 (en) | Contextual focus-agnostic parsing-validated alternatives information | |
CN108228443B (zh) | 一种web应用的测试方法及装置 | |
JP6440895B2 (ja) | ソフトウェア分析装置及びソフトウェア分析方法 | |
US20150143342A1 (en) | Functional validation of software | |
CN111427760B (zh) | 页面测试方法、装置、设备及存储介质 | |
US8813036B2 (en) | Visual representation of a difference between Cartesian product models | |
CN116501415B (zh) | 命令执行方法及装置、电子设备、计算机可读存储介质 | |
US20230367516A1 (en) | Program Detection Method and Apparatus | |
JP6878707B2 (ja) | 試験装置、試験方法および試験プログラム | |
JP6851210B2 (ja) | 分析支援装置、分析支援方法および分析支援プログラム | |
US8949766B2 (en) | Detecting corresponding paths in combinationally equivalent circuit designs | |
CN114115763B (zh) | 打印机平台化产品的配置装置及配置方法 | |
KR20170124752A (ko) | 안티리버싱 코드 검출 방법 및 그 장치 | |
JP6818568B2 (ja) | 通信装置、通信仕様差分抽出方法及び通信仕様差分抽出プログラム | |
US9047428B2 (en) | Determining method, computer product, and determining apparatus | |
JP2012048660A (ja) | 静的解析処理システム、方法、およびプログラム | |
JP7296904B2 (ja) | 開発支援方法、開発支援装置及びプログラム | |
WO2017046941A1 (ja) | アーキテクチャ生成装置およびアーキテクチャ生成プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190919 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200729 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200929 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20201126 |
|
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: 20210209 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210309 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6851210 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |