JP5525459B2 - プログラム改造支援方法およびプログラム改造支援装置 - Google Patents
プログラム改造支援方法およびプログラム改造支援装置 Download PDFInfo
- Publication number
- JP5525459B2 JP5525459B2 JP2011000962A JP2011000962A JP5525459B2 JP 5525459 B2 JP5525459 B2 JP 5525459B2 JP 2011000962 A JP2011000962 A JP 2011000962A JP 2011000962 A JP2011000962 A JP 2011000962A JP 5525459 B2 JP5525459 B2 JP 5525459B2
- Authority
- JP
- Japan
- Prior art keywords
- modification
- remodeling
- location
- data
- program
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
次の実装段階で、プログラミング担当者が、この仕様書を基に実装方針を決定し、実装方針を基にソースコードに対して改造を行う。
最後のレビュー段階で、レビュー担当者がソースコードに対して行われた改造について妥当性の検証を行う。
そこで、ソースコードに対して行われた改造について妥当性を検査する仕組みが必要とされている。
また、特許文献1に記載の装置では、実際のコーディングと同じレベルの詳細な記述のある仕様書が必要になる。このため、仕様書作成時に詳細なコーディングの内容が確定していない場合は利用できないという問題がある。
その他の解決手段については、実施形態中で適宜説明する。
図1は本実施形態に係るプログラム改造支援装置の構成例を示す図である。
プログラム改造支援装置1は、改造予定登録処理部10、構造解析部30、改造内容検証処理部20、入力部40、表示部50、を有する。
入力部40は、キーボードや、マウスなどの入力装置である。
表示部50は、ディスプレイなどの表示装置である。
構造解析部30は、一般的なコンパイラの機能の一部によって実現されるものであり、ソースコードを解析して後記する構造データを出力する。
改造予定登録部11は、ユーザが入力部40を介して入力した改造対象となるプログラムのソースコード(改造前ソースコード101)、同じくユーザが入力部40を介して入力した、予定されている改造内容に関する情報である改造入力データ103を基に、データとして保存したものが改造予定データ800である。
正確には、(1)改造前構造データ104を基に改造予定登録部11は表示部50に改造場所入力画面600のフローチャート表示エリア602(またはソースコード表示エリア601)(図6)を表示する。(2)ユーザは、改造場所入力画面600のフローチャート表示エリア602(またはソースコード表示エリア601)を見て、入力部40を介して改造入力データ103を入力する。(3)改造予定登録部11は改造入力データ103を基とする改造予定データ800を保存する。なお、この手順は、後記して詳細に説明する。
なお、本実施形態では図6で後記する改造場所入力画面600のソースコード表示エリア601や、フローチャート表示エリア602を見たユーザが入力部40を介して改造入力データ103を入力しているが、改造入力データ103を得る方法が他にあれば、必ずしも改造前構造データ104を基にソースコード表示エリア601や、フローチャート表示エリア602を表示する必要はない。あるいは、ソースコード表示エリア601のみを表示するようにしてもよい。
改造前構造データ104とは、改造前ソースコード101に対し、後記する構造解析処理を行うことで生成される構造データである。改造予定データ800、構造データについては後記して説明する。
改造場所特定部21は、改造後ソースコード102から構造解析部30が解析した結果である改造前構造データ104と、改造後構造データ105とから、実際にどこが改造されたのかを特定し、その情報を改造場所特定データ(改造後データ)1100として出力する。
改造内容検証部22は、改造場所特定データ1100と、予測構造データ900とを基に、予定に従って改造が行われているか否かを検証し、その結果である検証結果データ106を表示部50に表示させる。
なお、図1において表示部50は検証結果データ106のみを表示しているようにみえるが、改造入力データ103や、予測構造データ900なども適宜表示する。
図2は、本実施形態に係るプログラム改造支援処理における全体処理の手順を示すフローチャートである(適宜、図1参照)。
まず、プログラミング担当者などのユーザが端末などを使用して改造前ソースコード101を入手する(S1)。なお、ステップS1およびステップS3aは、ユーザによる処理であるため、破線四角で処理を示してある。
次に、ユーザは作成した改造前ソースコード101をプログラム改造支援装置1に入力し、プログラム改造支援装置1の構造解析部30が改造前ソースコード101の構造解析処理を行い(S2)、改造前構造データ104を出力する。構造解析処理については、図3〜図5を参照して後記する。
なお、過去に他の誰かが作成したソースコードを改造前ソースコード101としてもよいし、自分で昔に作成したソースコードを改造前ソースコード101としてもよい。また、ステップS1と、ステップS2では、処理を行うユーザが異なっていてもよい。
そして、ユーザが端末などを使用して改造後ソースコード102を作成する(S3a)。
次に、ユーザは作成した改造後ソースコード102をプログラム改造支援装置1に入力し、プログラム改造支援装置1の構造解析部30が改造後ソースコード102の構造解析処理を行い(S4a)、改造後構造データ105を出力する。構造解析処理については、図3〜図5を参照して後記する。
改造予定登録処理については図6〜図8を参照して後記し、改造予定再現処理については図9を参照して後記する。
なお、ステップS3a〜S4aと、ステップS3b〜S4bはどちらが先に行われてもよいし、並列に作業が行われてもよい。
続いて、プログラム改造支援装置1の改造内容検証部22は実際に行われた改造が、予定に従った改造であったか否かを検証する改造内容検証処理を行う(S6)。
改造内容検証処理は図13〜図15を参照して後記する。
次に、図3〜図5を参照して、本実施形態に関する構造解析処理(図2のステップS2,4a)の説明を、適宜図1を参照しつつ行う。なお、前記したように構造解析処理は一般的なコンパイラを使用して行うことを想定しているが、専用のプログラムを用意してもよい。以降、ソースコード上の命令を適宜「命令」と記載することとする。
図3は、本実施形態に係るソースコード例と、構造データ例を示す図であり、図3(a)がソースコード例、図3(b)が図3(a)のソースコード例に対応する構造データ例、図3(c)が中間語命令の例を示している。なお、ソースコードとしては、C言語を想定しているが、他のプログラミング言語でも適用可能である。また、ここで示すソースコードとは、改造前ソースコード101、改造後ソースコード102の両方を指している。
この構造データは、図4で後記する構造解析処理の結果、生成されるものである。
ソースコード301では、関数303が1つの関数である。また、関数303には、代入演算304、比較演算305、分岐命令306、四則演算307などの命令が含まれている。
中間語命令とは、ソースコード301に含まれる命令を、構造データ302上で表現するための命令であり、一般的にはコンパイルによって出力される。
また、C言語では、ソースコード301の四則演算307のように、加算の処理と、その結果を代入するという複数の処理が同時に記述されている場合がある。このように、複数の処理が同時に記載されている場合、中間語命令は、加算の処理を表す中間語命令320と代入の処理を表す中間語命令321のように、処理ごとに中間語命令を分離して表現する。
図4は、構造解析部における構造解析処理の手順を示すフローチャートである。なお、構造解析部30は、既存のコンパイラの機能の一部をなすものであり、図4の処理も既存のコンパイラに備えられている処理であるため、その処理内容の説明は簡潔なものとする。また、構造解析処理は、改造前ソースコード101および改造後ソースコード102のそれぞれに対して行われる処理である。なお、図4の処理において、ソースコードとは、改造前ソースコード101か、あるいは改造後ソースコード102であることを示すものとする。
次に、構造解析部30は、ステップS101の字句解析で生成したトークンの列に対して、構文解析を行う(S102)。ここで、構造解析部30はソースコードのプログラム言語の文法に則り、トークンの列がどのような計算式を構成しているか、また、1つの関数の範囲はどこまでか、など、トークンの列の構造について解析を行う。また、このとき、トークンの列がプログラム言語の文法に則っているか否かの検証を行う。具体的には、例えば、C言語であれば、最初の中括弧から、この中括弧に対応する中括弧までを1つの関数として認識するなどの解析を行う。
続いて、構造解析部30は、ステップS103の意味解析の結果を元に、ソースコードにおける関数の開始点と終了点を取得し、関数情報生成を行う(S104)。ここで、構造解析部30は、関数情報として、関数名のみを関数情報に登録し、この関数における以降の処理で基本ブロックや中間語命令を追加する。
そして、構造解析部30は、ステップS105で抽出した中間語命令を検証し、基本ブロックの生成が必要か否かの判定を行う(S106)。基本ブロックの生成が必要な場合とは、例えば、ステップS105で変換された中間語命令が、関数の先頭に位置する場合とか、分岐命令の後に続いている場合などである。
ステップS106の結果、基本ブロックの生成が必要な場合(S106→Yes)、構造解析部30は、図3で説明した基本ブロックの定義に従って基本ブロックを生成し(S107)、ステップS109へ処理を進める。
そして、構造解析部30は、処理対象となっている関数内におけるすべての命令を解析したか否かを判定する(S109)。
ステップS109の結果、処理対象となっている関数内において、解析されていない命令が存在する場合(S109→No)、構造解析部30はステップS103へ処理を戻し、次の命令について解析を行う。
ステップS109の結果、処理対象となっている関数内におけるすべての命令を解析している場合(S109→Yes)、構造解析部30は、ソースコードにおけるすべての関数について解析を終了したか否かを判定する(S110)。
ステップS110の結果、ソースコードにおいて、解析されていない関数が存在する場合(S110→No)、構造解析部30はステップS103へ処理を戻し、次の関数について解析を行う。
ステップS110の結果、すべての関数について解析を終了している場合(S110→Yes)、構造解析部30は構造解析処理を終了する。
図5は中間語命令への変換の一例を示す図である(C言語の例)。図5において、左側の欄がソースコードにおける命令であり、右側の欄が対応する中間語命令を示している。
例えば、符号501に示すような代入命令の場合、対応する中間語命令は符号502のようになる。
また、符号503に示すような計算結果をある変数に代入する加算命令の場合、対応する中間語命令は、符号504のような加算を示す中間語命令と、符号505のような変数への代入を示す中間語命令の2つに分割される。
符号506に示すような分岐命令の場合、対応する中間語命令は、符号507のような条件を判定する処理を示す中間語命令と、符号508のような条件にしたがって分岐する処理を示す中間語命令の2つに分割される。
符号509のような条件に従って同じ処理を繰り返し実施するループ命令の場合、対応する中間語命令は、符号510のような条件判定処理の中間語命令と、符号511のような条件に従って分岐する処理の中間語命令と、符号512のようなループ内の処理の終端から、ループの開始まで戻るための分岐命令を示す中間語命令の3つに分割されることになる。
また、このようにすることで、コメントなど、プログラムの処理に直接関連のない部分の除去もできる。従って、ソースコードを中間語命令の形に変換することによって、これ以降の処理で、より正確に、改造前ソースコード101と改造後ソースコード102の検証が行えるようになる。
構造解析部30は、図4のステップS105における中間語命令変換処理(図2のステップS3b)において、図5のような変換規則に従ってソースコードの命令を中間語命令へと変換する。
次に、図6〜図8を参照して、本実施形態に係る改造予定登録処理の説明を、適宜図1を参照しつつ行う。
(改造場所入力画面)
図6は、本実施形態に係る改造場所入力画面の例を示す図である。
改造場所入力画面600は、ソースコード表示エリア601と、フローチャート表示エリア602とを有している。
ソースコード表示エリア601には、改造前ソースコード101が表示されており、フローチャート表示エリア602にはソースコード表示エリア601に表示されているソースコードに対応するフローチャートが表示されている。なお、フローチャート表示エリア602に表示されているフローチャートは、プログラム改造支援装置1によって自動的に生成されるものであるが周知の技術であるのでフローチャート生成処理の説明は省略する。また、フローチャート表示エリア602は省略可能である。
なお、このときユーザによる入力を受け付ける画面は、ソースコード表示エリア601およびフローチャート表示エリア602のどちらでも可能とする。フローチャート表示エリア602で行う場合は、フローチャートにおける各処理について、ソースコード表示エリア601における処理と同様の処理を行えばよい。
また、ウィンドウの表示は、図6のようなソースコード表示エリア601およびフローチャート表示エリア602を同時に表示する形式に限らず、ソースコード表示エリア601や、フローチャート表示エリア602をそれぞれ、あるいはどちらか一方のみを独立に表示するようにしてもよい。
さらに、実装上必要であれば、その他の情報を表示するウィンドウも表示してもよい。
改造場所入力画面600による入力を受け付けると、改造予定登録処理部10は、図7に示す改造情報入力画面を表示する。
図7は、本実施形態に係る改造情報入力画面の例を示す図である。
改造情報入力画面700は、ソースコードの改造予定に関する詳細な情報の入力を受け付けるための画面である。
改造情報入力画面700は、改造が行われる場所を表示する改造場所表示エリア701、改造の内容の入力を受け付ける改造内容入力エリア702、改造内容の概要の入力を受け付ける概要入力エリア703、改造の根拠となる仕様書の記述箇所の入力を受け付ける仕様書情報入力エリア704を有する。
なお、図7に示す改造情報入力画面700は表示の一例であり、実装上必要であれば、上記以外の情報の入力を受け付ける領域を表示してもよい。また、各領域の配置場所も、必ずしも改造情報入力画面700と同じである必要はなく、すべての領域を同時に表示する必要もない。
図7に示すように、改造内容入力エリア702は、「削除」、「上書」、「追加」などが選択可能となっており、これらの改造内容の選択を受け付けられるようになっている。より詳細な情報を入力する場合、ユーザは概要入力エリア703に詳細な情報を入力する。
概要入力エリア703には、ユーザによって入力部40を介して入力される情報であり、予定されている改造の詳細な情報が入力される。概要入力エリア703は省略可能である。
図7の例では、100〜101行目の間に「追加」が行われることを示している。
図8は、本実施形態に係る改造予定データの例を示す図である。
改造予定データ800は、図7の改造情報入力画面700において受け付けた情報(改造入力データ103)を基に改造予定登録部11が生成するデータであり、その内容は改造情報入力画面700で受け付けた情報である。
改造予定データ800は、改造場所と改造入力データ103を関連付けるための識別子801、改造場所の情報である改造場所情報802、処理の追加や削除などを示す改造内容情報803、改造内容の概要情報804、改造の根拠となる仕様書の記述箇所の情報である仕様書情報805である。
このうち、識別子801は改造予定登録部11によって付与されるものである。改造場所情報802は図7の改造情報入力画面700における改造場所表示エリア701の情報であり、改造内容情報803は図7の改造内容入力エリア702の情報であり、概要情報804は図7の概要入力エリア703の情報であり、仕様書情報805は仕様書情報入力エリア704の情報である。
また、改造予定データ800に、識別子801と仕様書情報805を含めることによって、改造場所と改造内容および関連する仕様書の記述との関連付けが可能になり、後記する検証結果確認時に改造内容と仕様書の記述内容の確認を行うことができるようになる。ここで、前記したように「仕様書」とは、改造前ソースコード作成時の仕様書である。本実施形態では、改造前ソースコード作成時の仕様書を参照することはあるが、新たな仕様書などを作成する必要はない。
次に、図9を参照して改造予定再現処理(図2のステップS4b)の説明を、適宜図1を参照しつつ行う。改造予定再現処理では、改造予定再現部12が図6〜図8で説明した改造予定登録処理で入力・登録された予定に従って改造前ソースコード101の改造が行われた場合、予測される構造データである予測構造データ900を生成する。
改造予定再現部12は、改造予定データ800(図8)を基に、予測構造データ900を予測・生成する。このとき、改造予定再現部12は中間語命令と同じ書式で改造内容の情報を埋め込むための中間語命令として、擬似中間語命令901という命令を導入する。つまり、改造予定登録処理に従って行われる改造が確定していないことから、中間語命令を確定することができないため、改造予定再現部12は擬似中間語命令901を使用して予測構造データ900を生成する。
接頭語902は擬似中間語命令であることを示すものであり、改造予定再現部12によって付与される。
擬似中間語命令名称903は、図8における改造内容情報803と対応する。つまり、図7の改造内容入力エリア702で「追加」が選択されていれば、図9の例のように「insert」となり、「削除」が選択されていれば「delete」となる。
擬似中間語命令名称903によって、擬似中間語命令901が挿入された場所に、どのような改造が行われる予定であるかを表現することができる。
擬似処理内容904は、改造予定データ800との関連付けのため、図8の識別子801が挿入される。このように、擬似処理内容904に識別子801を使用することによって、擬似中間語命令901が挿入された場所と、改造予定データ800における仕様書の情報(仕様書情報805)とを関連付けることができる。
以上、図9で示したように、改造予定再現処理で擬似中間語命令を挿入することで、後記する処理で、新たな仕様書を必要とせずに改造後ソースコード102に対する改造内容の検証ができるようになる。
次に、図10および図12を参照して、改造場所特定処理(図2のステップS5)の説明を、適宜図1を参照しつつ行う。改造場所特定処理では、改造場所特定部21が、改造前構造データ104と、改造後構造データ105とから、実際の改造における改造場所を特定する。
図10は、本実施形態に係る改造場所特定処理の手順を示すフローチャートである。この処理において、改造場所特定部21は図4の構造解析処理で生成した改造前構造データ104および改造後構造データ105の比較を行い、異なっている箇所を検出すると、検出した異なっている箇所に擬似中間語命令を挿入する処理を行う。
次に、改造場所特定部21は、改造前ソースコード101の構造を図4の構造解析処理で解析した改造前構造データ104から中間語命令(改造前中間語命令)を1つ取得する(S202)。
図11(a)のように、現在、処理対象となっている改造前中間語命令が「A2」であり、処理対象となっている改造後中間語命令が「B1」である場合、処理対象となっている改造後中間語命令「B1」の後の改造後中間語命令に、処理対象となっている改造前中間語命令と同じ「A2」があれば、改造場所特定部21は「追加」と判定する。
ステップS207の結果、解析を行っていない中間語命令が存在する場合(S207→No)、改造場所特定部21はステップS201へ処理を戻し、次の改造後中間語命令および改造前中間語命令について解析を行う。
ステップS207の結果、すべての中間語命令について解析を行っている場合(S207→Yes)、改造場所特定部21は改造場所特定データ1100を出力して(S208)、処理を終了する。
図12は、改造場所特定処理結果の例を示す図である。
図12(a)には、上段に構造データ、下段にソースコードを示しており、左列に改造前、中列に改造後、右列に改造場所特定処理結果を示す。
なお、図12(a)における改造場所特定処理結果が図1における改造場所特定データ1100となる。
図12(a)から、改造前ソースコード101から生成した構造データ(改造前構造データ)と、改造後ソースコード102から生成した構造データ(改造後構造データ)を、図10におけるステップS203で比較すると、中間語命令1101が挿入されていることがわかる。これは、改造後ソースコード102において、命令1102が挿入されたことを示している。
改造場所特定部21は、このように改造によって挿入された命令である中間語命令1101を、擬似中間語命令1103で置き換える。
次に、図13〜図15を参照して、改造内容検証処理(図2のステップS5)の説明を、適宜図1を参照しつつ行う。改造内容検証処理では、改造内容検証部22が、図10の処理で生成された改造場所特定データ1100と、図9で説明した改造予定再現処理で生成された予測構造データ900とを比較することによって、予定に従って改造が行われているか否かを判定し、その判定結果を表示部50に表示する。
図13は、本実施形態に係る改造内容検証処理の手順を示すフローチャートである。
まず、改造内容検証部22は、改造場所特定データ1100から基本ブロック(改造後基本ブロック)を取得する(S301)。
次に、改造内容検証部22は、改造予定再現部12によって改造内容を再現した予測構造データ900から、ステップS301で取得した改造後基本ブロックと類似する基本ブロックである類似基本ブロックを検索し(S302)、類似基本ブロックが検出されたか否かを判定する(S303)。類似基本ブロックの検出基準としては、基本ブロック内において、一致する中間語命令がの数が一定数以上あり、かつ、改造場所特定データ1100および予測構造データ900上で、処理対象となっている基本ブロックの前の基本ブロック同士、または後の基本ブロック同士でも、一致する中間語命令の数が一定数以上あることなどである。
そして、改造内容検証部22は、ステップS201で取得された改造後基本ブロックと、類似基本ブロックにおいて、中間語命令の形式が一致しているか否かを判定する(S306)。なお、ここでの中間語命令とは擬似中間語命令を含んでおり、その形式とは、擬似中間語命令であるか否かに関するものである。
ステップS306の結果、不一致である場合(S306→No)、改造内容検証部22は「NG」を検証結果データ106に登録し(S304)、ステップS309へ処理を進める。なお、このとき、改造内容検証部22は、類似基本ブロック側が擬似中間語命令であれば、予測構造データ900の擬似処理内容904(図9)の識別子と、不一致が検出された中間語命令の行番号を「NG」の情報とともに検証結果データ106に登録する。類似基本ブロック側が擬似中間語命令でなければ、不一致が検出された中間語命令の行番号を「NG」の情報とともに検証結果データ106に登録する。なお、ここで、登録される行番号は改造後構造データ105の行番号である。
ステップS307の結果、不一致の場合(S307→No)、改造内容検証部22はステップS304へ処理を進め、「NG」を検証結果データ106に登録する(S304)。ここで、改造内容検証部22は、類似基本ブロック側が擬似中間語命令であれば、予測構造データ900の擬似処理内容904(図9)の識別子と、不一致が検出された中間語命令の行番号を「NG」の情報とともに検証結果データ106に登録する。類似基本ブロック側が擬似中間語命令でなければ、不一致が検出された中間語命令の行番号を「NG」の情報とともに検証結果データ106に登録する。なお、ここで、登録される行番号は改造後構造データ105の行番号である。
ステップS309の結果、解析していない中間語命令が存在する場合(S309→No)、改造内容検証部22はステップS305へ処理を戻し、次の中間語命令の解析を行う。
ステップS309の結果、すべての中間語命令を解析している場合(S309→Yes)、改造内容検証部22は改造場所特定データ1100におけるすべての基本ブロックを解析したか否かを判定する(S310)。
ステップS310の結果、改造場所特定データ1100において、解析していない基本ブロックが存在する場合(S310→No)、改造内容検証部22はステップS301へ処理を戻し、次の基本ブロックの解析を行う。
ステップS310の結果、改造場所特定データ1100におけるすべての基本ブロックを解析している場合(S310→Yes)、改造内容検証部22は、検証結果データ106を出力し(S311)、改造内容検証処理を終了する。
図14は、図13のステップS305で使用される判定パターンの例を示す例である。なお、この説明にけるステップ番号は図13のステップ番号である。
図14において、改造場所特定データ1100の中間語命令が擬似中間語命令である場合は、改造後ソースコード102において改造が行われた場所であることを示しており、擬似中間語命令でない場合は改造後ソースコード102において改造が行われていないことを示している。また、予測構造データ900の中間語命令が擬似中間語命令である場合は、改造が行われる予定の場所であることを示しており、擬似中間語命令でない場合は改造が行われる予定でないことを示している。
「パターンA」では、改造場所特定データ1100の中間語命令および予測構造データ900の中間語命令がともに擬似中間語命令ではなく(中間語命令)、その内容も一致しているパターンである(ステップS306→Yes;ステップS307→Yes)。この「パターンA」は、改造予定以外の場所であり、かつ改造が行われていないことを示しており、改造内容検証部22は「OK」を検証結果データ106に登録する(ステップS308)。
「パターンB」は、改造場所特定データ1100の中間語命令が擬似中間語命令ではなく(中間語命令)、予測構造データ900の中間語命令が擬似中間語命令であるパターンである。この場合、当然内容は不一致となる。この「パターンB」では、改造が必要な場所に対して、必要な改造が行われていないことを示しており、改造内容検証部22は「NG」を検証結果データ106に登録する(ステップS304)。
「パターンD」は、改造場所特定データ1100および予測構造データ900の中間語命令がともに擬似中間語命令であり、かつ、その内容が一致するパターンである(ステップS306→Yes;ステップS307→Yes)。この「パターンD」は、改造が必要な場所に、適切な改造が行われたことを示しており、改造内容検証部22は「OK」を検証結果データ106に登録する(ステップS308)。
「パターンF」は、改造場所特定データ1100および予測構造データ900の中間語命令がともに擬似中間語命令ではないが(中間語命令)、その内容が一致しないパターンである(ステップS306→Yes;ステップS307→No)。この「パターンF」は、改造対象となっている改造前ソースコード101とは異なるソースコードを改造して、改造後ソースコード102として登録した疑いがあることを示しており、改造内容検証部22は「NG」を検証結果データ106に登録する(ステップS304)。
図15は、改造内容検証部によって表示部に表示される検証結果表示画面の例を示す図である。
検証結果表示画面1400は、改造後ソースコード表示エリア1401、検証結果表示エリア1402を有している。
検証結果表示エリア1402には、改造予定にしたがって正しく改造が行われた場合に表示されるエリアであるOKエリア1403、改造予定と異なる改造が行われた場合に表示されるエリアであるNGエリア1404を有している。
OKエリア1403には、改造予定を識別するID表示エリア1405、判定結果表示エリア1406、改造の根拠となる仕様書の記載場所を表示する仕様書情報表示エリア1407、レビューを促すメッセージ表示エリア1408を有している。
NGエリア1404には、OKエリア1403と同様に改造予定を識別するID表示エリア1408、判定結果表示エリア1409、改造の根拠となる仕様書の記載場所を表示する仕様書情報表示エリア1410、異常判定の内容を示す判定内容表示エリア1411を表示する。
また、判定結果表示エリア1406,1409は、図13のステップS306における結果を検証結果データ106内に保持することによって表示される情報である。
メッセージ表示エリア1408、判定内容表示エリア1411は、例えば、図14に示すパターン毎にメッセージを予め用意しておくことによって表示される情報である。
図15の例では、ハイライト表示箇所1421と、OKエリア1403とを直線1412で結び,ハイライト表示箇所1422と、NGエリア1404とを直線1413で結ぶことで、改造後ソースコード102における改造場所とレポート内容を関連付けている。
以上、本実施形態によって、新たな仕様書を必要とせずに、改造後ソースコード102に対する改造内容の検証ができるようになり、改造前ソースコード作成のときの仕様書作成において詳細なコーディングの内容が確定していない場合でも、改造場所と改造内容の検証ができるようになる。
この結果、プログラミング段階の誤った改造をレビュー段階で検出でき、かつ、レビュー段階におけるレビュー漏れを防ぐことができるようになる。
また、本実施形態の各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。また、上記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリや、ハードディスク、SSD(Solid State Drive)などの記録装置、または、IC(Integrated Circuit)カード、SD(Secure Digital)カード、DVD(Digital Versatile Disc)などの記録媒体に記憶させることができる。
10 改造予定登録処理部
11 改造予定登録部
12 改造予定再現部(改造後データ生成部)
20 改造内容検証処理部
21 改造場所特定部
22 改造内容検証部
30 構造解析部
40 入力部
50 表示部
101 改造前ソースコード
102 改造後ソースコード
103 改造入力データ
104 改造前構造データ
105 改造後構造データ
106 検証結果データ
800 改造予定データ
900 予測構造データ(予測データ)
1100 改造場所特定データ(改造後データ)
Claims (6)
- プログラムの改造を支援するプログラム改造支援装置のプログラム改造支援方法であって、
前記プログラム改造支援装置が、
改造前の前記プログラムのソースコードである改造前ソースコードにおける命令を、コンパイラの機能によって出力される中間語命令に変換して改造前構造データを生成し、
入力部を介して、入力された、改造予定箇所に関する情報である改造予定データと、前記改造前構造データとに基づいて、予定されている改造が行われる箇所に関する情報を有している予測データを、前記中間語命令を用いて生成し、
改造後の前記プログラムのソースコードである改造後ソースコードに基づく改造場所特定データを、前記中間語命令を用いて生成し、
前記予測データにおける前記改造が行われる箇所に関する情報と、前記改造場所特定データにより特定される前記改造の場所と、を比較し、不一致箇所が検出された場合、前記不一致箇所が検出された旨を表示部に表示させる
ことを特徴とするプログラム改造支援方法。 - プログラムの改造を支援するプログラム改造支援装置のプログラム改造支援方法であって、
前記プログラム改造支援装置が、
入力部を介して、予定されている改造に関する仕様書の情報が入力され、
前記入力された仕様書に関する情報が、改造予定箇所に関する情報である改造予定デー
タに反映され、
前記改造予定データに関する情報を、前記改造予定データに基づいて、予定されている改造が行われる箇所に関する情報を有している予測データにひも付け、
改造後の前記プログラムのソースコードである改造後ソースコードに基づく改造場所特定データを生成し、
前記予測データにおける前記改造が行われる箇所に関する情報と、前記改造場所特定データにより特定される前記改造の場所と、を比較し、不一致箇所が検出された場合、前記予測データを基に、前記不一致箇所に関する情報を含む前記改造予定データの仕様書に関する情報を表示部に表示させる
ことを特徴とするプログラム改造支援方法。 - プログラムの改造を支援するプログラム改造支援装置のプログラム改造支援方法であって、
前記プログラム改造支援装置が、
改造前の前記プログラムのソースコードである改造前ソースコードにおける命令を、コンパイラの機能によって出力される中間語命令に変換して改造前構造データを生成し、
改造後の前記プログラムのソースコードである改造後ソースコードにおける命令を、前記中間語命令に変換して改造後構造データを生成し、
改造予定箇所に関する情報である改造予定データに基づいて、予定されている改造が行われる箇所に関する情報を有している予測データを生成し、
前記改造前構造データと、前記改造後構造データと、を比較し、不一致が検出された箇所をマーキングし、
前記マーキングの情報を、前記改造後ソースコードに基づく改造場所特定データに格納することで、前記改造場所特定データを生成し、
前記予測データにおける前記改造が行われる箇所に関する情報と、前記改造場所特定データにおけるマーキングの情報と、を比較し、不一致箇所が検出された場合、前記不一致箇所が検出された旨を表示部に表示させる
ことを特徴とするプログラム改造支援方法。 - プログラムの改造を支援するプログラム改造支援装置であって、
改造前の前記プログラムのソースコードである改造前ソースコードにおける命令を、コンパイラの機能によって出力される中間語命令に変換して改造前構造データを生成する構造解析部と、
入力部を介して、入力された、改造予定箇所に関する情報である改造予定データと、前記改造前構造データとに基づいて、予定されている改造が行われる箇所に関する情報を有している予測データを、前記中間語命令を用いて生成する改造予定再現部と、
改造後の前記プログラムのソースコードである改造後ソースコードに基づく改造場所特定データを、前記中間語命令を用いて生成する改造場所特定部と、
前記予測データにおける前記改造が行われる箇所に関する情報と、前記改造場所特定データにより特定される前記改造の場所と、を比較し、不一致箇所が検出された場合、前記不一致箇所が検出された旨を表示部に表示させる改造内容検証部と、
を有することを特徴とするプログラム改造支援装置。 - プログラムの改造を支援するプログラム改造支援装置であって、
入力部を介して、予定されている改造に関する仕様書の情報が入力され、前記入力された仕様書に関する情報を、改造予定箇所に関する情報である改造予定データに反映する改造予定登録部と、
前記改造予定データに関する情報を、前記改造予定データに基づいて、予定されている改造が行われる箇所に関する情報を有している予測データにひも付ける改造予定再現部と、
改造後の前記プログラムのソースコードである改造後ソースコードに基づく改造場所特定データを生成する改造場所特定部と、
前記予測データにおける前記改造が行われる箇所に関する情報と、前記改造場所特定データにより特定される前記改造の場所と、を比較し、不一致箇所が検出された場合、前記予測データを基に、前記不一致箇所に関する情報を含む前記改造予定データの仕様書に関する情報を表示部に表示させる改造内容検証部と、
を有することを特徴とするプログラム改造支援装置。 - プログラムの改造を支援するプログラム改造支援装置であって、
改造前の前記プログラムのソースコードである改造前ソースコードにおける命令を、コンパイラの機能によって出力される中間語命令に変換して改造前構造データを生成し、改造後の前記プログラムのソースコードである改造後ソースコードにおける命令を、前記中間語命令に変換して改造後構造データを生成する構造解析部と、
改造予定箇所に関する情報である改造予定データに基づいて、予定されている改造が行われる箇所に関する情報を有している予測データを生成する改造予定再現部と、
前記改造前構造データと、前記改造後構造データと、を比較し、不一致が検出された箇所をマーキングし、前記マーキングの情報を、前記改造後ソースコードに基づく改造場所特定データに格納することで、前記改造場所特定データを生成する改造場所特定部と、
前記予測データにおける前記改造が行われる箇所に関する情報と、前記改造場所特定データにおけるマーキングの情報と、を比較し、不一致箇所が検出された場合、前記不一致箇所が検出された旨を表示部に表示させる改造内容検証部と、
を有することを特徴とするプログラム改造支援装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011000962A JP5525459B2 (ja) | 2011-01-06 | 2011-01-06 | プログラム改造支援方法およびプログラム改造支援装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011000962A JP5525459B2 (ja) | 2011-01-06 | 2011-01-06 | プログラム改造支援方法およびプログラム改造支援装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012141916A JP2012141916A (ja) | 2012-07-26 |
JP5525459B2 true JP5525459B2 (ja) | 2014-06-18 |
Family
ID=46678116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011000962A Expired - Fee Related JP5525459B2 (ja) | 2011-01-06 | 2011-01-06 | プログラム改造支援方法およびプログラム改造支援装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5525459B2 (ja) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2639349B2 (ja) * | 1994-06-24 | 1997-08-13 | 日本電気株式会社 | 誤修正行検索装置 |
JPH0830448A (ja) * | 1994-07-14 | 1996-02-02 | Nec Corp | プログラム仕様整合検査装置 |
JPH10333918A (ja) * | 1997-05-28 | 1998-12-18 | Nec Corp | C言語ソースファイル用差分検出装置 |
JPH11353162A (ja) * | 1998-06-04 | 1999-12-24 | Hitachi Ltd | プログラム修正結果比較方法 |
JP2003140894A (ja) * | 2001-11-05 | 2003-05-16 | Hitachi Ltd | ソフトウェア開発資源間の関連付け方法及びそのプログラム |
JP2008262330A (ja) * | 2007-04-11 | 2008-10-30 | Hitachi Ltd | プログラム誤修正検知方法および装置 |
JP2009169724A (ja) * | 2008-01-17 | 2009-07-30 | Nomura Research Institute Ltd | 保守支援装置 |
JP2010015458A (ja) * | 2008-07-04 | 2010-01-21 | Hitachi Ltd | プログラム修正支援システム、プログラム修正支援方法、およびプログラム修正支援プログラム |
-
2011
- 2011-01-06 JP JP2011000962A patent/JP5525459B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012141916A (ja) | 2012-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8768651B2 (en) | System and method for automatic standardization and verification of system design requirements | |
Lin et al. | A testing framework for model transformations | |
WO2012032890A1 (ja) | ソースコード変換方法およびソースコード変換プログラム | |
JP5005510B2 (ja) | ソフトウェアの設計支援方法、設計支援装置及び設計支援プログラム | |
JP6479184B2 (ja) | コンピュータ実行可能なモデルリバースエンジニアリング方法及び装置 | |
US20050188323A1 (en) | Template creation apparatus and creation method | |
JP5303795B2 (ja) | アプリケーションの解析方法、解析システム及び解析プログラム | |
US8145992B2 (en) | Validation assisted document conversion design | |
JP2009205190A (ja) | ソフトウェア自動構成装置 | |
JPH08241191A (ja) | Gui自動評価装置 | |
JP5293521B2 (ja) | デザインルールチェック検証装置およびデザインルールチェック検証方法 | |
JP2014164677A (ja) | 仕様検証支援装置、仕様検証支援方法及びプログラム | |
JP4888790B2 (ja) | 契約定義関数検証装置、その方法及びそのプログラム | |
JP2008305079A (ja) | 要求仕様自動検証方式 | |
JP5525459B2 (ja) | プログラム改造支援方法およびプログラム改造支援装置 | |
JP2013030017A (ja) | テストプログラム生成方法、テストプログラム生成装置、及びテストプログラム生成プログラム | |
JP5811859B2 (ja) | ソースコードの静的解析装置、システム、方法、及びそのためのプログラム | |
JP2009169573A (ja) | 解析結果出力装置、及び解析結果出力方法 | |
JP5823478B2 (ja) | 出力ファイル検証システム | |
US8645908B2 (en) | Method for generating specifications of static test | |
JP3584204B2 (ja) | 原始プログラム自動変換装置 | |
JP4988367B2 (ja) | 約款に係る業務システム開発方法 | |
JPH0981371A (ja) | ソースコード自動バージョンアップ方法及び装置 | |
JP7199555B2 (ja) | 変更影響分析装置、変更影響分析システム、および変更影響分析方法 | |
JP6268062B2 (ja) | ソフトウェア仕様抽出装置、方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20121024 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130717 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130806 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131004 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140121 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140313 |
|
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: 20140401 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140411 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5525459 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |