JPWO2008129619A1 - ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置 - Google Patents
ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置 Download PDFInfo
- Publication number
- JPWO2008129619A1 JPWO2008129619A1 JP2009510657A JP2009510657A JPWO2008129619A1 JP WO2008129619 A1 JPWO2008129619 A1 JP WO2008129619A1 JP 2009510657 A JP2009510657 A JP 2009510657A JP 2009510657 A JP2009510657 A JP 2009510657A JP WO2008129619 A1 JPWO2008129619 A1 JP WO2008129619A1
- Authority
- JP
- Japan
- Prior art keywords
- source program
- review
- correction
- line
- history
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 131
- 238000012552 review Methods 0.000 claims abstract description 307
- 238000012937 correction Methods 0.000 claims abstract description 153
- 238000000605 extraction Methods 0.000 claims description 147
- 238000012545 processing Methods 0.000 claims description 70
- 239000000284 extract Substances 0.000 claims description 27
- 230000006870 function Effects 0.000 description 70
- 238000010586 diagram Methods 0.000 description 62
- 238000012986 modification Methods 0.000 description 27
- 230000004048 modification Effects 0.000 description 27
- 238000013461 design Methods 0.000 description 16
- 238000012790 confirmation Methods 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出し、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶し、抽出された再検討必要箇所と、所定の記憶部に記憶された検討済みか未検討かの検討履歴とを対応付けた情報を所定の出力部に出力し、所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、所定の記憶部に記憶された前記検討履歴を更新する。
Description
この発明は、ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置に関する。
従来より、既存のソースプログラムを修正して、新規機能を追加もしくは更新することにより、新たなソフトウェアを開発することが一般的に行なわれている。
このようなソフトウェアの開発においては、追加もしくは更新する処理が記載されている設計仕様書に基づいて既存のソースプログラムを修正したのちに、ソフトウェア開発者それぞれが、修正後のソースプログラムを再検討(レビュー)することが重要となる。
再検討(レビュー)作業においては、「設計仕様書に記載されている追加もしくは更新すべき処理が、修正後のソースプログラムにて実装されているか?」、「修正後のソースプログラムにおいて、追加もしくは更新された箇所の実行理論が正しいか?」、「修正後のソースプログラムにおいて、追加もしくは更新された箇所の記述形式が正しいか?」、「修正後のソースプログラムにおいて、追加もしくは更新された箇所が影響を及ぼす箇所があるか?」などの項目が、ソフトウェア開発者によって検討される。
具体的には、ソフトウェア開発者それぞれは、修正前後のソースプログラムを比較した差分情報を印刷した用紙を参照して(目視して)、上記した項目を検討し、修正後のソースプログラムにおける問題点を列挙する。そして、列挙された問題点すべてに対する検討処理を行なったことが、ソフトウェア開発者すべての間で確認された時点で、再検討(レビュー)作業が終了する。
ここで、特許文献1では、修正前後のソースプログラムの変更部分を抽出し、当該変更箇所を画面に出力することで、再検討(レビュー)作業におけるソフトウェア開発者の負担を軽減することが可能になるプログラム開発支援システムを開示している。
また、特許文献2および特許文献3では、ソースプログラムの変更によって、影響がおよぶ箇所を検索し、当該影響がおよぶ箇所を画面に出力することで、再検討(レビュー)作業におけるソフトウェア開発者の負担を軽減することが可能になるプログラム解析装置および変数検索装置を開示している。
ところで、上記した従来の技術は、ソフトウェア開発者それぞれが、修正後のソースプログラムにおける問題点について検討した形跡を履歴として残せないので、信頼性の高い再検討が実現できないという問題点があった。
すなわち、ソフトウェア開発者それぞれは、目視によって検討作業を実施しており、修正後のソースプログラムにおける問題点について検討した形跡を履歴として残せないので、信頼性の高い再検討が実現できないという問題点があった。
また、上記した従来の技術は、ソフトウェア開発者それぞれが、「ソースプログラムの変更により影響がおよぶ箇所」として認識される範囲を、本当にすべて検討したか履歴として残せないので、信頼性の高い再検討が実現できないという問題点があった。
また、上記した従来の技術は、ソースプログラムの修正前後で、検討すべき箇所の位置情報(具体的には、ソースプログラムにおいて記載される行番号)にずれが生じた場合、ソフトウェア開発者それぞれが、検討すべき箇所の位置情報を更新して作業を進めなければならないので、ソフトウェア開発者の負担を軽減することができず、信頼性の高い再検討が実現できないという問題点があった。
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、信頼性の高い再検討を実現することが可能となるソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置を提供することを目的とする。
上述した課題を解決し、目的を達成するため、請求項1に係る発明は、修正されたソースプログラムを再検討するソースプログラム再検討方法をコンピュータに実行させるソースプログラム再検討プログラムであって、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手順と、前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶する検討履歴記憶手順と、前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所と、前記所定の記憶部に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手順と、前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記所定の記憶部に記憶された前記検討履歴を更新する検討履歴更新手順と、をコンピュータに実行させることを特徴とする。
また、請求項2に係る発明は、上記の発明において、前記再検討必要箇所抽出手順は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて抽出し、前記検討履歴記憶手順は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶することを特徴とする。
また、請求項3に係る発明は、上記の発明において、前記再検討必要箇所抽出手順は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、前記情報出力手順は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする。
また、請求項4に係る発明は、修正されたソースプログラムを再検討するソースプログラム再検討方法であって、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出工程と、前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する検討履歴記憶工程と、前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所と、前記検討履歴記憶工程によって記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力工程と、前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記検討履歴記憶工程によって記憶された前記検討履歴を更新する検討履歴更新工程と、を含んだことを特徴とする。
また、請求項5に係る発明は、上記の発明において、前記再検討必要箇所抽出工程は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて抽出し、前記検討履歴記憶工程は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶することを特徴とする。
また、請求項6に係る発明は、上記の発明において、前記再検討必要箇所抽出工程は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、前記情報出力工程は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする。
また、請求項7に係る発明は、修正されたソースプログラムを再検討するソースプログラム再検討装置であって、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手段と、前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する検討履歴記憶手段と、前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所と、前記検討履歴記憶手段によって記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手段と、前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記検討履歴記憶手段によって記憶された前記検討履歴を更新する検討履歴更新手段と、を備えたことを特徴とする。
また、請求項8に係る発明は、上記の発明において、前記再検討必要箇所抽出手段は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて抽出し、前記検討履歴記憶手段は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶することを特徴とする。
また、請求項9に係る発明は、上記の発明において、前記再検討必要箇所抽出手段は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、前記情報出力手段は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする。
請求項1、4または7の発明によれば、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出し、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶し、抽出された再検討必要箇所と、所定の記憶部に記憶された検討済みか未検討かの検討履歴とを対応付けた情報を所定の出力部に出力し、所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、所定の記憶部に記憶された検討履歴を更新するので、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、信頼性の高い再検討を実現することが可能となる。
また、請求項2、5または8の発明によれば、再検討必要箇所を修正後ソースプログラムの位置情報に対応付けて抽出し、再検討必要箇所を修正後ソースプログラムの位置情報に対応付けて記憶するので、修正前後で再検討必要箇所の位置情報(具体的には、再検討必要箇所がソースプログラムにおいて記載される行番号)にずれが生じた場合でも、常に更新された修正後の位置情報が反映された検討履歴を作成することができ、信頼性の高い再検討を実現することが可能となる。
また、請求項3、6または9の発明によれば、再検討必要箇所として、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所と、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を再検討必要箇所として出力するので、顧客の必要性に応じたレベルの再検討必要箇所を表示することで、当該顧客が速やかに検討をすることができ、信頼性の高い再検討を実現することが可能となる。
10 ソースプログラム再検討装置
11 入力部
12 出力部
13 入出力制御I/F部
14 記憶部
14a ソースプログラム記憶部
14b 抽出結果記憶部
14c 検討履歴記憶部
15 処理部
15a 再検討必要箇所抽出部
15b 情報表示部
15c 検討履歴更新部
11 入力部
12 出力部
13 入出力制御I/F部
14 記憶部
14a ソースプログラム記憶部
14b 抽出結果記憶部
14c 検討履歴記憶部
15 処理部
15a 再検討必要箇所抽出部
15b 情報表示部
15c 検討履歴更新部
以下に添付図面を参照して、この発明に係るソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置の実施例を詳細に説明する。なお、以下では、この発明に係るソースプログラム再検討プログラムを含んで構成されるソースプログラム再検討装置を実施例として説明する。また、以下では、実施例1におけるソースプログラム再検討装置の概要および特徴、実施例1におけるソースプログラム再検討装置の構成および処理の手順、実施例1の効果を順に説明し、最後に、他の実施例について説明する。
[実施例1におけるソースプログラム再検討装置の概要および特徴]
まず最初に、図1−1および図1−2を用いて、実施例1におけるソースプログラム再検討装置の主たる特徴を具体的に説明する。図1−1および図1−2は、実施例1におけるソースプログラム再検討装置の概要および特徴を説明するための図である。
まず最初に、図1−1および図1−2を用いて、実施例1におけるソースプログラム再検討装置の主たる特徴を具体的に説明する。図1−1および図1−2は、実施例1におけるソースプログラム再検討装置の概要および特徴を説明するための図である。
実施例1におけるソースプログラム再検討装置は、修正されたソースプログラムを再検討することを概要とする。すなわち、実施例1におけるソースプログラム再検討装置は、追加もしくは更新する処理が記載されている設計仕様書に基づいて、ソフトウェア開発者が、既存のソースプログラムを修正したのちに、修正後のソースプログラムを再検討(レビュー)することを概要とする。
ここで、本発明は、信頼性の高い再検討を実現することが可能となることに主たる特徴がある。この主たる特徴について簡単に説明すると、実施例1におけるソースプログラム再検討装置は、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を、修正後ソースプログラムの位置情報に対応付けて抽出し、さらに、再検討必要箇所として、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所と、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出する。
例えば、実施例1におけるソースプログラム再検討装置は、図1−1の(A)に示すように、既存のソースプログラムである「修正前ソースプログラム」と、既存のソースプログラムを設計仕様書に基づいて、最初に修正した修正後ソースプログラムである「修正1回目ソースプログラム」とを比較して、再検討必要箇所を、修正後ソースプログラムの位置情報である「行番号」に対応付けて抽出する。
ここで、実施例1におけるソースプログラム再検討装置は、最初に、「修正1回目ソースプログラム」において「修正前ソースプログラム」から修正された箇所である修正箇所を、「レベル0」の再検討必要箇所として抽出する。すなわち、図1−1の(A)に示すように、実施例1におけるソースプログラム再検討装置は、「修正1回目ソースプログラム」と「修正前ソースプログラム」とを比較して、関数「funcA」の内容が変更されている「5行目」と、記載が追加されている「6行目」、「9行目」および「11〜14行目」とを、「レベル0」の再検討必要箇所として抽出する。
続いて、実施例1におけるソースプログラム再検討装置は、「レベル0」として抽出された再検討必要箇所の中でも、関数の内容が変更されている箇所によって、処理の流れが影響を受ける影響箇所を、「レベル1」の再検討必要箇所として抽出する。すなわち、図1−1の(A)に示すように、実施例1におけるソースプログラム再検討装置は、「レベル0」の再検討必要箇所の中でも、関数「funcA」の内容が変更されている「5行目」の箇所によって、直接、処理の流れに影響を受ける影響箇所である「7行目」および「8行目」を、「レベル1」の再検討必要箇所として抽出する。
さらに、実施例1におけるソースプログラム再検討装置は、「レベル0」として抽出された再検討必要箇所において「変更されている関数」を参照している箇所を、「レベル2」の再検討必要箇所として抽出する。すなわち、図1−1の(A)に示すように、実施例1におけるソースプログラム再検討装置は、「レベル0」の再検討必要箇所の中でも、関数「funcA」を参照する関数「funcB」の処理が記載されている「17行目」を、「レベル2」の再検討必要箇所として抽出する。
その後、実施例1におけるソースプログラム再検討装置は、「レベル2」として抽出された再検討必要箇所における関数によって影響を受ける箇所を、「レベル3」の再検討必要箇所として抽出する。すなわち、図1−1の(A)に示すように、実施例1におけるソースプログラム再検討装置は、「レベル2」の再検討必要箇所における関数「funcB」によって、直接、処理の流れに影響を受ける影響箇所である「18〜21行目」を、「レベル3」の再検討必要箇所として抽出する。
そして、実施例1におけるソースプログラム再検討装置は、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を、修正後ソースプログラムの位置情報に対応付けて所定の記憶部に記憶する。
すなわち、実施例1におけるソースプログラム再検討装置は、「レベル0」の再検討必要箇所として抽出された「5行目」、「6行目」、「9行目」および「11〜14行目」と、「レベル1」の再検討必要箇所として抽出された「7行目」および「8行目」と、「レベル2」の再検討必要箇所として抽出された「17行目」と、「レベル3」の再検討必要箇所として抽出された「18〜21行目」とが、それぞれ検討済みか未検討かを示す検討履歴を記憶する。なお、実施例1におけるソースプログラム再検討装置は、ソフトウェア開発者からの再検討開始要求を受け付けるまでは、これら「レベル0」から「レベル3」までの再検討必要箇所に関しては、「未検討」として記憶する。
そして、実施例1におけるソースプログラム再検討装置は、抽出された再検討必要箇所と、記憶された検討済みか未検討かの検討履歴とを対応付けた情報を所定の出力部に出力する。また、実施例1におけるソースプログラム再検討装置は、「レベル0」から「レベル3」までの再検討必要箇所において、ソフトウェア開発者から指定された「レベル」を所定の入力部から受け付け、当該「レベル」までの再検討必要箇所を表示する。
すなわち、実施例1におけるソースプログラム再検討装置は、ソフトウェア開発者から『「レベル3」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、例えば、図1−1の(A)に示すように、「修正1回目ソースプログラム」と「修正前ソースプログラム」とを並べて、モニタに表示するとともに、「修正1回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル0」から「レベル3」に対応する位置それぞれに「マーク」を付加して表示する。ここで、付加される「マーク」において、「白抜き四角(□)」は、「未検討」を示し、「黒塗り丸(●)」は、「検討済み」を示す。
なお、図1−1の(A)においては、「レベル0」の「5行目」、「9行目」および「11〜14行目」が、「検討済み」の「マーク」である「黒塗り丸(●)」が付加されて表示されている場合を示しているが、ソフトウェア開発者から『「レベル3」までのすべての再検討必要箇所を表示』との要求を、最初に受け付けた場合には、すべての再検討必要箇所である行番号の左側において、「未検討」の「マーク」である「白抜き四角(□)」が、「レベル0」から「レベル3」それぞれに応じた位置に、付加されて表示されるものとする。
そして、実施例1におけるソースプログラム再検討装置は、モニタにおいて、未検討として出力された再検討必要箇所について、所定の入力部から「検討済み」と受け付けた場合に、記憶された検討履歴を更新する。すなわち、実施例1におけるソースプログラム再検討装置は、例えば、「2007年2月26日」に、ソフトウェア開発者である「日本太郎」から、「レベル0」の「5行目」、「9行目」および「11〜14行目」において、「設計仕様所に記載の処理を追加。特に問題なし」とする「指摘メモ」とともに、「状態」を「検討済み」とする表示変更を受け付けた場合に、図1−1の(A)に示すように、行番号の左側において、「マーク」を、「未検討」の「白抜き四角(□)」から、「検討済み」の「黒塗り丸(●)」に変更して表示させるとともに、図1−1の(B)に示すように、検討履歴を更新する。
また、同じく、ソフトウェア開発者である「日本太郎」が、「レベル0」の「6行目」を参照して、問題点が解決されていない(変数「y」の初期化処理が記載されていない)と判断した場合、実施例1におけるソースプログラム再検討装置は、「変数「y」が初期化されていない。確認すること」とする「指摘メモ」のみを受け付けて、「未検討」の「マーク」である「白抜き四角(□)」は変更しない(図1−1の(B)参照)。なお、本実施例では、ソフトウェア開発者である「日本太郎」が、「レベル0」の再検討必要箇所のみを再検討して処理を終了したとする。
ここで、図1−1の(B)に示す状況で「修正1回目ソースプログラム」の再検討が終了し、この再検討結果に基づいて、ソフトウェア開発者が、「修正1回目ソースプログラム」を修正した「修正2回目ソースプログラム」を作成したとする。すなわち、図1−1の(B)に示す検討履歴において、「レベル0」の再検討必要箇所である「6行目」における指摘メモ「変数「y」が初期化されていない。確認すること」を参照したソフトウェア開発者が、図1−1の(A)に示す「修正1回目ソースプログラム」を修正して、図1−2の(C)に示す「修正2回目ソースプログラム」を作成したとする。なお、「修正2回目ソースプログラム」においては、「修正1回目ソースプログラム」における「6行目:int y,z;」が、「6行目:int y=0;」と「7行目:int z=0;」の2行に分割されており、6行目において、変数「y」の初期値が「0」と設定されているとともに、新たに、7行目において、変数「z」の初期値が「0」と設定されている。
そして、「修正2回目ソースプログラム」を格納した実施例1におけるソースプログラム再検討装置は、「修正2回目ソースプログラム」と「修正1回目ソースプログラム」とを比較して、再検討必要箇所を「修正2回目ソースプログラム」の位置情報(行番号)に対応付けて抽出する。
すなわち、「修正2回目ソースプログラム」を格納した実施例1におけるソースプログラム再検討装置は、「修正1回目ソースプログラム」において「レベル0」の再検討必要箇所として抽出された「5行目」、「6行目」、「9行目」および「11〜14行目」の箇所を、「修正2回目ソースプログラム」の行番号である「5行目」、「6行目」、「10行目」および「12〜15行目」に対応付けて抽出し、「修正1回目ソースプログラム」において「レベル1」の再検討必要箇所として抽出された「7行目」および「8行目」の箇所を、「修正2回目ソースプログラム」の行番号である「8行目」および「9行目」に対応付けて抽出し、「レベル2」の再検討必要箇所として抽出された「17行目」の箇所を、「修正2回目ソースプログラム」の行番号である「18行目」に対応付けて抽出し、「修正1回目ソースプログラム」において「レベル3」の再検討必要箇所として抽出された「18〜21行目」の箇所を、「修正2回目ソースプログラム」の行番号である「19〜22行目」に対応付けて抽出する。また、「修正2回目ソースプログラム」における「レベル0」の再検討必要箇所として、「7行目」の箇所も抽出する。
これにより、実施例1におけるソースプログラム再検討装置は、再度、ソフトウェア開発者から『「レベル3」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、図1−1の(B)に示す検討履歴の「行番号」を、「修正2回目ソースプログラム」における「行番号」に更新し、更新された検討履歴に基づいて、図1−2の(C)に示すように、「修正2回目ソースプログラム」と「修正前ソースプログラム」とを並べて表示するとともに、「修正2回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル0」から「レベル3」に対応する位置それぞれに「マーク」を付加して表示する。
すなわち、図1−2の(D)に示すように、「修正1回目ソースプログラム」において「レベル0」の再検討必要箇所として抽出された箇所の行番号である「5行目」、「6行目」、「9行目」および「11〜14行目」を、「修正2回目ソースプログラム」の行番号である「5行目」、「6行目」、「10行目」および「12〜15行目」に更新し、図1−2の(C)に示すように、更新された「修正2回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル0」から「レベル3」に対応する位置それぞれに「マーク」を付加して表示する。
このようなことから、実施例1におけるソースプログラム再検討装置は、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、上記した主たる特徴の通り、信頼性の高い再検討を実現することが可能となる。
[実施例1におけるソースプログラム再検討装置の構成]
次に、図2〜20を用いて、実施例1におけるソースプログラム再検討装置を説明する。図2は、実施例1におけるソースプログラム再検討装置の構成を示すブロック図であり、図3〜5は、実施例1におけるソースプログラム記憶部を説明するための図であり、図6〜15は、実施例1における再検討必要箇所抽出部を説明するための図であり、図16は、実施例1における検討履歴記憶部を説明するための図であり、図17〜20は、実施例1における情報表示部を説明するための図である。
次に、図2〜20を用いて、実施例1におけるソースプログラム再検討装置を説明する。図2は、実施例1におけるソースプログラム再検討装置の構成を示すブロック図であり、図3〜5は、実施例1におけるソースプログラム記憶部を説明するための図であり、図6〜15は、実施例1における再検討必要箇所抽出部を説明するための図であり、図16は、実施例1における検討履歴記憶部を説明するための図であり、図17〜20は、実施例1における情報表示部を説明するための図である。
図2に示すように、実施例1におけるソースプログラム再検討装置10は、入力部11と、出力部12と、入出力制御I/F部13と、記憶部14と、処理部15とから構成される。
入力部11は、各種の情報を入力し、キーボードやマウスなどを備えて構成され、特に本発明に密接に関連するものとしては、「ソースプログラムの格納」や「再検討必要箇所の表示要求」や「再検討必要箇所のレベル指定」や「検討履歴の更新」などを、例えば、キーボードから受け付けて入力する。
出力部12は、各種の情報を出力し、モニタやスピーカを備えて構成され、特に本発明に密接に関連するものとしては、後述する情報表示部15bによる処理結果を、例えば、モニタの画面に表示したりする。
入出力制御I/F部13は、入力部11および出力部12と、記憶部14および処理部15との間におけるデータ転送を制御する。
記憶部14は、処理部15による各種処理に用いるデータと、処理部15による各種処理結果を記憶し、特に本発明に密接に関連するものとしては、図2に示すように、ソースプログラム記憶部14aと、抽出結果記憶部14bと、検討履歴記憶部14cとを備える。ここで、検討履歴記憶部14cは、特許請求の範囲に記載の「検討履歴記憶手順」に対応する。
ソースプログラム記憶部14aは、修正前のソースプログラムである修正前ソースプログラムや、修正後のソースプログラムである修正後ソースプログラムを記憶する。具体的には、図3に示すように、既存のソースプログラムである「修正前ソースプログラム」を記憶したり、図4に示すように、「修正前ソースプログラム」を、設計仕様書に基づいて、最初に修正した修正後ソースプログラムである「修正1回目ソースプログラム」を記憶したり、図5に示すように、後述する検討履歴記憶部14cが記憶する検討履歴を参照して、ソフトウェア開発者が、「修正1回目ソースプログラム」をさらに修正した「修正2回目ソースプログラム」を記憶したりする。なお、図3〜5における「ソースプログラム」はすべて、C言語で記述された「ファイル名:sample.c」のファイルとして記憶されているとする。
抽出結果記憶部14bは、後述する再検討必要箇所抽出部15aが抽出した結果を記憶し、検討履歴記憶部14cは、後述する再検討必要箇所抽出部15aが抽出した再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する。なお、抽出結果記憶部14bと検討履歴記憶部14cとについては、後に詳述する。
処理部15は、入出力制御I/F部13から転送されたデータに基づき各種処理を実行し、特に本発明に密接に関連するものとしては、図2に示すように、再検討必要箇所抽出部15aと、情報表示部15bと、検討履歴更新部15cとを備える。ここで、再検討必要箇所抽出部15aは、特許請求の範囲に記載の「再検討必要箇所抽出手順」に対応し、情報表示部15bは、同じく「情報表示手順」に対応し、検討履歴更新部15cは、同じく「検討履歴更新手順」に対応する。
再検討必要箇所抽出部15aは、ソースプログラム記憶部14aが記憶する修正前ソースプログラムと、修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を、修正後ソースプログラムの位置情報に対応付けて抽出するが、さらに、再検討必要箇所として、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所と、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、その結果を抽出結果記憶部14bに格納する。
ここで、再検討必要箇所抽出部15aは、最初に、図3に示す「修正前ソースプログラム」と、図4に示す「修正1回目ソースプログラム」とを比較して、「修正1回目ソースプログラム」において「修正前ソースプログラム」から修正された箇所である修正箇所を、「レベル0」の再検討必要箇所として、「修正1回目ソースプログラム」の位置情報である「行番号」に対応付けて抽出する。
すなわち、図12に示すように、再検討必要箇所抽出部15aは、「修正1回目ソースプログラム」と「修正前ソースプログラム」とを比較して、関数「funcA」の内容が変更されている「5行目」と、記載が追加されている「6行目」、「9行目」および「11〜14行目」とを、「レベル0」の再検討必要箇所として抽出する。
続いて、再検討必要箇所抽出部15aは、「レベル0」の再検討必要箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所を、影響の度合いでレベル分けして抽出する。
具体的には、再検討必要箇所抽出部15aは、図3に示す「修正前ソースプログラム」を静的解析することによって、図6に示すように、「修正前ソースプログラム」における処理の流れをまとめた「制御フロー」を作成し、図7に示すように、「修正前ソースプログラム」における「定義、参照など」の処理の依存関係の流れをまとめた「データフロー」を作成する。さらに、再検討必要箇所抽出部15aは、図4に示す「修正1回目ソースプログラム」を静的解析することによって、図8に示すように、「修正1回目ソースプログラム」における「制御フロー」を作成し、図9に示すように、「修正1回目ソースプログラム」における「データフロー」を作成する。なお、図7および図9に示す「データフロー」において、破線の矢印は、処理間の参照関係を示している。すなわち、破線の終点における処理が、破線の始点における処理結果を参照して実施される処理であることを示している。
そして、再検討必要箇所抽出部15aは、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正1回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、「レベル0」として抽出された再検討必要箇所の中でも、関数の内容が変更されている箇所によって、処理の流れが影響を受ける影響箇所を、「レベル1」の再検討必要箇所として抽出する。すなわち、図13の(A)に示すように、再検討必要箇所抽出部15aは、「レベル0」の再検討必要箇所である「調査対象行番号」の中でも、「対象要素」である関数「funcA」の内容が変更されている「5行目」の箇所によって、直接、処理の流れに影響を受ける影響箇所である「7行目」および「8行目」を、「レベル1」の再検討必要箇所として抽出する。なお、「レベル0」の再検討必要箇所である「調査対象行番号」の「6行目」、「9行目」および「11〜14行目」からは、「レベル1」の再検討必要箇所は抽出されない。
さらに、再検討必要箇所抽出部15aは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正1回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、「レベル0」として抽出された再検討必要箇所において「変更されている関数」を参照している箇所を、「レベル2」の再検討必要箇所として抽出する。すなわち、図13の(B)に示すように、再検討必要箇所抽出部15aは、「調査対象行要素」である関数「funcA」を参照する「対象要素」としての関数「funcB」の処理が記載されている「17行目」を、「レベル2」の再検討必要箇所として抽出する。
その後、再検討必要箇所抽出部15aは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正1回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、「レベル2」として抽出された再検討必要箇所における関数によって影響を受ける箇所を、「レベル3」の再検討必要箇所として抽出する。すなわち、図13の(C)に示すように、再検討必要箇所抽出部15aは、「レベル2」の再検討必要箇所である「調査対象行番号:17行目」において記載される「対象要素」としての関数「funcB」によって、直接、処理の流れに影響を受ける影響箇所である「18〜21行目」を、「レベル3」の再検討必要箇所として抽出する。
抽出結果記憶部14bは、再検討必要箇所抽出部15aが抽出した再検討必要箇所を記憶する。例えば、図12および図13の(A)〜(C)に示すような「レベル0」から「レベル3」の再検討必要箇所を記憶する。
検討履歴記憶部14cは、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を、修正後ソースプログラムの位置情報に対応付けて記憶する。
すなわち、検討履歴記憶部14cは、「レベル0」の再検討必要箇所として抽出された「5行目」、「6行目」、「9行目」および「11〜14行目」と、「レベル1」の再検討必要箇所として抽出された「7行目」および「8行目」と、「レベル2」の再検討必要箇所として抽出された「17行目」と、「レベル3」の再検討必要箇所として抽出された「18〜21行目」とが、それぞれ検討済みか未検討かを示す検討履歴を記憶する。なお、検討履歴記憶部14cは、ソフトウェア開発者からの再検討開始要求を受け付けるまでは、図16の(A)に示すように、これら「レベル0」から「レベル3」までの再検討必要箇所に関しては、「未検討」であり、すべての項目において何も記憶されていない。
情報表示部15bは、抽出された再検討必要箇所と、記憶された検討済みか未検討かの検討履歴とを対応付けた情報を出力部12に出力する。また、情報表示部15bは、「レベル0」から「レベル3」までの再検討必要箇所において、ソフトウェア開発者から指定された「レベル」を所定の入力部から受け付け、当該「レベル」までの再検討必要箇所を表示する。
例えば、情報表示部15bは、ソフトウェア開発者から『「レベル3」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、図12および図13の(A)〜(C)に示すような「レベル0」から「レベル3」の再検討必要箇所を、図17に示す「再検討必要箇所一覧ウィンドウ」において、まとめて表示する。図17に示す「再検討必要箇所一覧ウィンドウ」においては、関数「funcA」に基づく「レベル0」の再検討必要箇所が「7箇所」あり、すべて未検討であることを「0 funcA0/7」として表示し、関数「funcA」に基づく「レベル1」の再検討必要箇所が「2箇所」あり、すべて未検討であることを「1 funcA0/2」として表示し、関数「funcB」に基づく「レベル2」の再検討必要箇所が「1箇所」あり、すべて未検討であることを「2 funcB0/1」として表示し、関数「funcB」に基づく「レベル3」の再検討必要箇所が「4箇所」あり、すべて未検討であることを「3 funcB0/4」として表示している。ここで、合計14箇所の再検討必要箇所すべてが未検討であることを、さらに、右下の「再検討実績 0/14」にて表示している。また、『「レベル3」までのすべての再検討必要箇所を表示』との要求を受け付けたことを、右上の「レベル3」にて表示している。
また、情報表示部15bは、図17に示す「再検討必要箇所一覧ウィンドウ」において、「0 funcA0/7」の表示部分が、ソフトウェア開発者によって押下されたことを入力部11から受け付けると、「検討履歴ウィンドウ」において、「レベル0」の再検討必要箇所における「検討履歴」を表示する。図17に示す「検討履歴ウィンドウ」においては、図16の(A)に示す検討履歴記憶部14bが記憶する内容に基づいて、「5行目」、「6行目」、「9行目」および「11〜14行目」はすべて未検討であり、何も記憶されていないことを表示している。
さらに、情報表示部15bは、図17に示すように、「新ソースウィンドウ」に「修正1回目ソースプログラム」を表示し、「旧ソースウィンドウ」に「修正前ソースプログラム」を表示する。また、情報表示部15bは、図17に示す「新ソースウィンドウ」にて、「修正1回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル0」から「レベル3」に対応する位置それぞれに「マーク」を付加して表示する。ここで、情報表示部15bは、付加される「マーク」を、「未検討」を示す「白抜き四角(□)」として表示する。
検討履歴更新部15cは、モニタにおいて未検討として出力された再検討必要箇所について、入力部11から「検討済み」と受け付けた場合に、検討履歴記憶部14cが記憶する検討履歴を更新する。例えば、「2007年2月26日」に、ソフトウェア開発者である「日本太郎」が、図17に示す「新ソースウィンドウ」における「レベル0」の再検討必要箇所のうち、「5行目」、「9行目」および「11〜14行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「設計仕様所に記載の処理を追加。特に問題なし」とする「指摘メモ」とともに、「検討状態」を「検討済み」とする入力を受け付け(図18の左側参照)、さらに、図17に示す「新ソースウィンドウ」における「レベル0」の再検討必要箇所のうち、「6行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「変数「y」が初期化されていない。確認すること」とする「指摘メモ」とともに、「検討状態」を「未検討」とする入力を受け付けると(図18の右側参照)、検討履歴更新部15cは、図16の(B)に示すように、検討履歴を更新する。
そして、情報表示部15bは、検討履歴更新部15cによって、図16の(B)に示すように、検討履歴が更新されると、図19に示すように、出力部12にて表示される画面を変更する。すなわち、「検討履歴ウィンドウ」における表示を、図19に示すように変更し、さらに、「新ソースウィンドウ」における「5行目」、「9行目」および「11〜14行目」の「マーク」を、「未検討」である「白抜き四角(□)」から、「検討済み」である「黒塗り丸(●)」に変更して表示する。また、図17に示す「再検討必要箇所一覧ウィンドウ」においては、関数「funcA」に基づく「レベル0」の再検討必要箇所が「7箇所」中「6箇所」が「検討済み」となったので、「0 funcA0/7」を「0 funcA6/7」と変更して表示する。さらに、右下の「再検討実績」を「6/14」と変更して表示する。
ここで、入力部11が、図19に示す状況で「修正1回目ソースプログラム」の再検討作業終了要求を、ソフトウェア開発者から受け付け、その後、ソフトウェア開発者が、この再検討結果に基づいて、「修正1回目ソースプログラム」を修正した「修正2回目ソースプログラム」を作成し、さらに、「修正2回目ソースプログラム」がソースプログラム記憶部14aに格納されたとする。
例えば、図19の「検討履歴ウィンドウ」における「レベル0」の再検討必要箇所である「6行目」における指摘メモ「変数「y」が初期化されていない。確認すること」を参照したソフトウェア開発者が、図4に示す「修正1回目ソースプログラム」を修正して、図5に示す「修正2回目ソースプログラム」を作成したとする。ここで、図5に示すように、「修正2回目ソースプログラム」においては、「修正1回目ソースプログラム」における「6行目:int y,z;」が、「6行目:int y=0;」と「7行目:int z=0;」の2行に分割されて修正されており、6行目において、変数「y」の初期値が「0」と設定されているとともに、新たに、7行目において、変数「z」の初期値が「0」と設定されている。
すると、再検討必要箇所抽出部15aは、「修正2回目ソースプログラム」と「修正1回目ソースプログラム」とを比較して、再検討必要箇所を「修正2回目ソースプログラム」の位置情報(行番号)に対応付けて抽出する。
すなわち、再検討必要箇所抽出部15aは、図14に示すように、「修正2回目ソースプログラム」と「修正1回目ソースプログラム」とを比較して、「修正1回目ソースプログラム」において「レベル0」の再検討必要箇所として抽出された「5行目」、「6行目」、「9行目」および「11〜14行目」の箇所を、「修正2回目ソースプログラム」の行番号である「5行目」、「6行目」、「10行目」および「12〜15行目」に対応付けて抽出し、また、「修正2回目ソースプログラム」における「レベル0」の再検討必要箇所として、新たに「7行目」の箇所も抽出する。
さらに、再検討必要箇所抽出部15aは、図5に示す「修正2回目ソースプログラム」を静的解析することによって、図10に示すように、「修正2回目ソースプログラム」における「制御フロー」を作成し、図11に示すように、「修正2回目ソースプログラム」における「データフロー」を作成する。なお、図11に示す「データフロー」において、破線の矢印は、処理間の参照関係を示している。すなわち、破線の終点における処理が、破線の始点における処理結果を参照して実施される処理であることを示している。
そして、再検討必要箇所抽出部15aは、これら新たに作成された「制御フロー」および「データフロー」を参照して、図15の(A)に示すように、「修正1回目ソースプログラム」において「レベル1」の再検討必要箇所として抽出された「7行目」および「8行目」の箇所を(図13の(A)参照)、「修正2回目ソースプログラム」の行番号である「8行目」および「9行目」に対応付けて抽出し、図15の(B)に示すように、「レベル2」の再検討必要箇所として抽出された「17行目」の箇所を(図13の(B)参照)、「修正2回目ソースプログラム」の行番号である「18行目」に対応付けて抽出し、図15の(C)に示すように、「修正1回目ソースプログラム」において「レベル3」の再検討必要箇所として抽出された「18〜21行目」の箇所を(図13の(C)参照)、「修正2回目ソースプログラム」の行番号である「19〜22行目」に対応付けて抽出する。そして、再検討必要箇所抽出部15aは、図14および図15の(A)〜(C)に示す抽出結果を、抽出結果記憶部14bに格納する。
ここで、検討履歴更新部15cは、再度、ソフトウェア開発者から『「レベル3」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、抽出結果記憶部14bに格納された抽出結果に基づいて、図16の(C)に示すように、「レベル0」の再検討必要箇所の検討履歴を更新し、情報表示部15bは、検討履歴更新部15cによって更新された検討履歴に基づいて、図20に示すような画面を表示する。
すなわち、図20に示す「再検討必要箇所一覧ウィンドウ」においては、関数「funcA」に基づく「レベル0」の再検討必要箇所が、7行目が新たに追加されて「8箇所」となり、そのうち「6箇所」が「検討済み」であることを「0 funcA6/8」として表示し、関数「funcA」に基づく「レベル1」の再検討必要箇所が「2箇所」あり、すべて未検討であることを「1 funcA0/2」として表示し、関数「funcB」に基づく「レベル2」の再検討必要箇所が「1箇所」あり、すべて未検討であることを「2 funcB0/1」として表示し、関数「funcB」に基づく「レベル3」の再検討必要箇所が「4箇所」あり、すべて未検討であることを「3 funcB0/4」として表示している。ここで、合計15箇所の再検討必要箇所のうち「6箇所」が「検討済み」であることを、さらに、右下の「再検討実績 6/15」にて表示している。
さらに、情報表示部15bは、図20に示すように、「新ソースウィンドウ」に「修正2回目ソースプログラム」を表示し、「旧ソースウィンドウ」に「修正前ソースプログラム」を表示する。また、情報表示部15bは、図20に示す「新ソースウィンドウ」にて、「修正2回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル0」から「レベル3」に対応する位置それぞれに「マーク」を付加して表示する。例えば、情報表示部15bは、「未検討」を示す「白抜き四角(□)」の「マーク」を、「レベル0」の再検討必要箇所として「修正2回目ソースプログラム」における「6行目」および「7行目」にて表示する。
[実施例1におけるソースプログラム再検討装置による処理の手順]
次に、図21および図22を用いて、実施例1におけるソースプログラム再検討装置10による処理を説明する。図21は、実施例1におけるソースプログラム再検討装置の再検討必要箇所の抽出処理を説明するための図であり、図21は、実施例1におけるソースプログラム再検討装置の検討履歴更新処理を説明するための図である。
次に、図21および図22を用いて、実施例1におけるソースプログラム再検討装置10による処理を説明する。図21は、実施例1におけるソースプログラム再検討装置の再検討必要箇所の抽出処理を説明するための図であり、図21は、実施例1におけるソースプログラム再検討装置の検討履歴更新処理を説明するための図である。
[実施例1におけるソースプログラム再検討装置の再検討必要箇所の抽出処理の手順]
まず、実施例1におけるソースプログラム再検討装置10は、修正後のソースプログラムが、ソースプログラム記憶部14aに格納されると(ステップS2101肯定)、再検討必要箇所抽出部15aは、修正前後のソースプログラムと、修正前後のソースプログラムにおける制御フローおよびデータフローとから、「レベル0」から「レベル3」の再検討必要箇所を、修正後(最新)のソースプログラムの位置情報(行番号)に対応付けて抽出し(ステップS2102)、処理を終了する。
まず、実施例1におけるソースプログラム再検討装置10は、修正後のソースプログラムが、ソースプログラム記憶部14aに格納されると(ステップS2101肯定)、再検討必要箇所抽出部15aは、修正前後のソースプログラムと、修正前後のソースプログラムにおける制御フローおよびデータフローとから、「レベル0」から「レベル3」の再検討必要箇所を、修正後(最新)のソースプログラムの位置情報(行番号)に対応付けて抽出し(ステップS2102)、処理を終了する。
例えば、再検討必要箇所抽出部15aは、「修正1回目ソースプログラム」が格納されると、最初に、図3に示す「修正前ソースプログラム」と、図4に示す「修正1回目ソースプログラム」とを比較して、図12に示すように、関数「funcA」の内容が変更されている「5行目」と、記載が追加されている「6行目」、「9行目」および「11〜14行目」とを、「レベル0」の再検討必要箇所として抽出する。
続いて、再検討必要箇所抽出部15aは、図3に示す「修正前ソースプログラム」を静的解析することによって、図6に示す「制御フロー」と、図7に示す「データフロー」とを作成し、さらに、図4に示す「修正1回目ソースプログラム」を静的解析することによって、図8に示す「制御フロー」と、図9に示す「データフロー」とを作成し、これらを参照して、図13の(A)に示すように、「レベル0」の再検討必要箇所である「調査対象行番号」の中でも、「対象要素」である関数「funcA」の内容が変更されている「5行目」の箇所によって、直接、処理の流れに影響を受ける影響箇所である「7行目」および「8行目」を、「レベル1」の再検討必要箇所として抽出する。
さらに、再検討必要箇所抽出部15aは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正1回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、図13の(B)に示すように、「調査対象行要素」である関数「funcA」を参照する「対象要素」としての関数「funcB」の処理が記載されている「17行目」を、「レベル2」の再検討必要箇所として抽出する。
その後、再検討必要箇所抽出部15aは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正1回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、図13の(C)に示すように、「レベル2」の再検討必要箇所である「調査対象行番号:17行目」において記載される「対象要素」としての関数「funcB」によって、直接、処理の流れに影響を受ける影響箇所である「18〜21行目」を、「レベル3」の再検討必要箇所として抽出する。
また、再検討必要箇所抽出部15aは、「修正2回目ソースプログラム」が格納されると、図14に示すように、「修正2回目ソースプログラム」と「修正1回目ソースプログラム」とを比較して、「修正1回目ソースプログラム」において「レベル0」の再検討必要箇所として抽出された「5行目」、「6行目」、「9行目」および「11〜14行目」の箇所を、「修正2回目ソースプログラム」の行番号である「5行目」、「6行目」、「10行目」および「12〜15行目」に対応付けて抽出し、また、「修正2回目ソースプログラム」における「レベル0」の再検討必要箇所として、新たに「7行目」の箇所も抽出する。
さらに、再検討必要箇所抽出部15aは、図5に示す「修正2回目ソースプログラム」を静的解析することによって、図10に示すように、「修正2回目ソースプログラム」における「制御フロー」を作成し、図11に示すように、「修正2回目ソースプログラム」における「データフロー」を作成し、これら新たに作成された「制御フロー」および「データフロー」を参照して、図15の(A)に示すように、「修正1回目ソースプログラム」において「レベル1」の再検討必要箇所として抽出された「7行目」および「8行目」の箇所を、「修正2回目ソースプログラム」の行番号である「8行目」および「9行目」に対応付けて抽出し、図15の(B)に示すように、「レベル2」の再検討必要箇所として抽出された「17行目」の箇所を、「修正2回目ソースプログラム」の行番号である「18行目」に対応付けて抽出し、図15の(C)に示すように、「修正1回目ソースプログラム」において「レベル3」の再検討必要箇所として抽出された「18〜21行目」の箇所を、「修正2回目ソースプログラム」の行番号である「19〜22行目」に対応付けて抽出する。
[実施例1におけるソースプログラム再検討装置の検討履歴更新処理の手順]
まず、実施例1におけるソースプログラム再検討装置10は、ソフトウェア開発者から再検討作業開始要求を受け付けると(ステップS2201肯定)、情報表示部15bは、再検討必要箇所と検討履歴とを対応付けて表示する(ステップS2202)。
まず、実施例1におけるソースプログラム再検討装置10は、ソフトウェア開発者から再検討作業開始要求を受け付けると(ステップS2201肯定)、情報表示部15bは、再検討必要箇所と検討履歴とを対応付けて表示する(ステップS2202)。
すなわち、情報表示部15bは、ソフトウェア開発者から『「レベル3」までのすべての再検討必要箇所を表示』とする再検討作業開始要求を受け付けると、例えば、図17に示すような画面を、出力部12にて表示する。
そして、検討履歴更新部15cは、ソフトウェア開発者からの検討履歴の更新を受け付けるまで待機し(ステップS2203)、検討履歴の更新を受け付けなかった場合は(ステップS2203否定)、ソフトウェア開発者からの再検討作業終了要求を受け付けるまで待機する(ステップS2205)。
これに反して、ソフトウェア開発者からの検討履歴の更新を受け付けると(ステップS2203肯定)、検討履歴更新部15cは、検討履歴を更新する(ステップS2204)。
例えば、「2007年2月26日」に、ソフトウェア開発者である「日本太郎」が、図17に示す「新ソースウィンドウ」における「レベル0」の再検討必要箇所のうち、「5行目」、「9行目」および「11〜14行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「設計仕様所に記載の処理を追加。特に問題なし」とする「指摘メモ」とともに、「検討状態」を「検討済み」とする入力を受け付け(図18の左側参照)、さらに、図17に示す「新ソースウィンドウ」における「レベル0」の再検討必要箇所のうち、「6行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「変数「y」が初期化されていない。確認すること」とする「指摘メモ」とともに、「検討状態」を「未検討」とする入力を受け付けると(図18の右側参照)、検討履歴更新部15cは、図16の(B)に示すように、検討履歴を更新する。なお、情報表示部15bは、検討履歴更新部15cによって、図16の(B)に示すように、検討履歴が更新されると、図19に示すように、出力部12にて表示される画面を変更する。
そして、実施例1におけるソースプログラム再検討装置10は、ソフトウェア開発者からの再検討作業終了要求を受け付けると(ステップS2205肯定)、処理を終了する。
[実施例1の効果]
上記したように、実施例1によれば、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出し、抽出された記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を検討履歴更新部15cに記憶し、抽出された再検討必要箇所と、検討履歴更新部15cに記憶された検討済みか未検討かの検討履歴とを対応付けた情報を出力部12(モニタ)にて表示し、出力部12(モニタ)において未検討として表示された再検討必要箇所について、入力部11から検討済みと受け付けた場合に、検討履歴更新部15cに記憶された検討履歴を更新するので、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、信頼性の高い再検討を実現することが可能となる。
上記したように、実施例1によれば、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出し、抽出された記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を検討履歴更新部15cに記憶し、抽出された再検討必要箇所と、検討履歴更新部15cに記憶された検討済みか未検討かの検討履歴とを対応付けた情報を出力部12(モニタ)にて表示し、出力部12(モニタ)において未検討として表示された再検討必要箇所について、入力部11から検討済みと受け付けた場合に、検討履歴更新部15cに記憶された検討履歴を更新するので、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、信頼性の高い再検討を実現することが可能となる。
また、実施例1によれば、再検討必要箇所を前記修正後ソースプログラムの位置情報(行番号)に対応付けて抽出し、検討履歴更新部15cは、再検討必要箇所を修正後ソースプログラムの位置情報(行番号)に対応付けて記憶するので、修正前後で再検討必要箇所の位置情報(具体的には、再検討必要箇所がソースプログラムにおいて記載される行番号)にずれが生じた場合でも、常に更新された修正後の位置情報が反映された検討履歴を作成することができ、信頼性の高い再検討を実現することが可能となる。
また、実施例1によれば、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所を「レベル0」の再検討必要箇所として抽出し、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所を、影響の度合いで「レベル1」、「レベル2」および「レベル3」の再検討必要箇所としてレベル分けして抽出し、「レベル0」から「レベル3」にレベル分けされた再検討必要箇所との中から、入力部11から受け付けたレベルを再検討必要箇所として出力部12表示するので、顧客の必要性に応じたレベルの再検討必要箇所を表示することで、当該顧客が速やかに検討をすることができ、信頼性の高い再検討を実現することが可能となる。
さて、これまで実施例1におけるソースプログラム再検討装置について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてもよいものである。そこで、以下では、実施例2におけるソースプログラム再検討装置として、種々の異なる実施例を(1)〜(3)に区分けして説明する。
(1)再検討必要箇所
上記の実施例1では、最新のソースプログラムが格納されるごとに、再検討必要箇所を抽出する場合について説明したが、本発明はこれに限定されるものではなく、例えば、プログラム開発者からの再検討作業開始要求を受け付けて、再検討必要箇所を抽出する場合であってもよい。
上記の実施例1では、最新のソースプログラムが格納されるごとに、再検討必要箇所を抽出する場合について説明したが、本発明はこれに限定されるものではなく、例えば、プログラム開発者からの再検討作業開始要求を受け付けて、再検討必要箇所を抽出する場合であってもよい。
(2)システム構成等
また、上記の実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動でおこなうこともでき(例えば、プログラム開発者からの再検討作業開始要求を受け付けるのではなく、最新のソースプログラムが格納されると、自動的に再検討作業開始要求を生成するなど)、あるいは、手動的におこなうものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に更新することができる。
また、上記の実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動でおこなうこともでき(例えば、プログラム開発者からの再検討作業開始要求を受け付けるのではなく、最新のソースプログラムが格納されると、自動的に再検討作業開始要求を生成するなど)、あるいは、手動的におこなうものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に更新することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各処理部および各記憶部の分散・統合の具体的形態(例えば、図2の形態など)は図示のものに限られず、例えば、情報表示部15bと検討履歴更新部15cとを統合するなど、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(3)ソースプログラム再検討プログラム
ところで上記の実施例1では、ハードウェアロジックによって各種の処理を実現する場合を説明したが、本発明はこれに限定されるものではなく、あらかじめ用意されたプログラムをコンピュータで実行するようにしてもよい。そこで以下では、図23を用いて、上記の実施例1に示したソースプログラム再検討装置10と同様の機能を有するソースプログラム再検討プログラムを実行するコンピュータの一例を説明する。図23は、実施例1のソースプログラム再検討プログラムを実行するコンピュータを示す図である。
ところで上記の実施例1では、ハードウェアロジックによって各種の処理を実現する場合を説明したが、本発明はこれに限定されるものではなく、あらかじめ用意されたプログラムをコンピュータで実行するようにしてもよい。そこで以下では、図23を用いて、上記の実施例1に示したソースプログラム再検討装置10と同様の機能を有するソースプログラム再検討プログラムを実行するコンピュータの一例を説明する。図23は、実施例1のソースプログラム再検討プログラムを実行するコンピュータを示す図である。
図23に示すように、情報処理装置としてのコンピュータ230は、キーボード231、ディスプレイ232、CPU233、ROM234、HDD235およびRAM236をバス237などで接続して構成される。
ROM234には、上記の実施例1に示したソースプログラム再検討装置10と同様の機能を発揮するソースプログラム再検討プログラム、つまり、図23に示すように、再検討必要箇所抽出プログラム234a、情報表示プログラム234b、検討履歴更新プログラム234cが予め記憶されている。なお、これらのプログラム234a〜234cについては、図2に示したソースプログラム再検討装置10の各構成要素と同様、適宜統合または分散してもよい。
そして、CPU233が、これらのプログラム234a〜234cをROM234から読みだして実行することで、図23に示すように、各プログラム234a〜234cは、再検討必要箇所抽出プロセス233a、情報表示プロセス233b、検討履歴更新プロセス233cとして機能するようになる。なお、各プロセス233a〜233cは、図2に示した、再検討必要箇所抽出部15a、情報表示部15b、検討履歴更新部15cにそれぞれ対応する。
また、HDD235には、図23に示すように、ソースプログラムデータ235aと、抽出結果データ235bと、検討履歴データ235cとが設けられる。このソースプログラムデータ235aは、図2に用いたソースプログラム記憶部14aに対応し、抽出結果データ235bは、図2に用いた抽出結果記憶部14bに対応し、検討履歴データ235cは、図2に用いた検討履歴記憶部14cに対応する。そしてCPU233は、ソースプログラムデータ236aをソースプログラムデータ235aに対して登録し、抽出結果データ236bを抽出結果データ235bに対して登録し、検討履歴データ236cを検討履歴データ235cに対して登録し、このソースプログラムデータ236aと、抽出結果データ236bと、検討履歴データ236cとを読み出してRAM236に格納し、RAM236に格納されたソースプログラムデータ236aと、抽出結果データ236bと、検討履歴データ236cとに基づいてソースプログラム再検討処理を実行する。
なお、上記した各プログラム234a〜234cについては、必ずしも最初からROM234に記憶させておく必要はなく、例えばコンピュータ230に挿入されるフレキシブルディスク(FD)、CD−ROM、MOディスク、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」、または、コンピュータ230の内外に備えられるHDDなどの「固定用物理媒体」、さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ230に接続される「他のコンピュータ(またはサーバ)」などに各プログラムを記憶させておき、コンピュータ230がこれらから各プログラムを読み出して実行するようにしてもよい。
以上のように、本発明に係るソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置は、修正されたソースプログラムを再検討する場合に有用であり、特に、信頼性の高い再検討を実現することが可能なることに適する。
この発明は、ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置に関する。
従来より、既存のソースプログラムを修正して、新規機能を追加もしくは更新することにより、新たなソフトウェアを開発することが一般的に行なわれている。
このようなソフトウェアの開発においては、追加もしくは更新する処理が記載されている設計仕様書に基づいて既存のソースプログラムを修正したのちに、ソフトウェア開発者それぞれが、修正後のソースプログラムを再検討(レビュー)することが重要となる。
再検討(レビュー)作業においては、「設計仕様書に記載されている追加もしくは更新すべき処理が、修正後のソースプログラムにて実装されているか?」、「修正後のソースプログラムにおいて、追加もしくは更新された箇所の実行理論が正しいか?」、「修正後のソースプログラムにおいて、追加もしくは更新された箇所の記述形式が正しいか?」、「修正後のソースプログラムにおいて、追加もしくは更新された箇所が影響を及ぼす箇所があるか?」などの項目が、ソフトウェア開発者によって検討される。
具体的には、ソフトウェア開発者それぞれは、修正前後のソースプログラムを比較した差分情報を印刷した用紙を参照して(目視して)、上記した項目を検討し、修正後のソースプログラムにおける問題点を列挙する。そして、列挙された問題点すべてに対する検討処理を行なったことが、ソフトウェア開発者すべての間で確認された時点で、再検討(レビュー)作業が終了する。
ここで、特許文献1では、修正前後のソースプログラムの変更部分を抽出し、当該変更箇所を画面に出力することで、再検討(レビュー)作業におけるソフトウェア開発者の負担を軽減することが可能になるプログラム開発支援システムを開示している。
また、特許文献2および特許文献3では、ソースプログラムの変更によって、影響がおよぶ箇所を検索し、当該影響がおよぶ箇所を画面に出力することで、再検討(レビュー)作業におけるソフトウェア開発者の負担を軽減することが可能になるプログラム解析装置および変数検索装置を開示している。
ところで、上記した従来の技術は、ソフトウェア開発者それぞれが、修正後のソースプログラムにおける問題点について検討した形跡を履歴として残せないので、信頼性の高い再検討が実現できないという問題点があった。
すなわち、ソフトウェア開発者それぞれは、目視によって検討作業を実施しており、修正後のソースプログラムにおける問題点について検討した形跡を履歴として残せないので、信頼性の高い再検討が実現できないという問題点があった。
また、上記した従来の技術は、ソフトウェア開発者それぞれが、「ソースプログラムの変更により影響がおよぶ箇所」として認識される範囲を、本当にすべて検討したか履歴として残せないので、信頼性の高い再検討が実現できないという問題点があった。
また、上記した従来の技術は、ソースプログラムの修正前後で、検討すべき箇所の位置情報(具体的には、ソースプログラムにおいて記載される行番号)にずれが生じた場合、ソフトウェア開発者それぞれが、検討すべき箇所の位置情報を更新して作業を進めなければならないので、ソフトウェア開発者の負担を軽減することができず、信頼性の高い再検討が実現できないという問題点があった。
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、信頼性の高い再検討を実現することが可能となるソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置を提供することを目的とす
る。
る。
上述した課題を解決し、目的を達成するため、本発明は、修正されたソースプログラムを再検討するソースプログラム再検討方法をコンピュータに実行させるソースプログラム再検討プログラムであって、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手順と、前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶する検討履歴記憶手順と、前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所と、前記所定の記憶部に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手順と、前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記所定の記憶部に記憶された前記検討履歴を更新する検討履歴更新手順と、をコンピュータに実行させ、前記再検討必要箇所抽出手順は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けしたうえで、前記修正後ソースプログラムの位置情報に対応付けて抽出し、前記検討履歴記憶手順は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて前記所定の記憶部に記憶し、前記情報出力手順は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする。
また、本発明は、修正されたソースプログラムを再検討するソースプログラム再検討方法であって、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出工程と、前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶する検討履歴記憶工程と、前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所と、前記所定の記憶部に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力工程と、前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記所定の記憶部に記憶された前記検討履歴を更新する検討履歴更新工程と、を含み、前記再検討必要箇所抽出工程は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けしたうえで、前記修正後ソースプログラムの位置情報に対応付けて抽出し、前記検討履歴記憶工程は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて前記所定の記憶部に記憶し、前記情報出力工程は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする。
また、本発明は、修正されたソースプログラムを再検討するソースプログラム再検討装置であって、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手段と、前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する検討履歴記憶手段と、前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所と、前記検討履歴記憶手段に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手段と、前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記検討履歴記憶手段に記憶された前記検討履歴を更新する検討履歴更新手段と、を備え、前記再検討必要箇所抽出手段は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けしたうえで、前記修正後ソースプログラムの位置情報に対応付けて抽出し、前記検討履歴記憶手段は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶し、前記情報出力手段は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする。
本発明によれば、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出し、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶し、抽出された再検討必要箇所と、所定の記憶部に記憶された検討済みか未検討かの検討履歴とを対応付けた情報を所定の出力部に出力し、所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、所定の記憶部に記憶された検討履歴を更新するので、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、信頼性の高い再検討を実現することが可能となる。
また、本発明によれば、再検討必要箇所を修正後ソースプログラムの位置情報に対応付けて抽出し、再検討必要箇所を修正後ソースプログラムの位置情報に対応付けて記憶するので、修正前後で再検討必要箇所の位置情報(具体的には、再検討必要箇所がソースプログラムにおいて記載される行番号)にずれが生じた場合でも、常に更新された修正後の位置情報が反映された検討履歴を作成することができ、信頼性の高い再検討を実現することが可能となる。
また、本発明によれば、再検討必要箇所として、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所と、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を再検討必要箇所として出力するので、顧客の必要性に応じたレベルの再検討必要箇所を表示することで、当該顧客が速やかに検討をすることができ、信頼性の高い再検討を実現することが可能となる。
以下に添付図面を参照して、この発明に係るソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置の実施例を詳細に説明する。なお、以下では、この発明に係るソースプログラム再検討プログラムを含んで構成されるソースプログラム再検討装置を実施例として説明する。また、以下では、実施例1におけるソースプログラム再検討装置の概要および特徴、実施例1におけるソースプログラム再検討装置の構成および処理の手順、実施例1の効果を順に説明し、最後に、他の実施例について説明する。
[実施例1におけるソースプログラム再検討装置の概要および特徴]
まず最初に、図1−1および図1−2を用いて、実施例1におけるソースプログラム再検討装置の主たる特徴を具体的に説明する。図1−1および図1−2は、実施例1におけるソースプログラム再検討装置の概要および特徴を説明するための図である。
まず最初に、図1−1および図1−2を用いて、実施例1におけるソースプログラム再検討装置の主たる特徴を具体的に説明する。図1−1および図1−2は、実施例1におけるソースプログラム再検討装置の概要および特徴を説明するための図である。
実施例1におけるソースプログラム再検討装置は、修正されたソースプログラムを再検討することを概要とする。すなわち、実施例1におけるソースプログラム再検討装置は、追加もしくは更新する処理が記載されている設計仕様書に基づいて、ソフトウェア開発者が、既存のソースプログラムを修正したのちに、修正後のソースプログラムを再検討(レビュー)することを概要とする。
ここで、本発明は、信頼性の高い再検討を実現することが可能となることに主たる特徴がある。この主たる特徴について簡単に説明すると、実施例1におけるソースプログラム再検討装置は、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を、修正後ソースプログラムの位置情報に対応付けて抽出し、さらに、再検討必要箇所として、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所と、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出する。
例えば、実施例1におけるソースプログラム再検討装置は、図1−1の(A)に示すように、既存のソースプログラムである「修正前ソースプログラム」と、既存のソースプログラムを設計仕様書に基づいて、最初に修正した修正後ソースプログラムである「修正1回目ソースプログラム」とを比較して、再検討必要箇所を、修正後ソースプログラムの位置情報である「行番号」に対応付けて抽出する。
ここで、実施例1におけるソースプログラム再検討装置は、最初に、「修正1回目ソースプログラム」において「修正前ソースプログラム」から修正された箇所である修正箇所を、「レベル0」の再検討必要箇所として抽出する。すなわち、図1−1の(A)に示すように、実施例1におけるソースプログラム再検討装置は、「修正1回目ソースプログラム」と「修正前ソースプログラム」とを比較して、関数「funcA」の内容が変更されている「5行目」と、記載が追加されている「6行目」、「9行目」および「11〜14行目」とを、「レベル0」の再検討必要箇所として抽出する。
続いて、実施例1におけるソースプログラム再検討装置は、「レベル0」として抽出された再検討必要箇所の中でも、関数の内容が変更されている箇所によって、処理の流れが影響を受ける影響箇所を、「レベル1」の再検討必要箇所として抽出する。すなわち、図1−1の(A)に示すように、実施例1におけるソースプログラム再検討装置は、「レベル0」の再検討必要箇所の中でも、関数「funcA」の内容が変更されている「5行目」の箇所によって、直接、処理の流れに影響を受ける影響箇所である「7行目」および「8行目」を、「レベル1」の再検討必要箇所として抽出する。
さらに、実施例1におけるソースプログラム再検討装置は、「レベル0」として抽出された再検討必要箇所において「変更されている関数」を参照している箇所を、「レベル2」の再検討必要箇所として抽出する。すなわち、図1−1の(A)に示すように、実施例1におけるソースプログラム再検討装置は、「レベル0」の再検討必要箇所の中でも、関数「funcA」を参照する関数「funcB」の処理が記載されている「17行目」を、「レベル2」の再検討必要箇所として抽出する。
その後、実施例1におけるソースプログラム再検討装置は、「レベル2」として抽出された再検討必要箇所における関数によって影響を受ける箇所を、「レベル3」の再検討必要箇所として抽出する。すなわち、図1−1の(A)に示すように、実施例1におけるソースプログラム再検討装置は、「レベル2」の再検討必要箇所における関数「funcB」によって、直接、処理の流れに影響を受ける影響箇所である「18〜21行目」を、「レベル3」の再検討必要箇所として抽出する。
そして、実施例1におけるソースプログラム再検討装置は、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を、修正後ソースプログラムの位置情報に対応付けて所定の記憶部に記憶する。
すなわち、実施例1におけるソースプログラム再検討装置は、「レベル0」の再検討必要箇所として抽出された「5行目」、「6行目」、「9行目」および「11〜14行目」と、「レベル1」の再検討必要箇所として抽出された「7行目」および「8行目」と、「レベル2」の再検討必要箇所として抽出された「17行目」と、「レベル3」の再検討必要箇所として抽出された「18〜21行目」とが、それぞれ検討済みか未検討かを示す検討履歴を記憶する。なお、実施例1におけるソースプログラム再検討装置は、ソフトウェア開発者からの再検討開始要求を受け付けるまでは、これら「レベル0」から「レベル3」までの再検討必要箇所に関しては、「未検討」として記憶する。
そして、実施例1におけるソースプログラム再検討装置は、抽出された再検討必要箇所と、記憶された検討済みか未検討かの検討履歴とを対応付けた情報を所定の出力部に出力する。また、実施例1におけるソースプログラム再検討装置は、「レベル0」から「レベル3」までの再検討必要箇所において、ソフトウェア開発者から指定された「レベル」を所定の入力部から受け付け、当該「レベル」までの再検討必要箇所を表示する。
すなわち、実施例1におけるソースプログラム再検討装置は、ソフトウェア開発者から『「レベル3」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、例えば、図1−1の(A)に示すように、「修正1回目ソースプログラム」と「修正前ソースプログラム」とを並べて、モニタに表示するとともに、「修正1回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル0」から「レベル3」に対応する位置それぞれに「マーク」を付加して表示する。ここで、付加される「マーク」において、「白抜き四角(□)」は、「未検討」を示し、「黒塗り丸(●)」は、「検討済み」を示す。
なお、図1−1の(A)においては、「レベル0」の「5行目」、「9行目」および「11〜14行目」が、「検討済み」の「マーク」である「黒塗り丸(●)」が付加されて表示されている場合を示しているが、ソフトウェア開発者から『「レベル3」までのすべての再検討必要箇所を表示』との要求を、最初に受け付けた場合には、すべての再検討必要箇所である行番号の左側において、「未検討」の「マーク」である「白抜き四角(□)」が、「レベル0」から「レベル3」それぞれに応じた位置に、付加されて表示されるものとする。
そして、実施例1におけるソースプログラム再検討装置は、モニタにおいて、未検討として出力された再検討必要箇所について、所定の入力部から「検討済み」と受け付けた場合に、記憶された検討履歴を更新する。すなわち、実施例1におけるソースプログラム再検討装置は、例えば、「2007年2月26日」に、ソフトウェア開発者である「日本太郎」から、「レベル0」の「5行目」、「9行目」および「11〜14行目」において、「設計仕様所に記載の処理を追加。特に問題なし」とする「指摘メモ」とともに、「状態」を「検討済み」とする表示変更を受け付けた場合に、図1−1の(A)に示すように、行番号の左側において、「マーク」を、「未検討」の「白抜き四角(□)」から、「検討済み」の「黒塗り丸(●)」に変更して表示させるとともに、図1−1の(B)に示すように、検討履歴を更新する。
また、同じく、ソフトウェア開発者である「日本太郎」が、「レベル0」の「6行目」を参照して、問題点が解決されていない(変数「y」の初期化処理が記載されていない)と判断した場合、実施例1におけるソースプログラム再検討装置は、「変数「y」が初期化されていない。確認すること」とする「指摘メモ」のみを受け付けて、「未検討」の「マーク」である「白抜き四角(□)」は変更しない(図1−1の(B)参照)。なお、本実施例では、ソフトウェア開発者である「日本太郎」が、「レベル0」の再検討必要箇所のみを再検討して処理を終了したとする。
ここで、図1−1の(B)に示す状況で「修正1回目ソースプログラム」の再検討が終了し、この再検討結果に基づいて、ソフトウェア開発者が、「修正1回目ソースプログラム」を修正した「修正2回目ソースプログラム」を作成したとする。すなわち、図1−1の(B)に示す検討履歴において、「レベル0」の再検討必要箇所である「6行目」における指摘メモ「変数「y」が初期化されていない。確認すること」を参照したソフトウェア開発者が、図1−1の(A)に示す「修正1回目ソースプログラム」を修正して、図1−2の(C)に示す「修正2回目ソースプログラム」を作成したとする。なお、「修正2回目ソースプログラム」においては、「修正1回目ソースプログラム」における「6行目:int y,z;」が、「6行目:int y=0;」と「7行目:int z=0;」の2行に分割されており、6行目において、変数「y」の初期値が「0」と設定されているとともに、新たに、7行目において、変数「z」の初期値が「0」と設定されている。
そして、「修正2回目ソースプログラム」を格納した実施例1におけるソースプログラム再検討装置は、「修正2回目ソースプログラム」と「修正1回目ソースプログラム」とを比較して、再検討必要箇所を「修正2回目ソースプログラム」の位置情報(行番号)に対応付けて抽出する。
すなわち、「修正2回目ソースプログラム」を格納した実施例1におけるソースプログラム再検討装置は、「修正1回目ソースプログラム」において「レベル0」の再検討必要箇所として抽出された「5行目」、「6行目」、「9行目」および「11〜14行目」の箇所を、「修正2回目ソースプログラム」の行番号である「5行目」、「6行目」、「10行目」および「12〜15行目」に対応付けて抽出し、「修正1回目ソースプログラム」において「レベル1」の再検討必要箇所として抽出された「7行目」および「8行目」の箇所を、「修正2回目ソースプログラム」の行番号である「8行目」および「9行目」に対応付けて抽出し、「レベル2」の再検討必要箇所として抽出された「17行目」の箇所を、「修正2回目ソースプログラム」の行番号である「18行目」に対応付けて抽出し、「修正1回目ソースプログラム」において「レベル3」の再検討必要箇所として抽出された「18〜21行目」の箇所を、「修正2回目ソースプログラム」の行番号である「19〜22行目」に対応付けて抽出する。また、「修正2回目ソースプログラム」における「レベル0」の再検討必要箇所として、「7行目」の箇所も抽出する。
これにより、実施例1におけるソースプログラム再検討装置は、再度、ソフトウェア開発者から『「レベル3」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、図1−1の(B)に示す検討履歴の「行番号」を、「修正2回目ソースプログラム」における「行番号」に更新し、更新された検討履歴に基づいて、図1−2の(C)に示すように、「修正2回目ソースプログラム」と「修正前ソースプログラム」とを並べて表示するとともに、「修正2回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル0」から「レベル3」に対応する位置それぞれに「マーク」を付加して表示する。
すなわち、図1−2の(D)に示すように、「修正1回目ソースプログラム」において「レベル0」の再検討必要箇所として抽出された箇所の行番号である「5行目」、「6行目」、「9行目」および「11〜14行目」を、「修正2回目ソースプログラム」の行番号である「5行目」、「6行目」、「10行目」および「12〜15行目」に更新し、図1−2の(C)に示すように、更新された「修正2回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル0」から「レベル3」に対応する位置それぞれに「マーク」を付加して表示する。
このようなことから、実施例1におけるソースプログラム再検討装置は、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、上記した主たる特徴の通り、信頼性の高い再検討を実現することが可能となる。
[実施例1におけるソースプログラム再検討装置の構成]
次に、図2〜20を用いて、実施例1におけるソースプログラム再検討装置を説明する。図2は、実施例1におけるソースプログラム再検討装置の構成を示すブロック図であり、図3〜5は、実施例1におけるソースプログラム記憶部を説明するための図であり、図6〜15は、実施例1における再検討必要箇所抽出部を説明するための図であり、図16は、実施例1における検討履歴記憶部を説明するための図であり、図17〜20は、実施例1における情報表示部を説明するための図である。
次に、図2〜20を用いて、実施例1におけるソースプログラム再検討装置を説明する。図2は、実施例1におけるソースプログラム再検討装置の構成を示すブロック図であり、図3〜5は、実施例1におけるソースプログラム記憶部を説明するための図であり、図6〜15は、実施例1における再検討必要箇所抽出部を説明するための図であり、図16は、実施例1における検討履歴記憶部を説明するための図であり、図17〜20は、実施例1における情報表示部を説明するための図である。
図2に示すように、実施例1におけるソースプログラム再検討装置10は、入力部11と、出力部12と、入出力制御I/F部13と、記憶部14と、処理部15とから構成される。
入力部11は、各種の情報を入力し、キーボードやマウスなどを備えて構成され、特に本発明に密接に関連するものとしては、「ソースプログラムの格納」や「再検討必要箇所の表示要求」や「再検討必要箇所のレベル指定」や「検討履歴の更新」などを、例えば、キーボードから受け付けて入力する。
出力部12は、各種の情報を出力し、モニタやスピーカを備えて構成され、特に本発明に密接に関連するものとしては、後述する情報表示部15bによる処理結果を、例えば、モニタの画面に表示したりする。
入出力制御I/F部13は、入力部11および出力部12と、記憶部14および処理部15との間におけるデータ転送を制御する。
記憶部14は、処理部15による各種処理に用いるデータと、処理部15による各種処理結果を記憶し、特に本発明に密接に関連するものとしては、図2に示すように、ソースプログラム記憶部14aと、抽出結果記憶部14bと、検討履歴記憶部14cとを備える。ここで、検討履歴記憶部14cは、特許請求の範囲に記載の「検討履歴記憶手順」に対応する。
ソースプログラム記憶部14aは、修正前のソースプログラムである修正前ソースプログラムや、修正後のソースプログラムである修正後ソースプログラムを記憶する。具体的には、図3に示すように、既存のソースプログラムである「修正前ソースプログラム」を記憶したり、図4に示すように、「修正前ソースプログラム」を、設計仕様書に基づいて、最初に修正した修正後ソースプログラムである「修正1回目ソースプログラム」を記憶したり、図5に示すように、後述する検討履歴記憶部14cが記憶する検討履歴を参照して、ソフトウェア開発者が、「修正1回目ソースプログラム」をさらに修正した「修正2回目ソースプログラム」を記憶したりする。なお、図3〜5における「ソースプログラム」はすべて、C言語で記述された「ファイル名:sample.c」のファイルとして記憶されているとする。
抽出結果記憶部14bは、後述する再検討必要箇所抽出部15aが抽出した結果を記憶し、検討履歴記憶部14cは、後述する再検討必要箇所抽出部15aが抽出した再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する。なお、抽出結果記憶部14bと検討履歴記憶部14cとについては、後に詳述する。
処理部15は、入出力制御I/F部13から転送されたデータに基づき各種処理を実行し、特に本発明に密接に関連するものとしては、図2に示すように、再検討必要箇所抽出部15aと、情報表示部15bと、検討履歴更新部15cとを備える。ここで、再検討必要箇所抽出部15aは、特許請求の範囲に記載の「再検討必要箇所抽出手順」に対応し、情報表示部15bは、同じく「情報表示手順」に対応し、検討履歴更新部15cは、同じく「検討履歴更新手順」に対応する。
再検討必要箇所抽出部15aは、ソースプログラム記憶部14aが記憶する修正前ソースプログラムと、修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を、修正後ソースプログラムの位置情報に対応付けて抽出するが、さらに、再検討必要箇所として、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所と、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、その結果を抽出結果記憶部14bに格納する。
ここで、再検討必要箇所抽出部15aは、最初に、図3に示す「修正前ソースプログラム」と、図4に示す「修正1回目ソースプログラム」とを比較して、「修正1回目ソースプログラム」において「修正前ソースプログラム」から修正された箇所である修正箇所を、「レベル0」の再検討必要箇所として、「修正1回目ソースプログラム」の位置情報である「行番号」に対応付けて抽出する。
すなわち、図12に示すように、再検討必要箇所抽出部15aは、「修正1回目ソースプログラム」と「修正前ソースプログラム」とを比較して、関数「funcA」の内容が変更されている「5行目」と、記載が追加されている「6行目」、「9行目」および「11〜14行目」とを、「レベル0」の再検討必要箇所として抽出する。
続いて、再検討必要箇所抽出部15aは、「レベル0」の再検討必要箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所を、影響の度合いでレベル分けして抽出する。
具体的には、再検討必要箇所抽出部15aは、図3に示す「修正前ソースプログラム」を静的解析することによって、図6に示すように、「修正前ソースプログラム」における処理の流れをまとめた「制御フロー」を作成し、図7に示すように、「修正前ソースプログラム」における「定義、参照など」の処理の依存関係の流れをまとめた「データフロー」を作成する。さらに、再検討必要箇所抽出部15aは、図4に示す「修正1回目ソースプログラム」を静的解析することによって、図8に示すように、「修正1回目ソースプログラム」における「制御フロー」を作成し、図9に示すように、「修正1回目ソースプログラム」における「データフロー」を作成する。なお、図7および図9に示す「データフロー」において、破線の矢印は、処理間の参照関係を示している。すなわち、破線の終点における処理が、破線の始点における処理結果を参照して実施される処理であることを示している。
そして、再検討必要箇所抽出部15aは、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正1回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、「レベル0」として抽出された再検討必要箇所の中でも、関数の内容が変更されている箇所によって、処理の流れが影響を受ける影響箇所を、「レベル1」の再検討必要箇所として抽出する。すなわち、図13の(A)に示すように、再検討必要箇所抽出部15aは、「レベル0」の再検討必要箇所である「調査対象行番号」の中でも、「対象要素」である関数「funcA」の内容が変更されている「5行目」の箇所によって、直接、処理の流れに影響を受ける影響箇所である「7行目」および「8行目」を、「レベル1」の再検討必要箇所として抽出する。なお、「レベル0」の再検討必要箇所である「調査対象行番号」の「6行目」、「9行目」および「11〜14行目」からは、「レベル1」の再検討必要箇所は抽出されない。
さらに、再検討必要箇所抽出部15aは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正1回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、「レベル0」として抽出された再検討必要箇所において「変更されている関数」を参照している箇所を、「レベル2」の再検討必要箇所として抽出する。すなわち、図13の(B)に示すように、再検討必要箇所抽出部15aは、「調査対象行要素」である関数「funcA」を参照する「対象要素」としての関数「funcB」の処理が記載されている「17行目」を、「レベル2」の再検討必要箇所として抽出する。
その後、再検討必要箇所抽出部15aは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正1回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、「レベル2」として抽出された再検討必要箇所における関数によって影響を受ける箇所を、「レベル3」の再検討必要箇所として抽出する。すなわち、図13の(C)に示すように、再検討必要箇所抽出部15aは、「レベル2」の再検討必要箇所である「調査対象行番号:17行目」において記載される「対象要素」としての関数「funcB」によって、直接、処理の流れに影響を受ける影響箇所である「18〜21行目」を、「レベル3」の再検討必要箇所として抽出する。
抽出結果記憶部14bは、再検討必要箇所抽出部15aが抽出した再検討必要箇所を記憶する。例えば、図12および図13の(A)〜(C)に示すような「レベル0」から「レベル3」の再検討必要箇所を記憶する。
検討履歴記憶部14cは、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を、修正後ソースプログラムの位置情報に対応付けて記憶する。
すなわち、検討履歴記憶部14cは、「レベル0」の再検討必要箇所として抽出された「5行目」、「6行目」、「9行目」および「11〜14行目」と、「レベル1」の再検討必要箇所として抽出された「7行目」および「8行目」と、「レベル2」の再検討必要箇所として抽出された「17行目」と、「レベル3」の再検討必要箇所として抽出された「18〜21行目」とが、それぞれ検討済みか未検討かを示す検討履歴を記憶する。なお、検討履歴記憶部14cは、ソフトウェア開発者からの再検討開始要求を受け付けるまでは、図16の(A)に示すように、これら「レベル0」から「レベル3」までの再検討必要箇所に関しては、「未検討」であり、すべての項目において何も記憶されていない。
情報表示部15bは、抽出された再検討必要箇所と、記憶された検討済みか未検討かの検討履歴とを対応付けた情報を出力部12に出力する。また、情報表示部15bは、「レベル0」から「レベル3」までの再検討必要箇所において、ソフトウェア開発者から指定された「レベル」を所定の入力部から受け付け、当該「レベル」までの再検討必要箇所を表示する。
例えば、情報表示部15bは、ソフトウェア開発者から『「レベル3」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、図12および図13の(A)〜(C)に示すような「レベル0」から「レベル3」の再検討必要箇所を、図17に示す「再検討必要箇所一覧ウィンドウ」において、まとめて表示する。図17に示す「再検討必要箇所一覧ウィンドウ」においては、関数「funcA」に基づく「レベル0」の再検討必要箇所が「7箇所」あり、すべて未検討であることを「0 funcA0/7」として表示し、関数「funcA」に基づく「レベル1」の再検討必要箇所が「2箇所」あり、すべて未検討であることを「1 funcA0/2」として表示し、関数「funcB」に基づく「レベル2」の再検討必要箇所が「1箇所」あり、すべて未検討であることを「2 funcB0/1」として表示し、関数「funcB」に基づく「レベル3」の再検討必要箇所が「4箇所」あり、すべて未検討であることを「3 funcB0/4」として表示している。ここで、合計14箇所の再検討必要箇所すべてが未検討であることを、さらに、右下の「再検討実績 0/14」にて表示している。また、『「レベル3」までのすべての再検討必要箇所を表示』との要求を受け付けたことを、右上の「レベル3」にて表示している。
また、情報表示部15bは、図17に示す「再検討必要箇所一覧ウィンドウ」において、「0 funcA0/7」の表示部分が、ソフトウェア開発者によって押下されたことを入力部11から受け付けると、「検討履歴ウィンドウ」において、「レベル0」の再検討必要箇所における「検討履歴」を表示する。図17に示す「検討履歴ウィンドウ」においては、図16の(A)に示す検討履歴記憶部14bが記憶する内容に基づいて、「5行目」、「6行目」、「9行目」および「11〜14行目」はすべて未検討であり、何も記憶されていないことを表示している。
さらに、情報表示部15bは、図17に示すように、「新ソースウィンドウ」に「修正1回目ソースプログラム」を表示し、「旧ソースウィンドウ」に「修正前ソースプログラム」を表示する。また、情報表示部15bは、図17に示す「新ソースウィンドウ」にて、「修正1回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル0」から「レベル3」に対応する位置それぞれに「マーク」を付加して表示する。ここで、情報表示部15bは、付加される「マーク」を、「未検討」を示す「白抜き四角
(□)」として表示する。
(□)」として表示する。
検討履歴更新部15cは、モニタにおいて未検討として出力された再検討必要箇所について、入力部11から「検討済み」と受け付けた場合に、検討履歴記憶部14cが記憶する検討履歴を更新する。例えば、「2007年2月26日」に、ソフトウェア開発者である「日本太郎」が、図17に示す「新ソースウィンドウ」における「レベル0」の再検討必要箇所のうち、「5行目」、「9行目」および「11〜14行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「設計仕様所に記載の処理を追加。特に問題なし」とする「指摘メモ」とともに、「検討状態」を「検討済み」とする入力を受け付け(図18の左側参照)、さらに、図17に示す「新ソースウィンドウ」における「レベル0」の再検討必要箇所のうち、「6行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「変数「y」が初期化されていない。確認すること」とする「指摘メモ」とともに、「検討状態」を「未検討」とする入力を受け付けると(図18の右側参照)、検討履歴更新部15cは、図16の(B)に示すように、検討履歴を更新する。
そして、情報表示部15bは、検討履歴更新部15cによって、図16の(B)に示すように、検討履歴が更新されると、図19に示すように、出力部12にて表示される画面を変更する。すなわち、「検討履歴ウィンドウ」における表示を、図19に示すように変更し、さらに、「新ソースウィンドウ」における「5行目」、「9行目」および「11〜14行目」の「マーク」を、「未検討」である「白抜き四角(□)」から、「検討済み」である「黒塗り丸(●)」に変更して表示する。また、図17に示す「再検討必要箇所一覧ウィンドウ」においては、関数「funcA」に基づく「レベル0」の再検討必要箇所が「7箇所」中「6箇所」が「検討済み」となったので、「0 funcA0/7」を「0 funcA6/7」と変更して表示する。さらに、右下の「再検討実績」を「6/14」と変更して表示する。
ここで、入力部11が、図19に示す状況で「修正1回目ソースプログラム」の再検討作業終了要求を、ソフトウェア開発者から受け付け、その後、ソフトウェア開発者が、この再検討結果に基づいて、「修正1回目ソースプログラム」を修正した「修正2回目ソースプログラム」を作成し、さらに、「修正2回目ソースプログラム」がソースプログラム記憶部14aに格納されたとする。
例えば、図19の「検討履歴ウィンドウ」における「レベル0」の再検討必要箇所である「6行目」における指摘メモ「変数「y」が初期化されていない。確認すること」を参照したソフトウェア開発者が、図4に示す「修正1回目ソースプログラム」を修正して、図5に示す「修正2回目ソースプログラム」を作成したとする。ここで、図5に示すように、「修正2回目ソースプログラム」においては、「修正1回目ソースプログラム」における「6行目:int y,z;」が、「6行目:int y=0;」と「7行目:int z=0;」の2行に分割されて修正されており、6行目において、変数「y」の初期値が「0」と設定されているとともに、新たに、7行目において、変数「z」の初期値が「0」と設定されている。
すると、再検討必要箇所抽出部15aは、「修正2回目ソースプログラム」と「修正1回目ソースプログラム」とを比較して、再検討必要箇所を「修正2回目ソースプログラム」の位置情報(行番号)に対応付けて抽出する。
すなわち、再検討必要箇所抽出部15aは、図14に示すように、「修正2回目ソースプログラム」と「修正1回目ソースプログラム」とを比較して、「修正1回目ソースプログラム」において「レベル0」の再検討必要箇所として抽出された「5行目」、「6行目」、「9行目」および「11〜14行目」の箇所を、「修正2回目ソースプログラム」の行番号である「5行目」、「6行目」、「10行目」および「12〜15行目」に対応付けて抽出し、また、「修正2回目ソースプログラム」における「レベル0」の再検討必要箇所として、新たに「7行目」の箇所も抽出する。
さらに、再検討必要箇所抽出部15aは、図5に示す「修正2回目ソースプログラム」を静的解析することによって、図10に示すように、「修正2回目ソースプログラム」における「制御フロー」を作成し、図11に示すように、「修正2回目ソースプログラム」における「データフロー」を作成する。なお、図11に示す「データフロー」において、破線の矢印は、処理間の参照関係を示している。すなわち、破線の終点における処理が、破線の始点における処理結果を参照して実施される処理であることを示している。
そして、再検討必要箇所抽出部15aは、これら新たに作成された「制御フロー」および「データフロー」を参照して、図15の(A)に示すように、「修正1回目ソースプログラム」において「レベル1」の再検討必要箇所として抽出された「7行目」および「8行目」の箇所を(図13の(A)参照)、「修正2回目ソースプログラム」の行番号である「8行目」および「9行目」に対応付けて抽出し、図15の(B)に示すように、「レベル2」の再検討必要箇所として抽出された「17行目」の箇所を(図13の(B)参照)、「修正2回目ソースプログラム」の行番号である「18行目」に対応付けて抽出し、図15の(C)に示すように、「修正1回目ソースプログラム」において「レベル3」の再検討必要箇所として抽出された「18〜21行目」の箇所を(図13の(C)参照)、「修正2回目ソースプログラム」の行番号である「19〜22行目」に対応付けて抽出する。そして、再検討必要箇所抽出部15aは、図14および図15の(A)〜(C)に示す抽出結果を、抽出結果記憶部14bに格納する。
ここで、検討履歴更新部15cは、再度、ソフトウェア開発者から『「レベル3」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、抽出結果記憶部14bに格納された抽出結果に基づいて、図16の(C)に示すように、「レベル0」の再検討必要箇所の検討履歴を更新し、情報表示部15bは、検討履歴更新部15cによって更新された検討履歴に基づいて、図20に示すような画面を表示する。
すなわち、図20に示す「再検討必要箇所一覧ウィンドウ」においては、関数「funcA」に基づく「レベル0」の再検討必要箇所が、7行目が新たに追加されて「8箇所」となり、そのうち「6箇所」が「検討済み」であることを「0 funcA6/8」として表示し、関数「funcA」に基づく「レベル1」の再検討必要箇所が「2箇所」あり、すべて未検討であることを「1 funcA0/2」として表示し、関数「funcB」に基づく「レベル2」の再検討必要箇所が「1箇所」あり、すべて未検討であることを「2 funcB0/1」として表示し、関数「funcB」に基づく「レベル3」の再検討必要箇所が「4箇所」あり、すべて未検討であることを「3 funcB0/4」として表示している。ここで、合計15箇所の再検討必要箇所のうち「6箇所」が「検討済み」であることを、さらに、右下の「再検討実績 6/15」にて表示している。
さらに、情報表示部15bは、図20に示すように、「新ソースウィンドウ」に「修正2回目ソースプログラム」を表示し、「旧ソースウィンドウ」に「修正前ソースプログラム」を表示する。また、情報表示部15bは、図20に示す「新ソースウィンドウ」にて、「修正2回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル0」から「レベル3」に対応する位置それぞれに「マーク」を付加して表示する。例えば、情報表示部15bは、「未検討」を示す「白抜き四角(□)」の「マーク」を、「レベル0」の再検討必要箇所として「修正2回目ソースプログラム」における「6行目」および「7行目」にて表示する。
[実施例1におけるソースプログラム再検討装置による処理の手順]
次に、図21および図22を用いて、実施例1におけるソースプログラム再検討装置10による処理を説明する。図21は、実施例1におけるソースプログラム再検討装置の再検討必要箇所の抽出処理を説明するための図であり、図21は、実施例1におけるソースプログラム再検討装置の検討履歴更新処理を説明するための図である。
次に、図21および図22を用いて、実施例1におけるソースプログラム再検討装置10による処理を説明する。図21は、実施例1におけるソースプログラム再検討装置の再検討必要箇所の抽出処理を説明するための図であり、図21は、実施例1におけるソースプログラム再検討装置の検討履歴更新処理を説明するための図である。
[実施例1におけるソースプログラム再検討装置の再検討必要箇所の抽出処理の手順]
まず、実施例1におけるソースプログラム再検討装置10は、修正後のソースプログラムが、ソースプログラム記憶部14aに格納されると(ステップS2101肯定)、再検討必要箇所抽出部15aは、修正前後のソースプログラムと、修正前後のソースプログラムにおける制御フローおよびデータフローとから、「レベル0」から「レベル3」の再検討必要箇所を、修正後(最新)のソースプログラムの位置情報(行番号)に対応付けて抽出し(ステップS2102)、処理を終了する。
まず、実施例1におけるソースプログラム再検討装置10は、修正後のソースプログラムが、ソースプログラム記憶部14aに格納されると(ステップS2101肯定)、再検討必要箇所抽出部15aは、修正前後のソースプログラムと、修正前後のソースプログラムにおける制御フローおよびデータフローとから、「レベル0」から「レベル3」の再検討必要箇所を、修正後(最新)のソースプログラムの位置情報(行番号)に対応付けて抽出し(ステップS2102)、処理を終了する。
例えば、再検討必要箇所抽出部15aは、「修正1回目ソースプログラム」が格納されると、最初に、図3に示す「修正前ソースプログラム」と、図4に示す「修正1回目ソースプログラム」とを比較して、図12に示すように、関数「funcA」の内容が変更されている「5行目」と、記載が追加されている「6行目」、「9行目」および「11〜14行目」とを、「レベル0」の再検討必要箇所として抽出する。
続いて、再検討必要箇所抽出部15aは、図3に示す「修正前ソースプログラム」を静的解析することによって、図6に示す「制御フロー」と、図7に示す「データフロー」とを作成し、さらに、図4に示す「修正1回目ソースプログラム」を静的解析することによって、図8に示す「制御フロー」と、図9に示す「データフロー」とを作成し、これらを参照して、図13の(A)に示すように、「レベル0」の再検討必要箇所である「調査対象行番号」の中でも、「対象要素」である関数「funcA」の内容が変更されている「5行目」の箇所によって、直接、処理の流れに影響を受ける影響箇所である「7行目」および「8行目」を、「レベル1」の再検討必要箇所として抽出する。
さらに、再検討必要箇所抽出部15aは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正1回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、図13の(B)に示すように、「調査対象行要素」である関数「funcA」を参照する「対象要素」としての関数「funcB」の処理が記載されている「17行目」を、「レベル2」の再検討必要箇所として抽出する。
その後、再検討必要箇所抽出部15aは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正1回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、図13の(C)に示すように、「レベル2」の再検討必要箇所である「調査対象行番号:17行目」において記載される「対象要素」としての関数「funcB」によって、直接、処理の流れに影響を受ける影響箇所である「18〜21行目」を、「レベル3」の再検討必要箇所として抽出する。
また、再検討必要箇所抽出部15aは、「修正2回目ソースプログラム」が格納されると、図14に示すように、「修正2回目ソースプログラム」と「修正1回目ソースプログラム」とを比較して、「修正1回目ソースプログラム」において「レベル0」の再検討必要箇所として抽出された「5行目」、「6行目」、「9行目」および「11〜14行目」の箇所を、「修正2回目ソースプログラム」の行番号である「5行目」、「6行目」、「10行目」および「12〜15行目」に対応付けて抽出し、また、「修正2回目ソースプログラム」における「レベル0」の再検討必要箇所として、新たに「7行目」の箇所も抽出する。
さらに、再検討必要箇所抽出部15aは、図5に示す「修正2回目ソースプログラム」を静的解析することによって、図10に示すように、「修正2回目ソースプログラム」における「制御フロー」を作成し、図11に示すように、「修正2回目ソースプログラム」における「データフロー」を作成し、これら新たに作成された「制御フロー」および「データフロー」を参照して、図15の(A)に示すように、「修正1回目ソースプログラム」において「レベル1」の再検討必要箇所として抽出された「7行目」および「8行目」の箇所を、「修正2回目ソースプログラム」の行番号である「8行目」および「9行目」に対応付けて抽出し、図15の(B)に示すように、「レベル2」の再検討必要箇所として抽出された「17行目」の箇所を、「修正2回目ソースプログラム」の行番号である「18行目」に対応付けて抽出し、図15の(C)に示すように、「修正1回目ソースプログラム」において「レベル3」の再検討必要箇所として抽出された「18〜21行目」の箇所を、「修正2回目ソースプログラム」の行番号である「19〜22行目」に対応付けて抽出する。
[実施例1におけるソースプログラム再検討装置の検討履歴更新処理の手順]
まず、実施例1におけるソースプログラム再検討装置10は、ソフトウェア開発者から再検討作業開始要求を受け付けると(ステップS2201肯定)、情報表示部15bは、再検討必要箇所と検討履歴とを対応付けて表示する(ステップS2202)。
まず、実施例1におけるソースプログラム再検討装置10は、ソフトウェア開発者から再検討作業開始要求を受け付けると(ステップS2201肯定)、情報表示部15bは、再検討必要箇所と検討履歴とを対応付けて表示する(ステップS2202)。
すなわち、情報表示部15bは、ソフトウェア開発者から『「レベル3」までのすべての再検討必要箇所を表示』とする再検討作業開始要求を受け付けると、例えば、図17に示すような画面を、出力部12にて表示する。
そして、検討履歴更新部15cは、ソフトウェア開発者からの検討履歴の更新を受け付けるまで待機し(ステップS2203)、検討履歴の更新を受け付けなかった場合は(ステップS2203否定)、ソフトウェア開発者からの再検討作業終了要求を受け付けるまで待機する(ステップS2205)。
これに反して、ソフトウェア開発者からの検討履歴の更新を受け付けると(ステップS2203肯定)、検討履歴更新部15cは、検討履歴を更新する(ステップS2204)。
例えば、「2007年2月26日」に、ソフトウェア開発者である「日本太郎」が、図17に示す「新ソースウィンドウ」における「レベル0」の再検討必要箇所のうち、「5行目」、「9行目」および「11〜14行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「設計仕様所に記載の処理を追加。特に問題なし」とする「指摘メモ」とともに、「検討状態」を「検討済み」とする入力を受け付け(図18の左側参照)、さらに、図17に示す「新ソースウィンドウ」における「レベル0」の再検討必要箇所のうち、「6行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「変数「y」が初期化されていない。確認すること」とする「指摘メモ」とともに、「検討状態」を「未検討」とする入力を受け付けると(図18の右側参照)、検討履歴更新部15cは、図16の(B)に示すように、検討履歴を更新する。なお、情報表示部15bは、検討履歴更新部15cによって、図16の(B)に示すように、検討履歴が更新されると、図19に示すように、出力部12にて表示される画面を変更する。
そして、実施例1におけるソースプログラム再検討装置10は、ソフトウェア開発者からの再検討作業終了要求を受け付けると(ステップS2205肯定)、処理を終了する。
[実施例1の効果]
上記したように、実施例1によれば、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出し、抽出された記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を検討履歴更新部15cに記憶し、抽出された再検討必要箇所と、検討履歴更新部15cに記憶された検討済みか未検討かの検討履歴とを対応付けた情報を出力部12(モニタ)にて表示し、出力部12(モニタ)において未検討として表示された再検討必要箇所について、入力部11から検討済みと受け付けた場合に、検討履歴更新部15cに記憶された検討履歴を更新するので、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、信頼性の高い再検討を実現することが可能となる。
上記したように、実施例1によれば、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出し、抽出された記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を検討履歴更新部15cに記憶し、抽出された再検討必要箇所と、検討履歴更新部15cに記憶された検討済みか未検討かの検討履歴とを対応付けた情報を出力部12(モニタ)にて表示し、出力部12(モニタ)において未検討として表示された再検討必要箇所について、入力部11から検討済みと受け付けた場合に、検討履歴更新部15cに記憶された検討履歴を更新するので、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、信頼性の高い再検討を実現することが可能となる。
また、実施例1によれば、再検討必要箇所を前記修正後ソースプログラムの位置情報(行番号)に対応付けて抽出し、検討履歴更新部15cは、再検討必要箇所を修正後ソースプログラムの位置情報(行番号)に対応付けて記憶するので、修正前後で再検討必要箇所の位置情報(具体的には、再検討必要箇所がソースプログラムにおいて記載される行番号)にずれが生じた場合でも、常に更新された修正後の位置情報が反映された検討履歴を作成することができ、信頼性の高い再検討を実現することが可能となる。
また、実施例1によれば、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所を「レベル0」の再検討必要箇所として抽出し、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所を、影響の度合いで「レベル1」、「レベル2」および「レベル3」の再検討必要箇所としてレベル分けして抽出し、「レベル0」から「レベル3」にレベル分けされた再検討必要箇所との中から、入力部11から受け付けたレベルを再検討必要箇所として出力部12表示するので、顧客の必要性に応じたレベルの再検討必要箇所を表示することで、当該顧客が速やかに検討をすることができ、信頼性の高い再検討を実現することが可能となる。
さて、これまで実施例1におけるソースプログラム再検討装置について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてもよいものである。そこで、以下では、実施例2におけるソースプログラム再検討装置として、種々の異なる実施例を(1)〜(3)に区分けして説明する。
(1)再検討必要箇所
上記の実施例1では、最新のソースプログラムが格納されるごとに、再検討必要箇所を抽出する場合について説明したが、本発明はこれに限定されるものではなく、例えば、プログラム開発者からの再検討作業開始要求を受け付けて、再検討必要箇所を抽出する場合であってもよい。
上記の実施例1では、最新のソースプログラムが格納されるごとに、再検討必要箇所を抽出する場合について説明したが、本発明はこれに限定されるものではなく、例えば、プログラム開発者からの再検討作業開始要求を受け付けて、再検討必要箇所を抽出する場合であってもよい。
(2)システム構成等
また、上記の実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動でおこなうこともでき(例えば、プログラム開発者からの再検討作業開始要求を受け付けるのではなく、最新のソースプログラムが格納されると、自動的に再検討作業開始要求を生成するなど)、あるいは、手動的におこなうものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に更新することができる。
また、上記の実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動でおこなうこともでき(例えば、プログラム開発者からの再検討作業開始要求を受け付けるのではなく、最新のソースプログラムが格納されると、自動的に再検討作業開始要求を生成するなど)、あるいは、手動的におこなうものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に更新することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各処理部および各記憶部の分散・統合の具体的形態(例えば、図2の形態など)は図示のものに限られず、例えば、情報表示部15bと検討履歴更新部15cとを統合するなど、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(3)ソースプログラム再検討プログラム
ところで上記の実施例1では、ハードウェアロジックによって各種の処理を実現する場合を説明したが、本発明はこれに限定されるものではなく、あらかじめ用意されたプログラムをコンピュータで実行するようにしてもよい。そこで以下では、図23を用いて、上記の実施例1に示したソースプログラム再検討装置10と同様の機能を有するソースプログラム再検討プログラムを実行するコンピュータの一例を説明する。図23は、実施例1のソースプログラム再検討プログラムを実行するコンピュータを示す図である。
ところで上記の実施例1では、ハードウェアロジックによって各種の処理を実現する場合を説明したが、本発明はこれに限定されるものではなく、あらかじめ用意されたプログラムをコンピュータで実行するようにしてもよい。そこで以下では、図23を用いて、上記の実施例1に示したソースプログラム再検討装置10と同様の機能を有するソースプログラム再検討プログラムを実行するコンピュータの一例を説明する。図23は、実施例1のソースプログラム再検討プログラムを実行するコンピュータを示す図である。
図23に示すように、情報処理装置としてのコンピュータ230は、キーボード231、ディスプレイ232、CPU233、ROM234、HDD235およびRAM236をバス237などで接続して構成される。
ROM234には、上記の実施例1に示したソースプログラム再検討装置10と同様の機能を発揮するソースプログラム再検討プログラム、つまり、図23に示すように、再検討必要箇所抽出プログラム234a、情報表示プログラム234b、検討履歴更新プログラム234cが予め記憶されている。なお、これらのプログラム234a〜234cについては、図2に示したソースプログラム再検討装置10の各構成要素と同様、適宜統合または分散してもよい。
そして、CPU233が、これらのプログラム234a〜234cをROM234から読みだして実行することで、図23に示すように、各プログラム234a〜234cは、再検討必要箇所抽出プロセス233a、情報表示プロセス233b、検討履歴更新プロセス233cとして機能するようになる。なお、各プロセス233a〜233cは、図2に示した、再検討必要箇所抽出部15a、情報表示部15b、検討履歴更新部15cにそれぞれ対応する。
また、HDD235には、図23に示すように、ソースプログラムデータ235aと、抽出結果データ235bと、検討履歴データ235cとが設けられる。このソースプログラムデータ235aは、図2に用いたソースプログラム記憶部14aに対応し、抽出結果データ235bは、図2に用いた抽出結果記憶部14bに対応し、検討履歴データ235cは、図2に用いた検討履歴記憶部14cに対応する。そしてCPU233は、ソースプログラムデータ236aをソースプログラムデータ235aに対して登録し、抽出結果データ236bを抽出結果データ235bに対して登録し、検討履歴データ236cを検討履歴データ235cに対して登録し、このソースプログラムデータ236aと、抽出結果データ236bと、検討履歴データ236cとを読み出してRAM236に格納し、RAM236に格納されたソースプログラムデータ236aと、抽出結果データ236bと、検討履歴データ236cとに基づいてソースプログラム再検討処理を実行する。
なお、上記した各プログラム234a〜234cについては、必ずしも最初からROM234に記憶させておく必要はなく、例えばコンピュータ230に挿入されるフレキシブルディスク(FD)、CD−ROM、MOディスク、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」、または、コンピュータ230の内外に備えられるHDDなどの「固定用物理媒体」、さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ230に接続される「他のコンピュータ(またはサーバ)」などに各プログラムを記憶させておき、コンピュータ230がこれらから各プログラムを読み出して実行するようにしてもよい。
以上のように、本発明に係るソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置は、修正されたソースプログラムを再検討する場合に有用であり、特に、信頼性の高い再検討を実現することが可能なることに適する。
10 ソースプログラム再検討装置
11 入力部
12 出力部
13 入出力制御I/F部
14 記憶部
14a ソースプログラム記憶部
14b 抽出結果記憶部
14c 検討履歴記憶部
15 処理部
15a 再検討必要箇所抽出部
15b 情報表示部
15c 検討履歴更新部
11 入力部
12 出力部
13 入出力制御I/F部
14 記憶部
14a ソースプログラム記憶部
14b 抽出結果記憶部
14c 検討履歴記憶部
15 処理部
15a 再検討必要箇所抽出部
15b 情報表示部
15c 検討履歴更新部
Claims (9)
- 修正されたソースプログラムを再検討するソースプログラム再検討方法をコンピュータに実行させるソースプログラム再検討プログラムであって、
修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手順と、
前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶する検討履歴記憶手順と、
前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所と、前記所定の記憶部に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手順と、
前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記所定の記憶部に記憶された前記検討履歴を更新する検討履歴更新手順と、
をコンピュータに実行させることを特徴とするソースプログラム再検討プログラム。 - 前記再検討必要箇所抽出手順は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて抽出し、
前記検討履歴記憶手順は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶することを特徴とする請求項1に記載のソースプログラム再検討プログラム。 - 前記再検討必要箇所抽出手順は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、
前記情報出力手順は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする請求項2に記載のソースプログラム再検討プログラム。 - 修正されたソースプログラムを再検討するソースプログラム再検討方法であって、
修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出工程と、
前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する検討履歴記憶工程と、
前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所と、前記検討履歴記憶工程によって記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力工程と、
前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記検討履歴記憶工程によって記憶された前記検討履歴を更新する検討履歴更新工程と、
を含んだことを特徴とするソースプログラム再検討方法。 - 前記再検討必要箇所抽出工程は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて抽出し、
前記検討履歴記憶工程は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶することを特徴とする請求項4に記載のソースプログラム再検討方法。 - 前記再検討必要箇所抽出工程は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、
前記情報出力工程は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする請求項5に記載のソースプログラム再検討方法。 - 修正されたソースプログラムを再検討するソースプログラム再検討装置であって、
修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手段と、
前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する検討履歴記憶手段と、
前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所と、前記検討履歴記憶手段によって記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手段と、
前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記検討履歴記憶手段によって記憶された前記検討履歴を更新する検討履歴更新手段と、
を備えたことを特徴とするソースプログラム再検討装置。 - 前記再検討必要箇所抽出手段は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて抽出し、
前記検討履歴記憶手段は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶することを特徴とする請求項1に記載のソースプログラム再検討プログラム。 - 前記再検討必要箇所抽出手段は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、
前記情報出力手段は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする請求項2に記載のソースプログラム再検討プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2007/057852 WO2008129619A1 (ja) | 2007-04-09 | 2007-04-09 | ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2008129619A1 true JPWO2008129619A1 (ja) | 2010-07-22 |
JP5056849B2 JP5056849B2 (ja) | 2012-10-24 |
Family
ID=39875167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009510657A Expired - Fee Related JP5056849B2 (ja) | 2007-04-09 | 2007-04-09 | ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20100037209A1 (ja) |
JP (1) | JP5056849B2 (ja) |
CN (1) | CN101641678B (ja) |
WO (1) | WO2008129619A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8627286B2 (en) * | 2010-03-26 | 2014-01-07 | Oracle International Corporation | Fully declarative build system for build optimization |
US20110271253A1 (en) * | 2010-04-28 | 2011-11-03 | International Business Machines Corporation | Enhancing functional tests coverage using traceability and static analysis |
JP5741265B2 (ja) * | 2011-07-13 | 2015-07-01 | 富士電機株式会社 | プログラム改善支援システム |
JP2013045307A (ja) * | 2011-08-24 | 2013-03-04 | Nec Corp | 静的解析システム、静的解析結果表示方法及びプログラム |
US20140317452A1 (en) * | 2011-10-18 | 2014-10-23 | Nec Corporation | Error detecting apparatus, program and method |
US20130311440A1 (en) * | 2012-05-15 | 2013-11-21 | International Business Machines Corporation | Comparison search queries |
US9158518B2 (en) * | 2013-03-11 | 2015-10-13 | Blackberry Limited | Collaborative application development environment using a connected device |
US9773264B2 (en) | 2013-03-26 | 2017-09-26 | Blackberry Limited | Method for providing composite user interface controls and an online storefront for same |
US10127506B2 (en) * | 2015-08-07 | 2018-11-13 | International Business Machines Corporation | Determining users for limited product deployment based on review histories |
JP6847710B2 (ja) * | 2017-02-28 | 2021-03-24 | 本田技研工業株式会社 | 設計支援システム、設計支援方法、及びプログラム |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6216140B1 (en) * | 1997-09-17 | 2001-04-10 | Hewlett-Packard Company | Methodology for the efficient management of hierarchically organized information |
US7071934B1 (en) * | 1998-03-20 | 2006-07-04 | International Business Machines Corp. | Method and apparatus for visually-oriented navigation of compared object versions |
JPH11327879A (ja) * | 1998-05-15 | 1999-11-30 | Fujitsu Ltd | 変数検索装置及び方法並びに変数検索プログラムを記録したコンピュータ読取り可能な記録媒体 |
US6658626B1 (en) * | 1998-07-31 | 2003-12-02 | The Regents Of The University Of California | User interface for displaying document comparison information |
US7194679B1 (en) * | 1998-10-20 | 2007-03-20 | International Business Machines Corporation | Web-based file review system utilizing source and comment files |
EP1356377A2 (en) * | 2000-10-04 | 2003-10-29 | Siemens Energy & Automation, Inc. | Manufacturing system software version management |
US7152224B1 (en) * | 2000-11-21 | 2006-12-19 | Microsoft Corporation | Versioned project associations |
US6910204B1 (en) * | 2001-04-13 | 2005-06-21 | Unisys Corporation | Software development methodology including creation of focus areas and decomposition of same to create use cases |
US6662198B2 (en) * | 2001-08-30 | 2003-12-09 | Zoteca Inc. | Method and system for asynchronous transmission, backup, distribution of data and file sharing |
JP2004126866A (ja) * | 2002-10-01 | 2004-04-22 | Mitsubishi Electric Corp | 記述出力抑制プログラム解析装置及び記述出力抑制プログラム解析方法 |
JP2005190330A (ja) * | 2003-12-26 | 2005-07-14 | Matsushita Electric Ind Co Ltd | ソースプログラムのレビュー支援システム |
US20060106889A1 (en) * | 2004-11-12 | 2006-05-18 | Mannby Claes-Fredrik U | Method, system, and program for managing revisions to a file |
JP2006178511A (ja) * | 2004-12-20 | 2006-07-06 | Fujitsu Ltd | ソフトウェア変更トレーサビリティ管理装置 |
US20080120598A1 (en) * | 2006-11-20 | 2008-05-22 | Viewtier Systems, Inc. | Method and apparatus of a build management system |
WO2009011056A1 (ja) * | 2007-07-19 | 2009-01-22 | Fujitsu Limited | アプリケーション改善支援プログラム、アプリケーション改善支援方法およびアプリケーション改善支援装置 |
KR101484680B1 (ko) * | 2007-10-04 | 2015-01-21 | 삼성전자 주식회사 | 컴포넌트 기반 소프트웨어 제품 관리 시스템 및 방법 |
US20090158250A1 (en) * | 2007-12-18 | 2009-06-18 | International Business Machines Corporation | Systems, methods and computer program products for operation history management for hpc programs optimization |
US8312430B2 (en) * | 2008-08-27 | 2012-11-13 | International Business Machines Corporation | Guarding code check-in with test case execution results |
US9514103B2 (en) * | 2010-02-05 | 2016-12-06 | Palo Alto Research Center Incorporated | Effective system and method for visual document comparison using localized two-dimensional visual fingerprints |
US9262282B2 (en) * | 2012-09-04 | 2016-02-16 | Opshub, Inc. | System and method for synchornisation of data and recovery of failures during synchronization between two systems |
-
2007
- 2007-04-09 CN CN2007800524946A patent/CN101641678B/zh not_active Expired - Fee Related
- 2007-04-09 JP JP2009510657A patent/JP5056849B2/ja not_active Expired - Fee Related
- 2007-04-09 WO PCT/JP2007/057852 patent/WO2008129619A1/ja active Application Filing
-
2009
- 2009-10-01 US US12/571,843 patent/US20100037209A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
CN101641678B (zh) | 2012-03-21 |
WO2008129619A1 (ja) | 2008-10-30 |
US20100037209A1 (en) | 2010-02-11 |
JP5056849B2 (ja) | 2012-10-24 |
CN101641678A (zh) | 2010-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5056849B2 (ja) | ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置 | |
US11275714B2 (en) | Systems and methods for the comparison of annotations within files | |
JP2014528111A (ja) | コンテンツを生成し配布し及び公表するワークフローシステム及び方法 | |
US20040205509A1 (en) | System and method for comparing parsed XML files | |
US7058582B2 (en) | Method for performing programming by plain text requests | |
AU2019371545B9 (en) | Management system, acquisition device and management method | |
JP4997843B2 (ja) | ソフトウェア修正漏れ確認システムおよび方法 | |
JPH10240575A (ja) | 大量データファイル一括更新処理プログラムの検査方法 | |
JP2005276040A (ja) | デグレード確認検査方法、デグレード確認検査システム、およびそのためのプログラム | |
JP5741265B2 (ja) | プログラム改善支援システム | |
JP4154289B2 (ja) | 不具合検出方法 | |
JP4974830B2 (ja) | チェックリスト作成方法、チェックリスト作成装置、チェックリスト作成システムおよびチェックリスト作成プログラム | |
JP4393893B2 (ja) | パターン体系構築装置、パターン適用装置およびプログラム、競合要素検出プログラム、ならびにソフトウェア開発支援プログラム | |
JP5041986B2 (ja) | コンポーネント分割支援装置、及びその方法とプログラム | |
JP2015076025A (ja) | プログラムバージョンアップ支援方法及びシステム | |
JP2793340B2 (ja) | Cad図面検図支援システム | |
JP4901802B2 (ja) | テスト装置、テスト方法およびテストプログラム | |
JP2006099452A (ja) | Si対象ファイルおよびsi関連ファイル管理システム | |
JP2006178511A (ja) | ソフトウェア変更トレーサビリティ管理装置 | |
JP2000112800A (ja) | ファイル履歴管理システム | |
JP4904724B2 (ja) | 解析プログラム、解析方法および解析装置 | |
JP2003345592A (ja) | ソフトウェア成果物管理システム | |
JP2008001268A (ja) | 運行表示画面全点試験装置 | |
JPH1185491A (ja) | 複数ドキュメントの自動生成システム | |
JP2005339417A (ja) | 契約支援システム、その方法及びそのプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20120703 |
|
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: 20120716 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150810 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 |