(57)【要約】  修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出し、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶し、抽出された再検討必要箇所と、所定の記憶部に記憶された検討済みか未検討かの検討履歴とを対応付けた情報を所定の出力部に出力し、所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、所定の記憶部に記憶された前記検討履歴を更新する。
2008129619.tif 000002
【特許請求の範囲】
【請求項１】
修正されたソースプログラムを再検討するソースプログラム再検討方法をコンピュータに実行させるソースプログラム再検討プログラムであって、
修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手順と、
前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶する検討履歴記憶手順と、
前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所と、前記所定の記憶部に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手順と、
前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記所定の記憶部に記憶された前記検討履歴を更新する検討履歴更新手順と、
をコンピュータに実行させることを特徴とするソースプログラム再検討プログラム。
【請求項２】
前記再検討必要箇所抽出手順は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて抽出し、
前記検討履歴記憶手順は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶することを特徴とする請求項１に記載のソースプログラム再検討プログラム。
【請求項３】
前記再検討必要箇所抽出手順は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、
前記情報出力手順は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする請求項２に記載のソースプログラム再検討プログラム。
【請求項４】
修正されたソースプログラムを再検討するソースプログラム再検討方法であって、
修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出工程と、
前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する検討履歴記憶工程と、
前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所と、前記検討履歴記憶工程によって記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力工程と、
前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記検討履歴記憶工程によって記憶された前記検討履歴を更新する検討履歴更新工程と、
を含んだことを特徴とするソースプログラム再検討方法。
【請求項５】
前記再検討必要箇所抽出工程は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて抽出し、
前記検討履歴記憶工程は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶することを特徴とする請求項４に記載のソースプログラム再検討方法。
【請求項６】
前記再検討必要箇所抽出工程は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、
前記情報出力工程は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする請求項５に記載のソースプログラム再検討方法。
【請求項７】
修正されたソースプログラムを再検討するソースプログラム再検討装置であって、
修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手段と、
前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する検討履歴記憶手段と、
前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所と、前記検討履歴記憶手段によって記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手段と、
前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記検討履歴記憶手段によって記憶された前記検討履歴を更新する検討履歴更新手段と、
を備えたことを特徴とするソースプログラム再検討装置。
【請求項８】
前記再検討必要箇所抽出手段は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて抽出し、
前記検討履歴記憶手段は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶することを特徴とする請求項１に記載のソースプログラム再検討プログラム。
【請求項９】
前記再検討必要箇所抽出手段は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、
前記情報出力手段は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする請求項２に記載のソースプログラム再検討プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置に関する。
【背景技術】
【０００２】
従来より、既存のソースプログラムを修正して、新規機能を追加もしくは更新することにより、新たなソフトウェアを開発することが一般的に行なわれている。【０００３】
このようなソフトウェアの開発においては、追加もしくは更新する処理が記載されている設計仕様書に基づいて既存のソースプログラムを修正したのちに、ソフトウェア開発者それぞれが、修正後のソースプログラムを再検討（レビュー）することが重要となる。【０００４】
再検討（レビュー）作業においては、「設計仕様書に記載されている追加もしくは更新すべき処理が、修正後のソースプログラムにて実装されているか？」、「修正後のソースプログラムにおいて、追加もしくは更新された箇所の実行理論が正しいか？」、「修正後のソースプログラムにおいて、追加もしくは更新された箇所の記述形式が正しいか？」、「修正後のソースプログラムにおいて、追加もしくは更新された箇所が影響を及ぼす箇所があるか？」などの項目が、ソフトウェア開発者によって検討される。【０００５】
具体的には、ソフトウェア開発者それぞれは、修正前後のソースプログラムを比較した差分情報を印刷した用紙を参照して（目視して）、上記した項目を検討し、修正後のソースプログラムにおける問題点を列挙する。そして、列挙された問題点すべてに対する検討処理を行なったことが、ソフトウェア開発者すべての間で確認された時点で、再検討（レビュー）作業が終了する。【０００６】
ここで、特許文献１では、修正前後のソースプログラムの変更部分を抽出し、当該変更箇所を画面に出力することで、再検討（レビュー）作業におけるソフトウェア開発者の負担を軽減することが可能になるプログラム開発支援システムを開示している。【０００７】
また、特許文献２および特許文献３では、ソースプログラムの変更によって、影響がおよぶ箇所を検索し、当該影響がおよぶ箇所を画面に出力することで、再検討（レビュー）作業におけるソフトウェア開発者の負担を軽減することが可能になるプログラム解析装置および変数検索装置を開示している。【０００８】
【特許文献１】特開昭６３−２７３１３２号公報
【特許文献２】特開平８−１９０４７５号公報
【特許文献３】特開平１１−３２７８７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、上記した従来の技術は、ソフトウェア開発者それぞれが、修正後のソースプログラムにおける問題点について検討した形跡を履歴として残せないので、信頼性の高い再検討が実現できないという問題点があった。【００１０】
すなわち、ソフトウェア開発者それぞれは、目視によって検討作業を実施しており、修正後のソースプログラムにおける問題点について検討した形跡を履歴として残せないので、信頼性の高い再検討が実現できないという問題点があった。【００１１】
また、上記した従来の技術は、ソフトウェア開発者それぞれが、「ソースプログラムの変更により影響がおよぶ箇所」として認識される範囲を、本当にすべて検討したか履歴として残せないので、信頼性の高い再検討が実現できないという問題点があった。【００１２】
また、上記した従来の技術は、ソースプログラムの修正前後で、検討すべき箇所の位置情報（具体的には、ソースプログラムにおいて記載される行番号）にずれが生じた場合、ソフトウェア開発者それぞれが、検討すべき箇所の位置情報を更新して作業を進めなければならないので、ソフトウェア開発者の負担を軽減することができず、信頼性の高い再検討が実現できないという問題点があった。【００１３】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、信頼性の高い再検討を実現することが可能となるソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するため、請求項１に係る発明は、修正されたソースプログラムを再検討するソースプログラム再検討方法をコンピュータに実行させるソースプログラム再検討プログラムであって、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手順と、前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶する検討履歴記憶手順と、前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所と、前記所定の記憶部に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手順と、前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記所定の記憶部に記憶された前記検討履歴を更新する検討履歴更新手順と、をコンピュータに実行させることを特徴とする。【００１５】
また、請求項２に係る発明は、上記の発明において、前記再検討必要箇所抽出手順は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて抽出し、前記検討履歴記憶手順は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶することを特徴とする。【００１６】
また、請求項３に係る発明は、上記の発明において、前記再検討必要箇所抽出手順は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、前記情報出力手順は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする。【００１７】
また、請求項４に係る発明は、修正されたソースプログラムを再検討するソースプログラム再検討方法であって、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出工程と、前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する検討履歴記憶工程と、前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所と、前記検討履歴記憶工程によって記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力工程と、前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記検討履歴記憶工程によって記憶された前記検討履歴を更新する検討履歴更新工程と、を含んだことを特徴とする。【００１８】
また、請求項５に係る発明は、上記の発明において、前記再検討必要箇所抽出工程は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて抽出し、前記検討履歴記憶工程は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶することを特徴とする。【００１９】
また、請求項６に係る発明は、上記の発明において、前記再検討必要箇所抽出工程は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、前記情報出力工程は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする。【００２０】
また、請求項７に係る発明は、修正されたソースプログラムを再検討するソースプログラム再検討装置であって、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手段と、前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する検討履歴記憶手段と、前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所と、前記検討履歴記憶手段によって記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手段と、前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記検討履歴記憶手段によって記憶された前記検討履歴を更新する検討履歴更新手段と、を備えたことを特徴とする。【００２１】
また、請求項８に係る発明は、上記の発明において、前記再検討必要箇所抽出手段は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて抽出し、前記検討履歴記憶手段は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶することを特徴とする。【００２２】
また、請求項９に係る発明は、上記の発明において、前記再検討必要箇所抽出手段は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、前記情報出力手段は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする。
【発明の効果】
【００２３】
請求項１、４または７の発明によれば、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出し、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶し、抽出された再検討必要箇所と、所定の記憶部に記憶された検討済みか未検討かの検討履歴とを対応付けた情報を所定の出力部に出力し、所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、所定の記憶部に記憶された検討履歴を更新するので、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、信頼性の高い再検討を実現することが可能となる。【００２４】
また、請求項２、５または８の発明によれば、再検討必要箇所を修正後ソースプログラムの位置情報に対応付けて抽出し、再検討必要箇所を修正後ソースプログラムの位置情報に対応付けて記憶するので、修正前後で再検討必要箇所の位置情報（具体的には、再検討必要箇所がソースプログラムにおいて記載される行番号）にずれが生じた場合でも、常に更新された修正後の位置情報が反映された検討履歴を作成することができ、信頼性の高い再検討を実現することが可能となる。【００２５】
また、請求項３、６または９の発明によれば、再検討必要箇所として、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所と、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を再検討必要箇所として出力するので、顧客の必要性に応じたレベルの再検討必要箇所を表示することで、当該顧客が速やかに検討をすることができ、信頼性の高い再検討を実現することが可能となる。
【図面の簡単な説明】
【００２６】
【図１−１】図１-１は、実施例１におけるソースプログラム再検討装置の概要および特徴を説明するための図である。
【図１−２】図１−２は、実施例１におけるソースプログラム再検討装置の概要および特徴を説明するための図である。
【図２】図２は、実施例１におけるソースプログラム再検討装置の構成を示すブロック図である。
【図３】図３は、実施例１におけるソースプログラム記憶部を説明するための図である。
【図４】図４は、実施例１におけるソースプログラム記憶部を説明するための図である。
【図５】図５は、実施例１におけるソースプログラム記憶部を説明するための図である。
【図６】図６は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図７】図７は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図８】図８は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図９】図９は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１０】図１０は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１１】図１１は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１２】図１２は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１３】図１３は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１４】図１４は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１５】図１５は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１６】図１６は、実施例１における検討履歴記憶部を説明するための図である。
【図１７】図１７は、実施例１における情報表示部を説明するための図である。
【図１８】図１８は、実施例１における情報表示部を説明するための図である。
【図１９】図１９は、実施例１における情報表示部を説明するための図である。
【図２０】図２０は、実施例１における情報表示部を説明するための図である。
【図２１】図２１は、実施例１におけるソースプログラム再検討装置の再検討必要箇所の抽出処理を説明するための図である。
【図２２】図２２は、実施例１におけるソースプログラム再検討装置の検討履歴更新処理を説明するための図である。
【図２３】図２３は、実施例１のソースプログラム再検討プログラムを実行するコンピュータを示す図である。
【符号の説明】
【００２７】
１０  ソースプログラム再検討装置
１１  入力部
１２  出力部
１３  入出力制御Ｉ／Ｆ部
１４  記憶部
１４ａ  ソースプログラム記憶部
１４ｂ  抽出結果記憶部
１４ｃ  検討履歴記憶部
１５  処理部
１５ａ  再検討必要箇所抽出部
１５ｂ  情報表示部
１５ｃ  検討履歴更新部
【発明を実施するための最良の形態】
【００２８】
以下に添付図面を参照して、この発明に係るソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置の実施例を詳細に説明する。なお、以下では、この発明に係るソースプログラム再検討プログラムを含んで構成されるソースプログラム再検討装置を実施例として説明する。また、以下では、実施例１におけるソースプログラム再検討装置の概要および特徴、実施例１におけるソースプログラム再検討装置の構成および処理の手順、実施例１の効果を順に説明し、最後に、他の実施例について説明する。
【実施例１】
【００２９】
［実施例１におけるソースプログラム再検討装置の概要および特徴］
まず最初に、図１−１および図１−２を用いて、実施例１におけるソースプログラム再検討装置の主たる特徴を具体的に説明する。図１−１および図１−２は、実施例１におけるソースプログラム再検討装置の概要および特徴を説明するための図である。【００３０】
実施例１におけるソースプログラム再検討装置は、修正されたソースプログラムを再検討することを概要とする。すなわち、実施例１におけるソースプログラム再検討装置は、追加もしくは更新する処理が記載されている設計仕様書に基づいて、ソフトウェア開発者が、既存のソースプログラムを修正したのちに、修正後のソースプログラムを再検討（レビュー）することを概要とする。【００３１】
ここで、本発明は、信頼性の高い再検討を実現することが可能となることに主たる特徴がある。この主たる特徴について簡単に説明すると、実施例１におけるソースプログラム再検討装置は、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を、修正後ソースプログラムの位置情報に対応付けて抽出し、さらに、再検討必要箇所として、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所と、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出する。【００３２】
例えば、実施例１におけるソースプログラム再検討装置は、図１−１の（Ａ）に示すように、既存のソースプログラムである「修正前ソースプログラム」と、既存のソースプログラムを設計仕様書に基づいて、最初に修正した修正後ソースプログラムである「修正１回目ソースプログラム」とを比較して、再検討必要箇所を、修正後ソースプログラムの位置情報である「行番号」に対応付けて抽出する。【００３３】
ここで、実施例１におけるソースプログラム再検討装置は、最初に、「修正１回目ソースプログラム」において「修正前ソースプログラム」から修正された箇所である修正箇所を、「レベル０」の再検討必要箇所として抽出する。すなわち、図１−１の（Ａ）に示すように、実施例１におけるソースプログラム再検討装置は、「修正１回目ソースプログラム」と「修正前ソースプログラム」とを比較して、関数「ｆｕｎｃＡ」の内容が変更されている「５行目」と、記載が追加されている「６行目」、「９行目」および「１１〜１４行目」とを、「レベル０」の再検討必要箇所として抽出する。【００３４】
続いて、実施例１におけるソースプログラム再検討装置は、「レベル０」として抽出された再検討必要箇所の中でも、関数の内容が変更されている箇所によって、処理の流れが影響を受ける影響箇所を、「レベル１」の再検討必要箇所として抽出する。すなわち、図１−１の（Ａ）に示すように、実施例１におけるソースプログラム再検討装置は、「レベル０」の再検討必要箇所の中でも、関数「ｆｕｎｃＡ」の内容が変更されている「５行目」の箇所によって、直接、処理の流れに影響を受ける影響箇所である「７行目」および「８行目」を、「レベル１」の再検討必要箇所として抽出する。【００３５】
さらに、実施例１におけるソースプログラム再検討装置は、「レベル０」として抽出された再検討必要箇所において「変更されている関数」を参照している箇所を、「レベル２」の再検討必要箇所として抽出する。すなわち、図１−１の（Ａ）に示すように、実施例１におけるソースプログラム再検討装置は、「レベル０」の再検討必要箇所の中でも、関数「ｆｕｎｃＡ」を参照する関数「ｆｕｎｃＢ」の処理が記載されている「１７行目」を、「レベル２」の再検討必要箇所として抽出する。【００３６】
その後、実施例１におけるソースプログラム再検討装置は、「レベル２」として抽出された再検討必要箇所における関数によって影響を受ける箇所を、「レベル３」の再検討必要箇所として抽出する。すなわち、図１−１の（Ａ）に示すように、実施例１におけるソースプログラム再検討装置は、「レベル２」の再検討必要箇所における関数「ｆｕｎｃＢ」によって、直接、処理の流れに影響を受ける影響箇所である「１８〜２１行目」を、「レベル３」の再検討必要箇所として抽出する。【００３７】
そして、実施例１におけるソースプログラム再検討装置は、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を、修正後ソースプログラムの位置情報に対応付けて所定の記憶部に記憶する。【００３８】
すなわち、実施例１におけるソースプログラム再検討装置は、「レベル０」の再検討必要箇所として抽出された「５行目」、「６行目」、「９行目」および「１１〜１４行目」と、「レベル１」の再検討必要箇所として抽出された「７行目」および「８行目」と、「レベル２」の再検討必要箇所として抽出された「１７行目」と、「レベル３」の再検討必要箇所として抽出された「１８〜２１行目」とが、それぞれ検討済みか未検討かを示す検討履歴を記憶する。なお、実施例１におけるソースプログラム再検討装置は、ソフトウェア開発者からの再検討開始要求を受け付けるまでは、これら「レベル０」から「レベル３」までの再検討必要箇所に関しては、「未検討」として記憶する。【００３９】
そして、実施例１におけるソースプログラム再検討装置は、抽出された再検討必要箇所と、記憶された検討済みか未検討かの検討履歴とを対応付けた情報を所定の出力部に出力する。また、実施例１におけるソースプログラム再検討装置は、「レベル０」から「レベル３」までの再検討必要箇所において、ソフトウェア開発者から指定された「レベル」を所定の入力部から受け付け、当該「レベル」までの再検討必要箇所を表示する。【００４０】
すなわち、実施例１におけるソースプログラム再検討装置は、ソフトウェア開発者から『「レベル３」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、例えば、図１−１の（Ａ）に示すように、「修正１回目ソースプログラム」と「修正前ソースプログラム」とを並べて、モニタに表示するとともに、「修正１回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル０」から「レベル３」に対応する位置それぞれに「マーク」を付加して表示する。ここで、付加される「マーク」において、「白抜き四角（□）」は、「未検討」を示し、「黒塗り丸（●）」は、「検討済み」を示す。【００４１】
なお、図１−１の（Ａ）においては、「レベル０」の「５行目」、「９行目」および「１１〜１４行目」が、「検討済み」の「マーク」である「黒塗り丸（●）」が付加されて表示されている場合を示しているが、ソフトウェア開発者から『「レベル３」までのすべての再検討必要箇所を表示』との要求を、最初に受け付けた場合には、すべての再検討必要箇所である行番号の左側において、「未検討」の「マーク」である「白抜き四角（□）」が、「レベル０」から「レベル３」それぞれに応じた位置に、付加されて表示されるものとする。【００４２】
そして、実施例１におけるソースプログラム再検討装置は、モニタにおいて、未検討として出力された再検討必要箇所について、所定の入力部から「検討済み」と受け付けた場合に、記憶された検討履歴を更新する。すなわち、実施例１におけるソースプログラム再検討装置は、例えば、「２００７年２月２６日」に、ソフトウェア開発者である「日本太郎」から、「レベル０」の「５行目」、「９行目」および「１１〜１４行目」において、「設計仕様所に記載の処理を追加。特に問題なし」とする「指摘メモ」とともに、「状態」を「検討済み」とする表示変更を受け付けた場合に、図１−１の（Ａ）に示すように、行番号の左側において、「マーク」を、「未検討」の「白抜き四角（□）」から、「検討済み」の「黒塗り丸（●）」に変更して表示させるとともに、図１−１の（Ｂ）に示すように、検討履歴を更新する。【００４３】
また、同じく、ソフトウェア開発者である「日本太郎」が、「レベル０」の「６行目」を参照して、問題点が解決されていない（変数「ｙ」の初期化処理が記載されていない）と判断した場合、実施例１におけるソースプログラム再検討装置は、「変数「ｙ」が初期化されていない。確認すること」とする「指摘メモ」のみを受け付けて、「未検討」の「マーク」である「白抜き四角（□）」は変更しない（図１−１の（Ｂ）参照）。なお、本実施例では、ソフトウェア開発者である「日本太郎」が、「レベル０」の再検討必要箇所のみを再検討して処理を終了したとする。【００４４】
ここで、図１−１の（Ｂ）に示す状況で「修正１回目ソースプログラム」の再検討が終了し、この再検討結果に基づいて、ソフトウェア開発者が、「修正１回目ソースプログラム」を修正した「修正２回目ソースプログラム」を作成したとする。すなわち、図１−１の（Ｂ）に示す検討履歴において、「レベル０」の再検討必要箇所である「６行目」における指摘メモ「変数「ｙ」が初期化されていない。確認すること」を参照したソフトウェア開発者が、図１−１の（Ａ）に示す「修正１回目ソースプログラム」を修正して、図１−２の（Ｃ）に示す「修正２回目ソースプログラム」を作成したとする。なお、「修正２回目ソースプログラム」においては、「修正１回目ソースプログラム」における「６行目：ｉｎｔ  ｙ，ｚ；」が、「６行目：ｉｎｔ  ｙ＝０；」と「７行目：ｉｎｔ  ｚ＝０；」の２行に分割されており、６行目において、変数「ｙ」の初期値が「０」と設定されているとともに、新たに、７行目において、変数「ｚ」の初期値が「０」と設定されている。【００４５】
そして、「修正２回目ソースプログラム」を格納した実施例１におけるソースプログラム再検討装置は、「修正２回目ソースプログラム」と「修正１回目ソースプログラム」とを比較して、再検討必要箇所を「修正２回目ソースプログラム」の位置情報（行番号）に対応付けて抽出する。【００４６】
すなわち、「修正２回目ソースプログラム」を格納した実施例１におけるソースプログラム再検討装置は、「修正１回目ソースプログラム」において「レベル０」の再検討必要箇所として抽出された「５行目」、「６行目」、「９行目」および「１１〜１４行目」の箇所を、「修正２回目ソースプログラム」の行番号である「５行目」、「６行目」、「１０行目」および「１２〜１５行目」に対応付けて抽出し、「修正１回目ソースプログラム」において「レベル１」の再検討必要箇所として抽出された「７行目」および「８行目」の箇所を、「修正２回目ソースプログラム」の行番号である「８行目」および「９行目」に対応付けて抽出し、「レベル２」の再検討必要箇所として抽出された「１７行目」の箇所を、「修正２回目ソースプログラム」の行番号である「１８行目」に対応付けて抽出し、「修正１回目ソースプログラム」において「レベル３」の再検討必要箇所として抽出された「１８〜２１行目」の箇所を、「修正２回目ソースプログラム」の行番号である「１９〜２２行目」に対応付けて抽出する。また、「修正２回目ソースプログラム」における「レベル０」の再検討必要箇所として、「７行目」の箇所も抽出する。【００４７】
これにより、実施例１におけるソースプログラム再検討装置は、再度、ソフトウェア開発者から『「レベル３」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、図１−１の（Ｂ）に示す検討履歴の「行番号」を、「修正２回目ソースプログラム」における「行番号」に更新し、更新された検討履歴に基づいて、図１−２の（Ｃ）に示すように、「修正２回目ソースプログラム」と「修正前ソースプログラム」とを並べて表示するとともに、「修正２回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル０」から「レベル３」に対応する位置それぞれに「マーク」を付加して表示する。【００４８】
すなわち、図１−２の（Ｄ）に示すように、「修正１回目ソースプログラム」において「レベル０」の再検討必要箇所として抽出された箇所の行番号である「５行目」、「６行目」、「９行目」および「１１〜１４行目」を、「修正２回目ソースプログラム」の行番号である「５行目」、「６行目」、「１０行目」および「１２〜１５行目」に更新し、図１−２の（Ｃ）に示すように、更新された「修正２回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル０」から「レベル３」に対応する位置それぞれに「マーク」を付加して表示する。【００４９】
このようなことから、実施例１におけるソースプログラム再検討装置は、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、上記した主たる特徴の通り、信頼性の高い再検討を実現することが可能となる。【００５０】
［実施例１におけるソースプログラム再検討装置の構成］
次に、図２〜２０を用いて、実施例１におけるソースプログラム再検討装置を説明する。図２は、実施例１におけるソースプログラム再検討装置の構成を示すブロック図であり、図３〜５は、実施例１におけるソースプログラム記憶部を説明するための図であり、図６〜１５は、実施例１における再検討必要箇所抽出部を説明するための図であり、図１６は、実施例１における検討履歴記憶部を説明するための図であり、図１７〜２０は、実施例１における情報表示部を説明するための図である。【００５１】
図２に示すように、実施例１におけるソースプログラム再検討装置１０は、入力部１１と、出力部１２と、入出力制御Ｉ／Ｆ部１３と、記憶部１４と、処理部１５とから構成される。【００５２】
入力部１１は、各種の情報を入力し、キーボードやマウスなどを備えて構成され、特に本発明に密接に関連するものとしては、「ソースプログラムの格納」や「再検討必要箇所の表示要求」や「再検討必要箇所のレベル指定」や「検討履歴の更新」などを、例えば、キーボードから受け付けて入力する。【００５３】
出力部１２は、各種の情報を出力し、モニタやスピーカを備えて構成され、特に本発明に密接に関連するものとしては、後述する情報表示部１５ｂによる処理結果を、例えば、モニタの画面に表示したりする。【００５４】
入出力制御Ｉ／Ｆ部１３は、入力部１１および出力部１２と、記憶部１４および処理部１５との間におけるデータ転送を制御する。【００５５】
記憶部１４は、処理部１５による各種処理に用いるデータと、処理部１５による各種処理結果を記憶し、特に本発明に密接に関連するものとしては、図２に示すように、ソースプログラム記憶部１４ａと、抽出結果記憶部１４ｂと、検討履歴記憶部１４ｃとを備える。ここで、検討履歴記憶部１４ｃは、特許請求の範囲に記載の「検討履歴記憶手順」に対応する。【００５６】
ソースプログラム記憶部１４ａは、修正前のソースプログラムである修正前ソースプログラムや、修正後のソースプログラムである修正後ソースプログラムを記憶する。具体的には、図３に示すように、既存のソースプログラムである「修正前ソースプログラム」を記憶したり、図４に示すように、「修正前ソースプログラム」を、設計仕様書に基づいて、最初に修正した修正後ソースプログラムである「修正１回目ソースプログラム」を記憶したり、図５に示すように、後述する検討履歴記憶部１４ｃが記憶する検討履歴を参照して、ソフトウェア開発者が、「修正１回目ソースプログラム」をさらに修正した「修正２回目ソースプログラム」を記憶したりする。なお、図３〜５における「ソースプログラム」はすべて、Ｃ言語で記述された「ファイル名：ｓａｍｐｌｅ．ｃ」のファイルとして記憶されているとする。【００５７】
抽出結果記憶部１４ｂは、後述する再検討必要箇所抽出部１５ａが抽出した結果を記憶し、検討履歴記憶部１４ｃは、後述する再検討必要箇所抽出部１５ａが抽出した再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する。なお、抽出結果記憶部１４ｂと検討履歴記憶部１４ｃとについては、後に詳述する。【００５８】
処理部１５は、入出力制御Ｉ／Ｆ部１３から転送されたデータに基づき各種処理を実行し、特に本発明に密接に関連するものとしては、図２に示すように、再検討必要箇所抽出部１５ａと、情報表示部１５ｂと、検討履歴更新部１５ｃとを備える。ここで、再検討必要箇所抽出部１５ａは、特許請求の範囲に記載の「再検討必要箇所抽出手順」に対応し、情報表示部１５ｂは、同じく「情報表示手順」に対応し、検討履歴更新部１５ｃは、同じく「検討履歴更新手順」に対応する。【００５９】
再検討必要箇所抽出部１５ａは、ソースプログラム記憶部１４ａが記憶する修正前ソースプログラムと、修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を、修正後ソースプログラムの位置情報に対応付けて抽出するが、さらに、再検討必要箇所として、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所と、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、その結果を抽出結果記憶部１４ｂに格納する。【００６０】
ここで、再検討必要箇所抽出部１５ａは、最初に、図３に示す「修正前ソースプログラム」と、図４に示す「修正１回目ソースプログラム」とを比較して、「修正１回目ソースプログラム」において「修正前ソースプログラム」から修正された箇所である修正箇所を、「レベル０」の再検討必要箇所として、「修正１回目ソースプログラム」の位置情報である「行番号」に対応付けて抽出する。【００６１】
すなわち、図１２に示すように、再検討必要箇所抽出部１５ａは、「修正１回目ソースプログラム」と「修正前ソースプログラム」とを比較して、関数「ｆｕｎｃＡ」の内容が変更されている「５行目」と、記載が追加されている「６行目」、「９行目」および「１１〜１４行目」とを、「レベル０」の再検討必要箇所として抽出する。【００６２】
続いて、再検討必要箇所抽出部１５ａは、「レベル０」の再検討必要箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所を、影響の度合いでレベル分けして抽出する。【００６３】
具体的には、再検討必要箇所抽出部１５ａは、図３に示す「修正前ソースプログラム」を静的解析することによって、図６に示すように、「修正前ソースプログラム」における処理の流れをまとめた「制御フロー」を作成し、図７に示すように、「修正前ソースプログラム」における「定義、参照など」の処理の依存関係の流れをまとめた「データフロー」を作成する。さらに、再検討必要箇所抽出部１５ａは、図４に示す「修正１回目ソースプログラム」を静的解析することによって、図８に示すように、「修正１回目ソースプログラム」における「制御フロー」を作成し、図９に示すように、「修正１回目ソースプログラム」における「データフロー」を作成する。なお、図７および図９に示す「データフロー」において、破線の矢印は、処理間の参照関係を示している。すなわち、破線の終点における処理が、破線の始点における処理結果を参照して実施される処理であることを示している。【００６４】
そして、再検討必要箇所抽出部１５ａは、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正１回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、「レベル０」として抽出された再検討必要箇所の中でも、関数の内容が変更されている箇所によって、処理の流れが影響を受ける影響箇所を、「レベル１」の再検討必要箇所として抽出する。すなわち、図１３の（Ａ）に示すように、再検討必要箇所抽出部１５ａは、「レベル０」の再検討必要箇所である「調査対象行番号」の中でも、「対象要素」である関数「ｆｕｎｃＡ」の内容が変更されている「５行目」の箇所によって、直接、処理の流れに影響を受ける影響箇所である「７行目」および「８行目」を、「レベル１」の再検討必要箇所として抽出する。なお、「レベル０」の再検討必要箇所である「調査対象行番号」の「６行目」、「９行目」および「１１〜１４行目」からは、「レベル１」の再検討必要箇所は抽出されない。【００６５】
さらに、再検討必要箇所抽出部１５ａは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正１回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、「レベル０」として抽出された再検討必要箇所において「変更されている関数」を参照している箇所を、「レベル２」の再検討必要箇所として抽出する。すなわち、図１３の（Ｂ）に示すように、再検討必要箇所抽出部１５ａは、「調査対象行要素」である関数「ｆｕｎｃＡ」を参照する「対象要素」としての関数「ｆｕｎｃＢ」の処理が記載されている「１７行目」を、「レベル２」の再検討必要箇所として抽出する。【００６６】
その後、再検討必要箇所抽出部１５ａは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正１回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、「レベル２」として抽出された再検討必要箇所における関数によって影響を受ける箇所を、「レベル３」の再検討必要箇所として抽出する。すなわち、図１３の（Ｃ）に示すように、再検討必要箇所抽出部１５ａは、「レベル２」の再検討必要箇所である「調査対象行番号：１７行目」において記載される「対象要素」としての関数「ｆｕｎｃＢ」によって、直接、処理の流れに影響を受ける影響箇所である「１８〜２１行目」を、「レベル３」の再検討必要箇所として抽出する。【００６７】
抽出結果記憶部１４ｂは、再検討必要箇所抽出部１５ａが抽出した再検討必要箇所を記憶する。例えば、図１２および図１３の（Ａ）〜（Ｃ）に示すような「レベル０」から「レベル３」の再検討必要箇所を記憶する。【００６８】
検討履歴記憶部１４ｃは、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を、修正後ソースプログラムの位置情報に対応付けて記憶する。【００６９】
すなわち、検討履歴記憶部１４ｃは、「レベル０」の再検討必要箇所として抽出された「５行目」、「６行目」、「９行目」および「１１〜１４行目」と、「レベル１」の再検討必要箇所として抽出された「７行目」および「８行目」と、「レベル２」の再検討必要箇所として抽出された「１７行目」と、「レベル３」の再検討必要箇所として抽出された「１８〜２１行目」とが、それぞれ検討済みか未検討かを示す検討履歴を記憶する。なお、検討履歴記憶部１４ｃは、ソフトウェア開発者からの再検討開始要求を受け付けるまでは、図１６の（Ａ）に示すように、これら「レベル０」から「レベル３」までの再検討必要箇所に関しては、「未検討」であり、すべての項目において何も記憶されていない。【００７０】
情報表示部１５ｂは、抽出された再検討必要箇所と、記憶された検討済みか未検討かの検討履歴とを対応付けた情報を出力部１２に出力する。また、情報表示部１５ｂは、「レベル０」から「レベル３」までの再検討必要箇所において、ソフトウェア開発者から指定された「レベル」を所定の入力部から受け付け、当該「レベル」までの再検討必要箇所を表示する。【００７１】
例えば、情報表示部１５ｂは、ソフトウェア開発者から『「レベル３」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、図１２および図１３の（Ａ）〜（Ｃ）に示すような「レベル０」から「レベル３」の再検討必要箇所を、図１７に示す「再検討必要箇所一覧ウィンドウ」において、まとめて表示する。図１７に示す「再検討必要箇所一覧ウィンドウ」においては、関数「ｆｕｎｃＡ」に基づく「レベル０」の再検討必要箇所が「７箇所」あり、すべて未検討であることを「０  ｆｕｎｃＡ０／７」として表示し、関数「ｆｕｎｃＡ」に基づく「レベル１」の再検討必要箇所が「２箇所」あり、すべて未検討であることを「１  ｆｕｎｃＡ０／２」として表示し、関数「ｆｕｎｃＢ」に基づく「レベル２」の再検討必要箇所が「１箇所」あり、すべて未検討であることを「２  ｆｕｎｃＢ０／１」として表示し、関数「ｆｕｎｃＢ」に基づく「レベル３」の再検討必要箇所が「４箇所」あり、すべて未検討であることを「３  ｆｕｎｃＢ０／４」として表示している。ここで、合計１４箇所の再検討必要箇所すべてが未検討であることを、さらに、右下の「再検討実績  ０／１４」にて表示している。また、『「レベル３」までのすべての再検討必要箇所を表示』との要求を受け付けたことを、右上の「レベル３」にて表示している。【００７２】
また、情報表示部１５ｂは、図１７に示す「再検討必要箇所一覧ウィンドウ」において、「０  ｆｕｎｃＡ０／７」の表示部分が、ソフトウェア開発者によって押下されたことを入力部１１から受け付けると、「検討履歴ウィンドウ」において、「レベル０」の再検討必要箇所における「検討履歴」を表示する。図１７に示す「検討履歴ウィンドウ」においては、図１６の（Ａ）に示す検討履歴記憶部１４ｂが記憶する内容に基づいて、「５行目」、「６行目」、「９行目」および「１１〜１４行目」はすべて未検討であり、何も記憶されていないことを表示している。【００７３】
さらに、情報表示部１５ｂは、図１７に示すように、「新ソースウィンドウ」に「修正１回目ソースプログラム」を表示し、「旧ソースウィンドウ」に「修正前ソースプログラム」を表示する。また、情報表示部１５ｂは、図１７に示す「新ソースウィンドウ」にて、「修正１回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル０」から「レベル３」に対応する位置それぞれに「マーク」を付加して表示する。ここで、情報表示部１５ｂは、付加される「マーク」を、「未検討」を示す「白抜き四角（□）」として表示する。【００７４】
検討履歴更新部１５ｃは、モニタにおいて未検討として出力された再検討必要箇所について、入力部１１から「検討済み」と受け付けた場合に、検討履歴記憶部１４ｃが記憶する検討履歴を更新する。例えば、「２００７年２月２６日」に、ソフトウェア開発者である「日本太郎」が、図１７に示す「新ソースウィンドウ」における「レベル０」の再検討必要箇所のうち、「５行目」、「９行目」および「１１〜１４行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「設計仕様所に記載の処理を追加。特に問題なし」とする「指摘メモ」とともに、「検討状態」を「検討済み」とする入力を受け付け（図１８の左側参照）、さらに、図１７に示す「新ソースウィンドウ」における「レベル０」の再検討必要箇所のうち、「６行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「変数「ｙ」が初期化されていない。確認すること」とする「指摘メモ」とともに、「検討状態」を「未検討」とする入力を受け付けると（図１８の右側参照）、検討履歴更新部１５ｃは、図１６の（Ｂ）に示すように、検討履歴を更新する。【００７５】
そして、情報表示部１５ｂは、検討履歴更新部１５ｃによって、図１６の（Ｂ）に示すように、検討履歴が更新されると、図１９に示すように、出力部１２にて表示される画面を変更する。すなわち、「検討履歴ウィンドウ」における表示を、図１９に示すように変更し、さらに、「新ソースウィンドウ」における「５行目」、「９行目」および「１１〜１４行目」の「マーク」を、「未検討」である「白抜き四角（□）」から、「検討済み」である「黒塗り丸（●）」に変更して表示する。また、図１７に示す「再検討必要箇所一覧ウィンドウ」においては、関数「ｆｕｎｃＡ」に基づく「レベル０」の再検討必要箇所が「７箇所」中「６箇所」が「検討済み」となったので、「０  ｆｕｎｃＡ０／７」を「０  ｆｕｎｃＡ６／７」と変更して表示する。さらに、右下の「再検討実績」を「６／１４」と変更して表示する。【００７６】
ここで、入力部１１が、図１９に示す状況で「修正１回目ソースプログラム」の再検討作業終了要求を、ソフトウェア開発者から受け付け、その後、ソフトウェア開発者が、この再検討結果に基づいて、「修正１回目ソースプログラム」を修正した「修正２回目ソースプログラム」を作成し、さらに、「修正２回目ソースプログラム」がソースプログラム記憶部１４ａに格納されたとする。【００７７】
例えば、図１９の「検討履歴ウィンドウ」における「レベル０」の再検討必要箇所である「６行目」における指摘メモ「変数「ｙ」が初期化されていない。確認すること」を参照したソフトウェア開発者が、図４に示す「修正１回目ソースプログラム」を修正して、図５に示す「修正２回目ソースプログラム」を作成したとする。ここで、図５に示すように、「修正２回目ソースプログラム」においては、「修正１回目ソースプログラム」における「６行目：ｉｎｔ  ｙ，ｚ；」が、「６行目：ｉｎｔ  ｙ＝０；」と「７行目：ｉｎｔ  ｚ＝０；」の２行に分割されて修正されており、６行目において、変数「ｙ」の初期値が「０」と設定されているとともに、新たに、７行目において、変数「ｚ」の初期値が「０」と設定されている。【００７８】
すると、再検討必要箇所抽出部１５ａは、「修正２回目ソースプログラム」と「修正１回目ソースプログラム」とを比較して、再検討必要箇所を「修正２回目ソースプログラム」の位置情報（行番号）に対応付けて抽出する。【００７９】
すなわち、再検討必要箇所抽出部１５ａは、図１４に示すように、「修正２回目ソースプログラム」と「修正１回目ソースプログラム」とを比較して、「修正１回目ソースプログラム」において「レベル０」の再検討必要箇所として抽出された「５行目」、「６行目」、「９行目」および「１１〜１４行目」の箇所を、「修正２回目ソースプログラム」の行番号である「５行目」、「６行目」、「１０行目」および「１２〜１５行目」に対応付けて抽出し、また、「修正２回目ソースプログラム」における「レベル０」の再検討必要箇所として、新たに「７行目」の箇所も抽出する。【００８０】
さらに、再検討必要箇所抽出部１５ａは、図５に示す「修正２回目ソースプログラム」を静的解析することによって、図１０に示すように、「修正２回目ソースプログラム」における「制御フロー」を作成し、図１１に示すように、「修正２回目ソースプログラム」における「データフロー」を作成する。なお、図１１に示す「データフロー」において、破線の矢印は、処理間の参照関係を示している。すなわち、破線の終点における処理が、破線の始点における処理結果を参照して実施される処理であることを示している。【００８１】
そして、再検討必要箇所抽出部１５ａは、これら新たに作成された「制御フロー」および「データフロー」を参照して、図１５の（Ａ）に示すように、「修正１回目ソースプログラム」において「レベル１」の再検討必要箇所として抽出された「７行目」および「８行目」の箇所を（図１３の（Ａ）参照）、「修正２回目ソースプログラム」の行番号である「８行目」および「９行目」に対応付けて抽出し、図１５の（Ｂ）に示すように、「レベル２」の再検討必要箇所として抽出された「１７行目」の箇所を（図１３の（Ｂ）参照）、「修正２回目ソースプログラム」の行番号である「１８行目」に対応付けて抽出し、図１５の（Ｃ）に示すように、「修正１回目ソースプログラム」において「レベル３」の再検討必要箇所として抽出された「１８〜２１行目」の箇所を（図１３の（Ｃ）参照）、「修正２回目ソースプログラム」の行番号である「１９〜２２行目」に対応付けて抽出する。そして、再検討必要箇所抽出部１５ａは、図１４および図１５の（Ａ）〜（Ｃ）に示す抽出結果を、抽出結果記憶部１４ｂに格納する。【００８２】
ここで、検討履歴更新部１５ｃは、再度、ソフトウェア開発者から『「レベル３」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、抽出結果記憶部１４ｂに格納された抽出結果に基づいて、図１６の（Ｃ）に示すように、「レベル０」の再検討必要箇所の検討履歴を更新し、情報表示部１５ｂは、検討履歴更新部１５ｃによって更新された検討履歴に基づいて、図２０に示すような画面を表示する。【００８３】
すなわち、図２０に示す「再検討必要箇所一覧ウィンドウ」においては、関数「ｆｕｎｃＡ」に基づく「レベル０」の再検討必要箇所が、７行目が新たに追加されて「８箇所」となり、そのうち「６箇所」が「検討済み」であることを「０  ｆｕｎｃＡ６／８」として表示し、関数「ｆｕｎｃＡ」に基づく「レベル１」の再検討必要箇所が「２箇所」あり、すべて未検討であることを「１  ｆｕｎｃＡ０／２」として表示し、関数「ｆｕｎｃＢ」に基づく「レベル２」の再検討必要箇所が「１箇所」あり、すべて未検討であることを「２  ｆｕｎｃＢ０／１」として表示し、関数「ｆｕｎｃＢ」に基づく「レベル３」の再検討必要箇所が「４箇所」あり、すべて未検討であることを「３  ｆｕｎｃＢ０／４」として表示している。ここで、合計１５箇所の再検討必要箇所のうち「６箇所」が「検討済み」であることを、さらに、右下の「再検討実績  ６／１５」にて表示している。【００８４】
さらに、情報表示部１５ｂは、図２０に示すように、「新ソースウィンドウ」に「修正２回目ソースプログラム」を表示し、「旧ソースウィンドウ」に「修正前ソースプログラム」を表示する。また、情報表示部１５ｂは、図２０に示す「新ソースウィンドウ」にて、「修正２回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル０」から「レベル３」に対応する位置それぞれに「マーク」を付加して表示する。例えば、情報表示部１５ｂは、「未検討」を示す「白抜き四角（□）」の「マーク」を、「レベル０」の再検討必要箇所として「修正２回目ソースプログラム」における「６行目」および「７行目」にて表示する。【００８５】
［実施例１におけるソースプログラム再検討装置による処理の手順］
次に、図２１および図２２を用いて、実施例１におけるソースプログラム再検討装置１０による処理を説明する。図２１は、実施例１におけるソースプログラム再検討装置の再検討必要箇所の抽出処理を説明するための図であり、図２１は、実施例１におけるソースプログラム再検討装置の検討履歴更新処理を説明するための図である。【００８６】
［実施例１におけるソースプログラム再検討装置の再検討必要箇所の抽出処理の手順］
まず、実施例１におけるソースプログラム再検討装置１０は、修正後のソースプログラムが、ソースプログラム記憶部１４ａに格納されると（ステップＳ２１０１肯定）、再検討必要箇所抽出部１５ａは、修正前後のソースプログラムと、修正前後のソースプログラムにおける制御フローおよびデータフローとから、「レベル０」から「レベル３」の再検討必要箇所を、修正後（最新）のソースプログラムの位置情報（行番号）に対応付けて抽出し（ステップＳ２１０２）、処理を終了する。【００８７】
例えば、再検討必要箇所抽出部１５ａは、「修正１回目ソースプログラム」が格納されると、最初に、図３に示す「修正前ソースプログラム」と、図４に示す「修正１回目ソースプログラム」とを比較して、図１２に示すように、関数「ｆｕｎｃＡ」の内容が変更されている「５行目」と、記載が追加されている「６行目」、「９行目」および「１１〜１４行目」とを、「レベル０」の再検討必要箇所として抽出する。【００８８】
続いて、再検討必要箇所抽出部１５ａは、図３に示す「修正前ソースプログラム」を静的解析することによって、図６に示す「制御フロー」と、図７に示す「データフロー」とを作成し、さらに、図４に示す「修正１回目ソースプログラム」を静的解析することによって、図８に示す「制御フロー」と、図９に示す「データフロー」とを作成し、これらを参照して、図１３の（Ａ）に示すように、「レベル０」の再検討必要箇所である「調査対象行番号」の中でも、「対象要素」である関数「ｆｕｎｃＡ」の内容が変更されている「５行目」の箇所によって、直接、処理の流れに影響を受ける影響箇所である「７行目」および「８行目」を、「レベル１」の再検討必要箇所として抽出する。【００８９】
さらに、再検討必要箇所抽出部１５ａは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正１回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、図１３の（Ｂ）に示すように、「調査対象行要素」である関数「ｆｕｎｃＡ」を参照する「対象要素」としての関数「ｆｕｎｃＢ」の処理が記載されている「１７行目」を、「レベル２」の再検討必要箇所として抽出する。【００９０】
その後、再検討必要箇所抽出部１５ａは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正１回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、図１３の（Ｃ）に示すように、「レベル２」の再検討必要箇所である「調査対象行番号：１７行目」において記載される「対象要素」としての関数「ｆｕｎｃＢ」によって、直接、処理の流れに影響を受ける影響箇所である「１８〜２１行目」を、「レベル３」の再検討必要箇所として抽出する。【００９１】
また、再検討必要箇所抽出部１５ａは、「修正２回目ソースプログラム」が格納されると、図１４に示すように、「修正２回目ソースプログラム」と「修正１回目ソースプログラム」とを比較して、「修正１回目ソースプログラム」において「レベル０」の再検討必要箇所として抽出された「５行目」、「６行目」、「９行目」および「１１〜１４行目」の箇所を、「修正２回目ソースプログラム」の行番号である「５行目」、「６行目」、「１０行目」および「１２〜１５行目」に対応付けて抽出し、また、「修正２回目ソースプログラム」における「レベル０」の再検討必要箇所として、新たに「７行目」の箇所も抽出する。【００９２】
さらに、再検討必要箇所抽出部１５ａは、図５に示す「修正２回目ソースプログラム」を静的解析することによって、図１０に示すように、「修正２回目ソースプログラム」における「制御フロー」を作成し、図１１に示すように、「修正２回目ソースプログラム」における「データフロー」を作成し、これら新たに作成された「制御フロー」および「データフロー」を参照して、図１５の（Ａ）に示すように、「修正１回目ソースプログラム」において「レベル１」の再検討必要箇所として抽出された「７行目」および「８行目」の箇所を、「修正２回目ソースプログラム」の行番号である「８行目」および「９行目」に対応付けて抽出し、図１５の（Ｂ）に示すように、「レベル２」の再検討必要箇所として抽出された「１７行目」の箇所を、「修正２回目ソースプログラム」の行番号である「１８行目」に対応付けて抽出し、図１５の（Ｃ）に示すように、「修正１回目ソースプログラム」において「レベル３」の再検討必要箇所として抽出された「１８〜２１行目」の箇所を、「修正２回目ソースプログラム」の行番号である「１９〜２２行目」に対応付けて抽出する。【００９３】
［実施例１におけるソースプログラム再検討装置の検討履歴更新処理の手順］
まず、実施例１におけるソースプログラム再検討装置１０は、ソフトウェア開発者から再検討作業開始要求を受け付けると（ステップＳ２２０１肯定）、情報表示部１５ｂは、再検討必要箇所と検討履歴とを対応付けて表示する（ステップＳ２２０２）。【００９４】
すなわち、情報表示部１５ｂは、ソフトウェア開発者から『「レベル３」までのすべての再検討必要箇所を表示』とする再検討作業開始要求を受け付けると、例えば、図１７に示すような画面を、出力部１２にて表示する。【００９５】
そして、検討履歴更新部１５ｃは、ソフトウェア開発者からの検討履歴の更新を受け付けるまで待機し（ステップＳ２２０３）、検討履歴の更新を受け付けなかった場合は（ステップＳ２２０３否定）、ソフトウェア開発者からの再検討作業終了要求を受け付けるまで待機する（ステップＳ２２０５）。【００９６】
これに反して、ソフトウェア開発者からの検討履歴の更新を受け付けると（ステップＳ２２０３肯定）、検討履歴更新部１５ｃは、検討履歴を更新する（ステップＳ２２０４）。【００９７】
例えば、「２００７年２月２６日」に、ソフトウェア開発者である「日本太郎」が、図１７に示す「新ソースウィンドウ」における「レベル０」の再検討必要箇所のうち、「５行目」、「９行目」および「１１〜１４行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「設計仕様所に記載の処理を追加。特に問題なし」とする「指摘メモ」とともに、「検討状態」を「検討済み」とする入力を受け付け（図１８の左側参照）、さらに、図１７に示す「新ソースウィンドウ」における「レベル０」の再検討必要箇所のうち、「６行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「変数「ｙ」が初期化されていない。確認すること」とする「指摘メモ」とともに、「検討状態」を「未検討」とする入力を受け付けると（図１８の右側参照）、検討履歴更新部１５ｃは、図１６の（Ｂ）に示すように、検討履歴を更新する。なお、情報表示部１５ｂは、検討履歴更新部１５ｃによって、図１６の（Ｂ）に示すように、検討履歴が更新されると、図１９に示すように、出力部１２にて表示される画面を変更する。【００９８】
そして、実施例１におけるソースプログラム再検討装置１０は、ソフトウェア開発者からの再検討作業終了要求を受け付けると（ステップＳ２２０５肯定）、処理を終了する。【００９９】
［実施例１の効果］
上記したように、実施例１によれば、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出し、抽出された記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を検討履歴更新部１５ｃに記憶し、抽出された再検討必要箇所と、検討履歴更新部１５ｃに記憶された検討済みか未検討かの検討履歴とを対応付けた情報を出力部１２（モニタ）にて表示し、出力部１２（モニタ）において未検討として表示された再検討必要箇所について、入力部１１から検討済みと受け付けた場合に、検討履歴更新部１５ｃに記憶された検討履歴を更新するので、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、信頼性の高い再検討を実現することが可能となる。【０１００】
また、実施例１によれば、再検討必要箇所を前記修正後ソースプログラムの位置情報（行番号）に対応付けて抽出し、検討履歴更新部１５ｃは、再検討必要箇所を修正後ソースプログラムの位置情報（行番号）に対応付けて記憶するので、修正前後で再検討必要箇所の位置情報（具体的には、再検討必要箇所がソースプログラムにおいて記載される行番号）にずれが生じた場合でも、常に更新された修正後の位置情報が反映された検討履歴を作成することができ、信頼性の高い再検討を実現することが可能となる。【０１０１】
また、実施例１によれば、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所を「レベル０」の再検討必要箇所として抽出し、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所を、影響の度合いで「レベル１」、「レベル２」および「レベル３」の再検討必要箇所としてレベル分けして抽出し、「レベル０」から「レベル３」にレベル分けされた再検討必要箇所との中から、入力部１１から受け付けたレベルを再検討必要箇所として出力部１２表示するので、顧客の必要性に応じたレベルの再検討必要箇所を表示することで、当該顧客が速やかに検討をすることができ、信頼性の高い再検討を実現することが可能となる。
【実施例２】
【０１０２】
さて、これまで実施例１におけるソースプログラム再検討装置について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてもよいものである。そこで、以下では、実施例２におけるソースプログラム再検討装置として、種々の異なる実施例を（１）〜（３）に区分けして説明する。【０１０３】
（１）再検討必要箇所
上記の実施例１では、最新のソースプログラムが格納されるごとに、再検討必要箇所を抽出する場合について説明したが、本発明はこれに限定されるものではなく、例えば、プログラム開発者からの再検討作業開始要求を受け付けて、再検討必要箇所を抽出する場合であってもよい。【０１０４】
（２）システム構成等
また、上記の実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動でおこなうこともでき（例えば、プログラム開発者からの再検討作業開始要求を受け付けるのではなく、最新のソースプログラムが格納されると、自動的に再検討作業開始要求を生成するなど）、あるいは、手動的におこなうものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に更新することができる。【０１０５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各処理部および各記憶部の分散・統合の具体的形態（例えば、図２の形態など）は図示のものに限られず、例えば、情報表示部１５ｂと検討履歴更新部１５ｃとを統合するなど、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。【０１０６】
（３）ソースプログラム再検討プログラム
ところで上記の実施例１では、ハードウェアロジックによって各種の処理を実現する場合を説明したが、本発明はこれに限定されるものではなく、あらかじめ用意されたプログラムをコンピュータで実行するようにしてもよい。そこで以下では、図２３を用いて、上記の実施例１に示したソースプログラム再検討装置１０と同様の機能を有するソースプログラム再検討プログラムを実行するコンピュータの一例を説明する。図２３は、実施例１のソースプログラム再検討プログラムを実行するコンピュータを示す図である。【０１０７】
図２３に示すように、情報処理装置としてのコンピュータ２３０は、キーボード２３１、ディスプレイ２３２、ＣＰＵ２３３、ＲＯＭ２３４、ＨＤＤ２３５およびＲＡＭ２３６をバス２３７などで接続して構成される。【０１０８】
ＲＯＭ２３４には、上記の実施例１に示したソースプログラム再検討装置１０と同様の機能を発揮するソースプログラム再検討プログラム、つまり、図２３に示すように、再検討必要箇所抽出プログラム２３４ａ、情報表示プログラム２３４ｂ、検討履歴更新プログラム２３４ｃが予め記憶されている。なお、これらのプログラム２３４ａ〜２３４ｃについては、図２に示したソースプログラム再検討装置１０の各構成要素と同様、適宜統合または分散してもよい。【０１０９】
そして、ＣＰＵ２３３が、これらのプログラム２３４ａ〜２３４ｃをＲＯＭ２３４から読みだして実行することで、図２３に示すように、各プログラム２３４ａ〜２３４ｃは、再検討必要箇所抽出プロセス２３３ａ、情報表示プロセス２３３ｂ、検討履歴更新プロセス２３３ｃとして機能するようになる。なお、各プロセス２３３ａ〜２３３ｃは、図２に示した、再検討必要箇所抽出部１５ａ、情報表示部１５ｂ、検討履歴更新部１５ｃにそれぞれ対応する。【０１１０】
また、ＨＤＤ２３５には、図２３に示すように、ソースプログラムデータ２３５ａと、抽出結果データ２３５ｂと、検討履歴データ２３５ｃとが設けられる。このソースプログラムデータ２３５ａは、図２に用いたソースプログラム記憶部１４ａに対応し、抽出結果データ２３５ｂは、図２に用いた抽出結果記憶部１４ｂに対応し、検討履歴データ２３５ｃは、図２に用いた検討履歴記憶部１４ｃに対応する。そしてＣＰＵ２３３は、ソースプログラムデータ２３６ａをソースプログラムデータ２３５ａに対して登録し、抽出結果データ２３６ｂを抽出結果データ２３５ｂに対して登録し、検討履歴データ２３６ｃを検討履歴データ２３５ｃに対して登録し、このソースプログラムデータ２３６ａと、抽出結果データ２３６ｂと、検討履歴データ２３６ｃとを読み出してＲＡＭ２３６に格納し、ＲＡＭ２３６に格納されたソースプログラムデータ２３６ａと、抽出結果データ２３６ｂと、検討履歴データ２３６ｃとに基づいてソースプログラム再検討処理を実行する。【０１１１】
なお、上記した各プログラム２３４ａ〜２３４ｃについては、必ずしも最初からＲＯＭ２３４に記憶させておく必要はなく、例えばコンピュータ２３０に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」、または、コンピュータ２３０の内外に備えられるＨＤＤなどの「固定用物理媒体」、さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ２３０に接続される「他のコンピュータ（またはサーバ）」などに各プログラムを記憶させておき、コンピュータ２３０がこれらから各プログラムを読み出して実行するようにしてもよい。
【産業上の利用可能性】
【０１１２】
以上のように、本発明に係るソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置は、修正されたソースプログラムを再検討する場合に有用であり、特に、信頼性の高い再検討を実現することが可能なることに適する。
【図１−１】
2008129619.tif 000003
【図１−２】
2008129619.tif 000004
【図２】
2008129619.tif 000005
【図３】
2008129619.tif 000006
【図４】
2008129619.tif 000007
【図５】
2008129619.tif 000008
【図６】
2008129619.tif 000009
【図７】
2008129619.tif 000010
【図８】
2008129619.tif 000011
【図９】
2008129619.tif 000012
【図１０】
2008129619.tif 000013
【図１１】
2008129619.tif 000014
【図１２】
2008129619.tif 000015
【図１３】
2008129619.tif 000016
【図１４】
2008129619.tif 000017
【図１５】
2008129619.tif 000018
【図１６】
2008129619.tif 000019
【図１７】
2008129619.tif 000020
【図１８】
2008129619.tif 000021
【図１９】
2008129619.tif 000022
【図２０】
2008129619.tif 000023
【図２１】
2008129619.tif 000024
【図２２】
2008129619.tif 000025
【図２３】
2008129619.tif 000026
【手続補正書】
【提出日】平成21年7月27日(2009.7.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
修正されたソースプログラムを再検討するソースプログラム再検討方法をコンピュータに実行させるソースプログラム再検討プログラムであって、
修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手順と、
前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶する検討履歴記憶手順と、
前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所と、前記所定の記憶部に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手順と、
前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記所定の記憶部に記憶された前記検討履歴を更新する検討履歴更新手順と、
をコンピュータに実行させ、
前記再検討必要箇所抽出手順は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けしたうえで、前記修正後ソースプログラムの位置情報に対応付けて抽出し、
前記検討履歴記憶手順は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて前記所定の記憶部に記憶し、
前記情報出力手順は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とするソースプログラム再検討プログラム。
【請求項２】
修正されたソースプログラムを再検討するソースプログラム再検討方法であって、
修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出工程と、
前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶する検討履歴記憶工程と、
前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所と、前記所定の記憶部に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力工程と、
前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記所定の記憶部に記憶された前記検討履歴を更新する検討履歴更新工程と、
を含み、
前記再検討必要箇所抽出工程は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けしたうえで、前記修正後ソースプログラムの位置情報に対応付けて抽出し、
前記検討履歴記憶工程は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて前記所定の記憶部に記憶し、
前記情報出力工程は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とするソースプログラム再検討方法。
【請求項３】
修正されたソースプログラムを再検討するソースプログラム再検討装置であって、
修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手段と、
前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する検討履歴記憶手段と、
前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所と、前記検討履歴記憶手段に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手段と、
前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記検討履歴記憶手段に記憶された前記検討履歴を更新する検討履歴更新手段と、
を備え、
前記再検討必要箇所抽出手段は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けしたうえで、前記修正後ソースプログラムの位置情報に対応付けて抽出し、
前記検討履歴記憶手段は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶し、
前記情報出力手段は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とするソースプログラム再検討装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置に関する。
【背景技術】
【０００２】
従来より、既存のソースプログラムを修正して、新規機能を追加もしくは更新することにより、新たなソフトウェアを開発することが一般的に行なわれている。
【０００３】
このようなソフトウェアの開発においては、追加もしくは更新する処理が記載されている設計仕様書に基づいて既存のソースプログラムを修正したのちに、ソフトウェア開発者それぞれが、修正後のソースプログラムを再検討（レビュー）することが重要となる。
【０００４】
再検討（レビュー）作業においては、「設計仕様書に記載されている追加もしくは更新すべき処理が、修正後のソースプログラムにて実装されているか？」、「修正後のソースプログラムにおいて、追加もしくは更新された箇所の実行理論が正しいか？」、「修正後のソースプログラムにおいて、追加もしくは更新された箇所の記述形式が正しいか？」、「修正後のソースプログラムにおいて、追加もしくは更新された箇所が影響を及ぼす箇所があるか？」などの項目が、ソフトウェア開発者によって検討される。
【０００５】
具体的には、ソフトウェア開発者それぞれは、修正前後のソースプログラムを比較した差分情報を印刷した用紙を参照して（目視して）、上記した項目を検討し、修正後のソースプログラムにおける問題点を列挙する。そして、列挙された問題点すべてに対する検討処理を行なったことが、ソフトウェア開発者すべての間で確認された時点で、再検討（レビュー）作業が終了する。
【０００６】
ここで、特許文献１では、修正前後のソースプログラムの変更部分を抽出し、当該変更箇所を画面に出力することで、再検討（レビュー）作業におけるソフトウェア開発者の負担を軽減することが可能になるプログラム開発支援システムを開示している。
【０００７】
また、特許文献２および特許文献３では、ソースプログラムの変更によって、影響がおよぶ箇所を検索し、当該影響がおよぶ箇所を画面に出力することで、再検討（レビュー）作業におけるソフトウェア開発者の負担を軽減することが可能になるプログラム解析装置および変数検索装置を開示している。
【０００８】
【特許文献１】特開昭６３−２７３１３２号公報
【特許文献２】特開平８−１９０４７５号公報
【特許文献３】特開平１１−３２７８７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、上記した従来の技術は、ソフトウェア開発者それぞれが、修正後のソースプログラムにおける問題点について検討した形跡を履歴として残せないので、信頼性の高い再検討が実現できないという問題点があった。
【００１０】
すなわち、ソフトウェア開発者それぞれは、目視によって検討作業を実施しており、修正後のソースプログラムにおける問題点について検討した形跡を履歴として残せないので、信頼性の高い再検討が実現できないという問題点があった。
【００１１】
また、上記した従来の技術は、ソフトウェア開発者それぞれが、「ソースプログラムの変更により影響がおよぶ箇所」として認識される範囲を、本当にすべて検討したか履歴として残せないので、信頼性の高い再検討が実現できないという問題点があった。
【００１２】
また、上記した従来の技術は、ソースプログラムの修正前後で、検討すべき箇所の位置情報（具体的には、ソースプログラムにおいて記載される行番号）にずれが生じた場合、ソフトウェア開発者それぞれが、検討すべき箇所の位置情報を更新して作業を進めなければならないので、ソフトウェア開発者の負担を軽減することができず、信頼性の高い再検討が実現できないという問題点があった。
【００１３】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、信頼性の高い再検討を実現することが可能となるソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置を提供することを目的とす
る。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するため、本発明は、修正されたソースプログラムを再検討するソースプログラム再検討方法をコンピュータに実行させるソースプログラム再検討プログラムであって、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手順と、前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶する検討履歴記憶手順と、前記再検討必要箇所抽出手順によって抽出された前記再検討必要箇所と、前記所定の記憶部に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手順と、前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記所定の記憶部に記憶された前記検討履歴を更新する検討履歴更新手順と、をコンピュータに実行させ、前記再検討必要箇所抽出手順は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けしたうえで、前記修正後ソースプログラムの位置情報に対応付けて抽出し、前記検討履歴記憶手順は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて前記所定の記憶部に記憶し、前記情報出力手順は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする。
【００１５】
また、本発明は、修正されたソースプログラムを再検討するソースプログラム再検討方法であって、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出工程と、前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶する検討履歴記憶工程と、前記再検討必要箇所抽出工程によって抽出された前記再検討必要箇所と、前記所定の記憶部に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力工程と、前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記所定の記憶部に記憶された前記検討履歴を更新する検討履歴更新工程と、を含み、前記再検討必要箇所抽出工程は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けしたうえで、前記修正後ソースプログラムの位置情報に対応付けて抽出し、前記検討履歴記憶工程は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて前記所定の記憶部に記憶し、前記情報出力工程は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする。
【００１６】
また、本発明は、修正されたソースプログラムを再検討するソースプログラム再検討装置であって、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出する再検討必要箇所抽出手段と、前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する検討履歴記憶手段と、前記再検討必要箇所抽出手段によって抽出された前記再検討必要箇所と、前記検討履歴記憶手段に記憶された検討済みか未検討かの前記検討履歴とを対応付けた情報を所定の出力部に出力する情報出力手段と、前記所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、前記検討履歴記憶手段に記憶された前記検討履歴を更新する検討履歴更新手段と、を備え、前記再検討必要箇所抽出手段は、前記再検討必要箇所として、前記修正後ソースプログラムにおいて前記修正前ソースプログラムから修正された箇所である修正箇所と、前記修正箇所によって前記修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けしたうえで、前記修正後ソースプログラムの位置情報に対応付けて抽出し、前記検討履歴記憶手段は、前記再検討必要箇所を前記修正後ソースプログラムの位置情報に対応付けて記憶し、前記情報出力手段は、前記修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を前記再検討必要箇所として出力することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出し、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を所定の記憶部に記憶し、抽出された再検討必要箇所と、所定の記憶部に記憶された検討済みか未検討かの検討履歴とを対応付けた情報を所定の出力部に出力し、所定の出力部において未検討として出力された再検討必要箇所について、所定の入力部から検討済みと受け付けた場合に、所定の記憶部に記憶された検討履歴を更新するので、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、信頼性の高い再検討を実現することが可能となる。
【００１８】
また、本発明によれば、再検討必要箇所を修正後ソースプログラムの位置情報に対応付けて抽出し、再検討必要箇所を修正後ソースプログラムの位置情報に対応付けて記憶するので、修正前後で再検討必要箇所の位置情報（具体的には、再検討必要箇所がソースプログラムにおいて記載される行番号）にずれが生じた場合でも、常に更新された修正後の位置情報が反映された検討履歴を作成することができ、信頼性の高い再検討を実現することが可能となる。
【００１９】
また、本発明によれば、再検討必要箇所として、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所と、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、修正箇所とレベル分けされた影響箇所との中から、所定の入力部から受け付けた箇所を再検討必要箇所として出力するので、顧客の必要性に応じたレベルの再検討必要箇所を表示することで、当該顧客が速やかに検討をすることができ、信頼性の高い再検討を実現することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下に添付図面を参照して、この発明に係るソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置の実施例を詳細に説明する。なお、以下では、この発明に係るソースプログラム再検討プログラムを含んで構成されるソースプログラム再検討装置を実施例として説明する。また、以下では、実施例１におけるソースプログラム再検討装置の概要および特徴、実施例１におけるソースプログラム再検討装置の構成および処理の手順、実施例１の効果を順に説明し、最後に、他の実施例について説明する。
【実施例１】
【００２１】
［実施例１におけるソースプログラム再検討装置の概要および特徴］
まず最初に、図１−１および図１−２を用いて、実施例１におけるソースプログラム再検討装置の主たる特徴を具体的に説明する。図１−１および図１−２は、実施例１におけるソースプログラム再検討装置の概要および特徴を説明するための図である。
【００２２】
実施例１におけるソースプログラム再検討装置は、修正されたソースプログラムを再検討することを概要とする。すなわち、実施例１におけるソースプログラム再検討装置は、追加もしくは更新する処理が記載されている設計仕様書に基づいて、ソフトウェア開発者が、既存のソースプログラムを修正したのちに、修正後のソースプログラムを再検討（レビュー）することを概要とする。
【００２３】
ここで、本発明は、信頼性の高い再検討を実現することが可能となることに主たる特徴がある。この主たる特徴について簡単に説明すると、実施例１におけるソースプログラム再検討装置は、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を、修正後ソースプログラムの位置情報に対応付けて抽出し、さらに、再検討必要箇所として、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所と、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出する。
【００２４】
例えば、実施例１におけるソースプログラム再検討装置は、図１−１の（Ａ）に示すように、既存のソースプログラムである「修正前ソースプログラム」と、既存のソースプログラムを設計仕様書に基づいて、最初に修正した修正後ソースプログラムである「修正１回目ソースプログラム」とを比較して、再検討必要箇所を、修正後ソースプログラムの位置情報である「行番号」に対応付けて抽出する。
【００２５】
ここで、実施例１におけるソースプログラム再検討装置は、最初に、「修正１回目ソースプログラム」において「修正前ソースプログラム」から修正された箇所である修正箇所を、「レベル０」の再検討必要箇所として抽出する。すなわち、図１−１の（Ａ）に示すように、実施例１におけるソースプログラム再検討装置は、「修正１回目ソースプログラム」と「修正前ソースプログラム」とを比較して、関数「ｆｕｎｃＡ」の内容が変更されている「５行目」と、記載が追加されている「６行目」、「９行目」および「１１〜１４行目」とを、「レベル０」の再検討必要箇所として抽出する。
【００２６】
続いて、実施例１におけるソースプログラム再検討装置は、「レベル０」として抽出された再検討必要箇所の中でも、関数の内容が変更されている箇所によって、処理の流れが影響を受ける影響箇所を、「レベル１」の再検討必要箇所として抽出する。すなわち、図１−１の（Ａ）に示すように、実施例１におけるソースプログラム再検討装置は、「レベル０」の再検討必要箇所の中でも、関数「ｆｕｎｃＡ」の内容が変更されている「５行目」の箇所によって、直接、処理の流れに影響を受ける影響箇所である「７行目」および「８行目」を、「レベル１」の再検討必要箇所として抽出する。
【００２７】
さらに、実施例１におけるソースプログラム再検討装置は、「レベル０」として抽出された再検討必要箇所において「変更されている関数」を参照している箇所を、「レベル２」の再検討必要箇所として抽出する。すなわち、図１−１の（Ａ）に示すように、実施例１におけるソースプログラム再検討装置は、「レベル０」の再検討必要箇所の中でも、関数「ｆｕｎｃＡ」を参照する関数「ｆｕｎｃＢ」の処理が記載されている「１７行目」を、「レベル２」の再検討必要箇所として抽出する。
【００２８】
その後、実施例１におけるソースプログラム再検討装置は、「レベル２」として抽出された再検討必要箇所における関数によって影響を受ける箇所を、「レベル３」の再検討必要箇所として抽出する。すなわち、図１−１の（Ａ）に示すように、実施例１におけるソースプログラム再検討装置は、「レベル２」の再検討必要箇所における関数「ｆｕｎｃＢ」によって、直接、処理の流れに影響を受ける影響箇所である「１８〜２１行目」を、「レベル３」の再検討必要箇所として抽出する。
【００２９】
そして、実施例１におけるソースプログラム再検討装置は、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を、修正後ソースプログラムの位置情報に対応付けて所定の記憶部に記憶する。
【００３０】
すなわち、実施例１におけるソースプログラム再検討装置は、「レベル０」の再検討必要箇所として抽出された「５行目」、「６行目」、「９行目」および「１１〜１４行目」と、「レベル１」の再検討必要箇所として抽出された「７行目」および「８行目」と、「レベル２」の再検討必要箇所として抽出された「１７行目」と、「レベル３」の再検討必要箇所として抽出された「１８〜２１行目」とが、それぞれ検討済みか未検討かを示す検討履歴を記憶する。なお、実施例１におけるソースプログラム再検討装置は、ソフトウェア開発者からの再検討開始要求を受け付けるまでは、これら「レベル０」から「レベル３」までの再検討必要箇所に関しては、「未検討」として記憶する。
【００３１】
そして、実施例１におけるソースプログラム再検討装置は、抽出された再検討必要箇所と、記憶された検討済みか未検討かの検討履歴とを対応付けた情報を所定の出力部に出力する。また、実施例１におけるソースプログラム再検討装置は、「レベル０」から「レベル３」までの再検討必要箇所において、ソフトウェア開発者から指定された「レベル」を所定の入力部から受け付け、当該「レベル」までの再検討必要箇所を表示する。
【００３２】
すなわち、実施例１におけるソースプログラム再検討装置は、ソフトウェア開発者から『「レベル３」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、例えば、図１−１の（Ａ）に示すように、「修正１回目ソースプログラム」と「修正前ソースプログラム」とを並べて、モニタに表示するとともに、「修正１回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル０」から「レベル３」に対応する位置それぞれに「マーク」を付加して表示する。ここで、付加される「マーク」において、「白抜き四角（□）」は、「未検討」を示し、「黒塗り丸（●）」は、「検討済み」を示す。
【００３３】
なお、図１−１の（Ａ）においては、「レベル０」の「５行目」、「９行目」および「１１〜１４行目」が、「検討済み」の「マーク」である「黒塗り丸（●）」が付加されて表示されている場合を示しているが、ソフトウェア開発者から『「レベル３」までのすべての再検討必要箇所を表示』との要求を、最初に受け付けた場合には、すべての再検討必要箇所である行番号の左側において、「未検討」の「マーク」である「白抜き四角（□）」が、「レベル０」から「レベル３」それぞれに応じた位置に、付加されて表示されるものとする。
【００３４】
そして、実施例１におけるソースプログラム再検討装置は、モニタにおいて、未検討として出力された再検討必要箇所について、所定の入力部から「検討済み」と受け付けた場合に、記憶された検討履歴を更新する。すなわち、実施例１におけるソースプログラム再検討装置は、例えば、「２００７年２月２６日」に、ソフトウェア開発者である「日本太郎」から、「レベル０」の「５行目」、「９行目」および「１１〜１４行目」において、「設計仕様所に記載の処理を追加。特に問題なし」とする「指摘メモ」とともに、「状態」を「検討済み」とする表示変更を受け付けた場合に、図１−１の（Ａ）に示すように、行番号の左側において、「マーク」を、「未検討」の「白抜き四角（□）」から、「検討済み」の「黒塗り丸（●）」に変更して表示させるとともに、図１−１の（Ｂ）に示すように、検討履歴を更新する。
【００３５】
また、同じく、ソフトウェア開発者である「日本太郎」が、「レベル０」の「６行目」を参照して、問題点が解決されていない（変数「ｙ」の初期化処理が記載されていない）と判断した場合、実施例１におけるソースプログラム再検討装置は、「変数「ｙ」が初期化されていない。確認すること」とする「指摘メモ」のみを受け付けて、「未検討」の「マーク」である「白抜き四角（□）」は変更しない（図１−１の（Ｂ）参照）。なお、本実施例では、ソフトウェア開発者である「日本太郎」が、「レベル０」の再検討必要箇所のみを再検討して処理を終了したとする。
【００３６】
ここで、図１−１の（Ｂ）に示す状況で「修正１回目ソースプログラム」の再検討が終了し、この再検討結果に基づいて、ソフトウェア開発者が、「修正１回目ソースプログラム」を修正した「修正２回目ソースプログラム」を作成したとする。すなわち、図１−１の（Ｂ）に示す検討履歴において、「レベル０」の再検討必要箇所である「６行目」における指摘メモ「変数「ｙ」が初期化されていない。確認すること」を参照したソフトウェア開発者が、図１−１の（Ａ）に示す「修正１回目ソースプログラム」を修正して、図１−２の（Ｃ）に示す「修正２回目ソースプログラム」を作成したとする。なお、「修正２回目ソースプログラム」においては、「修正１回目ソースプログラム」における「６行目：ｉｎｔ  ｙ，ｚ；」が、「６行目：ｉｎｔ  ｙ＝０；」と「７行目：ｉｎｔ  ｚ＝０；」の２行に分割されており、６行目において、変数「ｙ」の初期値が「０」と設定されているとともに、新たに、７行目において、変数「ｚ」の初期値が「０」と設定されている。
【００３７】
そして、「修正２回目ソースプログラム」を格納した実施例１におけるソースプログラム再検討装置は、「修正２回目ソースプログラム」と「修正１回目ソースプログラム」とを比較して、再検討必要箇所を「修正２回目ソースプログラム」の位置情報（行番号）に対応付けて抽出する。
【００３８】
すなわち、「修正２回目ソースプログラム」を格納した実施例１におけるソースプログラム再検討装置は、「修正１回目ソースプログラム」において「レベル０」の再検討必要箇所として抽出された「５行目」、「６行目」、「９行目」および「１１〜１４行目」の箇所を、「修正２回目ソースプログラム」の行番号である「５行目」、「６行目」、「１０行目」および「１２〜１５行目」に対応付けて抽出し、「修正１回目ソースプログラム」において「レベル１」の再検討必要箇所として抽出された「７行目」および「８行目」の箇所を、「修正２回目ソースプログラム」の行番号である「８行目」および「９行目」に対応付けて抽出し、「レベル２」の再検討必要箇所として抽出された「１７行目」の箇所を、「修正２回目ソースプログラム」の行番号である「１８行目」に対応付けて抽出し、「修正１回目ソースプログラム」において「レベル３」の再検討必要箇所として抽出された「１８〜２１行目」の箇所を、「修正２回目ソースプログラム」の行番号である「１９〜２２行目」に対応付けて抽出する。また、「修正２回目ソースプログラム」における「レベル０」の再検討必要箇所として、「７行目」の箇所も抽出する。
【００３９】
これにより、実施例１におけるソースプログラム再検討装置は、再度、ソフトウェア開発者から『「レベル３」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、図１−１の（Ｂ）に示す検討履歴の「行番号」を、「修正２回目ソースプログラム」における「行番号」に更新し、更新された検討履歴に基づいて、図１−２の（Ｃ）に示すように、「修正２回目ソースプログラム」と「修正前ソースプログラム」とを並べて表示するとともに、「修正２回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル０」から「レベル３」に対応する位置それぞれに「マーク」を付加して表示する。
【００４０】
すなわち、図１−２の（Ｄ）に示すように、「修正１回目ソースプログラム」において「レベル０」の再検討必要箇所として抽出された箇所の行番号である「５行目」、「６行目」、「９行目」および「１１〜１４行目」を、「修正２回目ソースプログラム」の行番号である「５行目」、「６行目」、「１０行目」および「１２〜１５行目」に更新し、図１−２の（Ｃ）に示すように、更新された「修正２回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル０」から「レベル３」に対応する位置それぞれに「マーク」を付加して表示する。
【００４１】
このようなことから、実施例１におけるソースプログラム再検討装置は、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、上記した主たる特徴の通り、信頼性の高い再検討を実現することが可能となる。
【００４２】
［実施例１におけるソースプログラム再検討装置の構成］
次に、図２〜２０を用いて、実施例１におけるソースプログラム再検討装置を説明する。図２は、実施例１におけるソースプログラム再検討装置の構成を示すブロック図であり、図３〜５は、実施例１におけるソースプログラム記憶部を説明するための図であり、図６〜１５は、実施例１における再検討必要箇所抽出部を説明するための図であり、図１６は、実施例１における検討履歴記憶部を説明するための図であり、図１７〜２０は、実施例１における情報表示部を説明するための図である。
【００４３】
図２に示すように、実施例１におけるソースプログラム再検討装置１０は、入力部１１と、出力部１２と、入出力制御Ｉ／Ｆ部１３と、記憶部１４と、処理部１５とから構成される。
【００４４】
入力部１１は、各種の情報を入力し、キーボードやマウスなどを備えて構成され、特に本発明に密接に関連するものとしては、「ソースプログラムの格納」や「再検討必要箇所の表示要求」や「再検討必要箇所のレベル指定」や「検討履歴の更新」などを、例えば、キーボードから受け付けて入力する。
【００４５】
出力部１２は、各種の情報を出力し、モニタやスピーカを備えて構成され、特に本発明に密接に関連するものとしては、後述する情報表示部１５ｂによる処理結果を、例えば、モニタの画面に表示したりする。
【００４６】
入出力制御Ｉ／Ｆ部１３は、入力部１１および出力部１２と、記憶部１４および処理部１５との間におけるデータ転送を制御する。
【００４７】
記憶部１４は、処理部１５による各種処理に用いるデータと、処理部１５による各種処理結果を記憶し、特に本発明に密接に関連するものとしては、図２に示すように、ソースプログラム記憶部１４ａと、抽出結果記憶部１４ｂと、検討履歴記憶部１４ｃとを備える。ここで、検討履歴記憶部１４ｃは、特許請求の範囲に記載の「検討履歴記憶手順」に対応する。
【００４８】
ソースプログラム記憶部１４ａは、修正前のソースプログラムである修正前ソースプログラムや、修正後のソースプログラムである修正後ソースプログラムを記憶する。具体的には、図３に示すように、既存のソースプログラムである「修正前ソースプログラム」を記憶したり、図４に示すように、「修正前ソースプログラム」を、設計仕様書に基づいて、最初に修正した修正後ソースプログラムである「修正１回目ソースプログラム」を記憶したり、図５に示すように、後述する検討履歴記憶部１４ｃが記憶する検討履歴を参照して、ソフトウェア開発者が、「修正１回目ソースプログラム」をさらに修正した「修正２回目ソースプログラム」を記憶したりする。なお、図３〜５における「ソースプログラム」はすべて、Ｃ言語で記述された「ファイル名：ｓａｍｐｌｅ．ｃ」のファイルとして記憶されているとする。
【００４９】
抽出結果記憶部１４ｂは、後述する再検討必要箇所抽出部１５ａが抽出した結果を記憶し、検討履歴記憶部１４ｃは、後述する再検討必要箇所抽出部１５ａが抽出した再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を記憶する。なお、抽出結果記憶部１４ｂと検討履歴記憶部１４ｃとについては、後に詳述する。
【００５０】
処理部１５は、入出力制御Ｉ／Ｆ部１３から転送されたデータに基づき各種処理を実行し、特に本発明に密接に関連するものとしては、図２に示すように、再検討必要箇所抽出部１５ａと、情報表示部１５ｂと、検討履歴更新部１５ｃとを備える。ここで、再検討必要箇所抽出部１５ａは、特許請求の範囲に記載の「再検討必要箇所抽出手順」に対応し、情報表示部１５ｂは、同じく「情報表示手順」に対応し、検討履歴更新部１５ｃは、同じく「検討履歴更新手順」に対応する。
【００５１】
再検討必要箇所抽出部１５ａは、ソースプログラム記憶部１４ａが記憶する修正前ソースプログラムと、修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を、修正後ソースプログラムの位置情報に対応付けて抽出するが、さらに、再検討必要箇所として、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所と、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所とを、影響の度合いでレベル分けして抽出し、その結果を抽出結果記憶部１４ｂに格納する。
【００５２】
ここで、再検討必要箇所抽出部１５ａは、最初に、図３に示す「修正前ソースプログラム」と、図４に示す「修正１回目ソースプログラム」とを比較して、「修正１回目ソースプログラム」において「修正前ソースプログラム」から修正された箇所である修正箇所を、「レベル０」の再検討必要箇所として、「修正１回目ソースプログラム」の位置情報である「行番号」に対応付けて抽出する。
【００５３】
すなわち、図１２に示すように、再検討必要箇所抽出部１５ａは、「修正１回目ソースプログラム」と「修正前ソースプログラム」とを比較して、関数「ｆｕｎｃＡ」の内容が変更されている「５行目」と、記載が追加されている「６行目」、「９行目」および「１１〜１４行目」とを、「レベル０」の再検討必要箇所として抽出する。
【００５４】
続いて、再検討必要箇所抽出部１５ａは、「レベル０」の再検討必要箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所を、影響の度合いでレベル分けして抽出する。
【００５５】
具体的には、再検討必要箇所抽出部１５ａは、図３に示す「修正前ソースプログラム」を静的解析することによって、図６に示すように、「修正前ソースプログラム」における処理の流れをまとめた「制御フロー」を作成し、図７に示すように、「修正前ソースプログラム」における「定義、参照など」の処理の依存関係の流れをまとめた「データフロー」を作成する。さらに、再検討必要箇所抽出部１５ａは、図４に示す「修正１回目ソースプログラム」を静的解析することによって、図８に示すように、「修正１回目ソースプログラム」における「制御フロー」を作成し、図９に示すように、「修正１回目ソースプログラム」における「データフロー」を作成する。なお、図７および図９に示す「データフロー」において、破線の矢印は、処理間の参照関係を示している。すなわち、破線の終点における処理が、破線の始点における処理結果を参照して実施される処理であることを示している。
【００５６】
そして、再検討必要箇所抽出部１５ａは、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正１回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、「レベル０」として抽出された再検討必要箇所の中でも、関数の内容が変更されている箇所によって、処理の流れが影響を受ける影響箇所を、「レベル１」の再検討必要箇所として抽出する。すなわち、図１３の（Ａ）に示すように、再検討必要箇所抽出部１５ａは、「レベル０」の再検討必要箇所である「調査対象行番号」の中でも、「対象要素」である関数「ｆｕｎｃＡ」の内容が変更されている「５行目」の箇所によって、直接、処理の流れに影響を受ける影響箇所である「７行目」および「８行目」を、「レベル１」の再検討必要箇所として抽出する。なお、「レベル０」の再検討必要箇所である「調査対象行番号」の「６行目」、「９行目」および「１１〜１４行目」からは、「レベル１」の再検討必要箇所は抽出されない。
【００５７】
さらに、再検討必要箇所抽出部１５ａは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正１回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、「レベル０」として抽出された再検討必要箇所において「変更されている関数」を参照している箇所を、「レベル２」の再検討必要箇所として抽出する。すなわち、図１３の（Ｂ）に示すように、再検討必要箇所抽出部１５ａは、「調査対象行要素」である関数「ｆｕｎｃＡ」を参照する「対象要素」としての関数「ｆｕｎｃＢ」の処理が記載されている「１７行目」を、「レベル２」の再検討必要箇所として抽出する。
【００５８】
その後、再検討必要箇所抽出部１５ａは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正１回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、「レベル２」として抽出された再検討必要箇所における関数によって影響を受ける箇所を、「レベル３」の再検討必要箇所として抽出する。すなわち、図１３の（Ｃ）に示すように、再検討必要箇所抽出部１５ａは、「レベル２」の再検討必要箇所である「調査対象行番号：１７行目」において記載される「対象要素」としての関数「ｆｕｎｃＢ」によって、直接、処理の流れに影響を受ける影響箇所である「１８〜２１行目」を、「レベル３」の再検討必要箇所として抽出する。
【００５９】
抽出結果記憶部１４ｂは、再検討必要箇所抽出部１５ａが抽出した再検討必要箇所を記憶する。例えば、図１２および図１３の（Ａ）〜（Ｃ）に示すような「レベル０」から「レベル３」の再検討必要箇所を記憶する。
【００６０】
検討履歴記憶部１４ｃは、抽出された再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を、修正後ソースプログラムの位置情報に対応付けて記憶する。
【００６１】
すなわち、検討履歴記憶部１４ｃは、「レベル０」の再検討必要箇所として抽出された「５行目」、「６行目」、「９行目」および「１１〜１４行目」と、「レベル１」の再検討必要箇所として抽出された「７行目」および「８行目」と、「レベル２」の再検討必要箇所として抽出された「１７行目」と、「レベル３」の再検討必要箇所として抽出された「１８〜２１行目」とが、それぞれ検討済みか未検討かを示す検討履歴を記憶する。なお、検討履歴記憶部１４ｃは、ソフトウェア開発者からの再検討開始要求を受け付けるまでは、図１６の（Ａ）に示すように、これら「レベル０」から「レベル３」までの再検討必要箇所に関しては、「未検討」であり、すべての項目において何も記憶されていない。
【００６２】
情報表示部１５ｂは、抽出された再検討必要箇所と、記憶された検討済みか未検討かの検討履歴とを対応付けた情報を出力部１２に出力する。また、情報表示部１５ｂは、「レベル０」から「レベル３」までの再検討必要箇所において、ソフトウェア開発者から指定された「レベル」を所定の入力部から受け付け、当該「レベル」までの再検討必要箇所を表示する。
【００６３】
例えば、情報表示部１５ｂは、ソフトウェア開発者から『「レベル３」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、図１２および図１３の（Ａ）〜（Ｃ）に示すような「レベル０」から「レベル３」の再検討必要箇所を、図１７に示す「再検討必要箇所一覧ウィンドウ」において、まとめて表示する。図１７に示す「再検討必要箇所一覧ウィンドウ」においては、関数「ｆｕｎｃＡ」に基づく「レベル０」の再検討必要箇所が「７箇所」あり、すべて未検討であることを「０  ｆｕｎｃＡ０／７」として表示し、関数「ｆｕｎｃＡ」に基づく「レベル１」の再検討必要箇所が「２箇所」あり、すべて未検討であることを「１  ｆｕｎｃＡ０／２」として表示し、関数「ｆｕｎｃＢ」に基づく「レベル２」の再検討必要箇所が「１箇所」あり、すべて未検討であることを「２  ｆｕｎｃＢ０／１」として表示し、関数「ｆｕｎｃＢ」に基づく「レベル３」の再検討必要箇所が「４箇所」あり、すべて未検討であることを「３  ｆｕｎｃＢ０／４」として表示している。ここで、合計１４箇所の再検討必要箇所すべてが未検討であることを、さらに、右下の「再検討実績  ０／１４」にて表示している。また、『「レベル３」までのすべての再検討必要箇所を表示』との要求を受け付けたことを、右上の「レベル３」にて表示している。
【００６４】
また、情報表示部１５ｂは、図１７に示す「再検討必要箇所一覧ウィンドウ」において、「０  ｆｕｎｃＡ０／７」の表示部分が、ソフトウェア開発者によって押下されたことを入力部１１から受け付けると、「検討履歴ウィンドウ」において、「レベル０」の再検討必要箇所における「検討履歴」を表示する。図１７に示す「検討履歴ウィンドウ」においては、図１６の（Ａ）に示す検討履歴記憶部１４ｂが記憶する内容に基づいて、「５行目」、「６行目」、「９行目」および「１１〜１４行目」はすべて未検討であり、何も記憶されていないことを表示している。
【００６５】
さらに、情報表示部１５ｂは、図１７に示すように、「新ソースウィンドウ」に「修正１回目ソースプログラム」を表示し、「旧ソースウィンドウ」に「修正前ソースプログラム」を表示する。また、情報表示部１５ｂは、図１７に示す「新ソースウィンドウ」にて、「修正１回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル０」から「レベル３」に対応する位置それぞれに「マーク」を付加して表示する。ここで、情報表示部１５ｂは、付加される「マーク」を、「未検討」を示す「白抜き四角
（□）」として表示する。
【００６６】
検討履歴更新部１５ｃは、モニタにおいて未検討として出力された再検討必要箇所について、入力部１１から「検討済み」と受け付けた場合に、検討履歴記憶部１４ｃが記憶する検討履歴を更新する。例えば、「２００７年２月２６日」に、ソフトウェア開発者である「日本太郎」が、図１７に示す「新ソースウィンドウ」における「レベル０」の再検討必要箇所のうち、「５行目」、「９行目」および「１１〜１４行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「設計仕様所に記載の処理を追加。特に問題なし」とする「指摘メモ」とともに、「検討状態」を「検討済み」とする入力を受け付け（図１８の左側参照）、さらに、図１７に示す「新ソースウィンドウ」における「レベル０」の再検討必要箇所のうち、「６行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「変数「ｙ」が初期化されていない。確認すること」とする「指摘メモ」とともに、「検討状態」を「未検討」とする入力を受け付けると（図１８の右側参照）、検討履歴更新部１５ｃは、図１６の（Ｂ）に示すように、検討履歴を更新する。
【００６７】
そして、情報表示部１５ｂは、検討履歴更新部１５ｃによって、図１６の（Ｂ）に示すように、検討履歴が更新されると、図１９に示すように、出力部１２にて表示される画面を変更する。すなわち、「検討履歴ウィンドウ」における表示を、図１９に示すように変更し、さらに、「新ソースウィンドウ」における「５行目」、「９行目」および「１１〜１４行目」の「マーク」を、「未検討」である「白抜き四角（□）」から、「検討済み」である「黒塗り丸（●）」に変更して表示する。また、図１７に示す「再検討必要箇所一覧ウィンドウ」においては、関数「ｆｕｎｃＡ」に基づく「レベル０」の再検討必要箇所が「７箇所」中「６箇所」が「検討済み」となったので、「０  ｆｕｎｃＡ０／７」を「０  ｆｕｎｃＡ６／７」と変更して表示する。さらに、右下の「再検討実績」を「６／１４」と変更して表示する。
【００６８】
ここで、入力部１１が、図１９に示す状況で「修正１回目ソースプログラム」の再検討作業終了要求を、ソフトウェア開発者から受け付け、その後、ソフトウェア開発者が、この再検討結果に基づいて、「修正１回目ソースプログラム」を修正した「修正２回目ソースプログラム」を作成し、さらに、「修正２回目ソースプログラム」がソースプログラム記憶部１４ａに格納されたとする。
【００６９】
例えば、図１９の「検討履歴ウィンドウ」における「レベル０」の再検討必要箇所である「６行目」における指摘メモ「変数「ｙ」が初期化されていない。確認すること」を参照したソフトウェア開発者が、図４に示す「修正１回目ソースプログラム」を修正して、図５に示す「修正２回目ソースプログラム」を作成したとする。ここで、図５に示すように、「修正２回目ソースプログラム」においては、「修正１回目ソースプログラム」における「６行目：ｉｎｔ  ｙ，ｚ；」が、「６行目：ｉｎｔ  ｙ＝０；」と「７行目：ｉｎｔ  ｚ＝０；」の２行に分割されて修正されており、６行目において、変数「ｙ」の初期値が「０」と設定されているとともに、新たに、７行目において、変数「ｚ」の初期値が「０」と設定されている。
【００７０】
すると、再検討必要箇所抽出部１５ａは、「修正２回目ソースプログラム」と「修正１回目ソースプログラム」とを比較して、再検討必要箇所を「修正２回目ソースプログラム」の位置情報（行番号）に対応付けて抽出する。
【００７１】
すなわち、再検討必要箇所抽出部１５ａは、図１４に示すように、「修正２回目ソースプログラム」と「修正１回目ソースプログラム」とを比較して、「修正１回目ソースプログラム」において「レベル０」の再検討必要箇所として抽出された「５行目」、「６行目」、「９行目」および「１１〜１４行目」の箇所を、「修正２回目ソースプログラム」の行番号である「５行目」、「６行目」、「１０行目」および「１２〜１５行目」に対応付けて抽出し、また、「修正２回目ソースプログラム」における「レベル０」の再検討必要箇所として、新たに「７行目」の箇所も抽出する。
【００７２】
さらに、再検討必要箇所抽出部１５ａは、図５に示す「修正２回目ソースプログラム」を静的解析することによって、図１０に示すように、「修正２回目ソースプログラム」における「制御フロー」を作成し、図１１に示すように、「修正２回目ソースプログラム」における「データフロー」を作成する。なお、図１１に示す「データフロー」において、破線の矢印は、処理間の参照関係を示している。すなわち、破線の終点における処理が、破線の始点における処理結果を参照して実施される処理であることを示している。
【００７３】
そして、再検討必要箇所抽出部１５ａは、これら新たに作成された「制御フロー」および「データフロー」を参照して、図１５の（Ａ）に示すように、「修正１回目ソースプログラム」において「レベル１」の再検討必要箇所として抽出された「７行目」および「８行目」の箇所を（図１３の（Ａ）参照）、「修正２回目ソースプログラム」の行番号である「８行目」および「９行目」に対応付けて抽出し、図１５の（Ｂ）に示すように、「レベル２」の再検討必要箇所として抽出された「１７行目」の箇所を（図１３の（Ｂ）参照）、「修正２回目ソースプログラム」の行番号である「１８行目」に対応付けて抽出し、図１５の（Ｃ）に示すように、「修正１回目ソースプログラム」において「レベル３」の再検討必要箇所として抽出された「１８〜２１行目」の箇所を（図１３の（Ｃ）参照）、「修正２回目ソースプログラム」の行番号である「１９〜２２行目」に対応付けて抽出する。そして、再検討必要箇所抽出部１５ａは、図１４および図１５の（Ａ）〜（Ｃ）に示す抽出結果を、抽出結果記憶部１４ｂに格納する。
【００７４】
ここで、検討履歴更新部１５ｃは、再度、ソフトウェア開発者から『「レベル３」までのすべての再検討必要箇所を表示』との要求を受け付けた場合に、抽出結果記憶部１４ｂに格納された抽出結果に基づいて、図１６の（Ｃ）に示すように、「レベル０」の再検討必要箇所の検討履歴を更新し、情報表示部１５ｂは、検討履歴更新部１５ｃによって更新された検討履歴に基づいて、図２０に示すような画面を表示する。
【００７５】
すなわち、図２０に示す「再検討必要箇所一覧ウィンドウ」においては、関数「ｆｕｎｃＡ」に基づく「レベル０」の再検討必要箇所が、７行目が新たに追加されて「８箇所」となり、そのうち「６箇所」が「検討済み」であることを「０  ｆｕｎｃＡ６／８」として表示し、関数「ｆｕｎｃＡ」に基づく「レベル１」の再検討必要箇所が「２箇所」あり、すべて未検討であることを「１  ｆｕｎｃＡ０／２」として表示し、関数「ｆｕｎｃＢ」に基づく「レベル２」の再検討必要箇所が「１箇所」あり、すべて未検討であることを「２  ｆｕｎｃＢ０／１」として表示し、関数「ｆｕｎｃＢ」に基づく「レベル３」の再検討必要箇所が「４箇所」あり、すべて未検討であることを「３  ｆｕｎｃＢ０／４」として表示している。ここで、合計１５箇所の再検討必要箇所のうち「６箇所」が「検討済み」であることを、さらに、右下の「再検討実績  ６／１５」にて表示している。
【００７６】
さらに、情報表示部１５ｂは、図２０に示すように、「新ソースウィンドウ」に「修正２回目ソースプログラム」を表示し、「旧ソースウィンドウ」に「修正前ソースプログラム」を表示する。また、情報表示部１５ｂは、図２０に示す「新ソースウィンドウ」にて、「修正２回目ソースプログラム」の「行番号」の左側において、再検討必要箇所を、「レベル０」から「レベル３」に対応する位置それぞれに「マーク」を付加して表示する。例えば、情報表示部１５ｂは、「未検討」を示す「白抜き四角（□）」の「マーク」を、「レベル０」の再検討必要箇所として「修正２回目ソースプログラム」における「６行目」および「７行目」にて表示する。
【００７７】
［実施例１におけるソースプログラム再検討装置による処理の手順］
次に、図２１および図２２を用いて、実施例１におけるソースプログラム再検討装置１０による処理を説明する。図２１は、実施例１におけるソースプログラム再検討装置の再検討必要箇所の抽出処理を説明するための図であり、図２１は、実施例１におけるソースプログラム再検討装置の検討履歴更新処理を説明するための図である。
【００７８】
［実施例１におけるソースプログラム再検討装置の再検討必要箇所の抽出処理の手順］
まず、実施例１におけるソースプログラム再検討装置１０は、修正後のソースプログラムが、ソースプログラム記憶部１４ａに格納されると（ステップＳ２１０１肯定）、再検討必要箇所抽出部１５ａは、修正前後のソースプログラムと、修正前後のソースプログラムにおける制御フローおよびデータフローとから、「レベル０」から「レベル３」の再検討必要箇所を、修正後（最新）のソースプログラムの位置情報（行番号）に対応付けて抽出し（ステップＳ２１０２）、処理を終了する。
【００７９】
例えば、再検討必要箇所抽出部１５ａは、「修正１回目ソースプログラム」が格納されると、最初に、図３に示す「修正前ソースプログラム」と、図４に示す「修正１回目ソースプログラム」とを比較して、図１２に示すように、関数「ｆｕｎｃＡ」の内容が変更されている「５行目」と、記載が追加されている「６行目」、「９行目」および「１１〜１４行目」とを、「レベル０」の再検討必要箇所として抽出する。
【００８０】
続いて、再検討必要箇所抽出部１５ａは、図３に示す「修正前ソースプログラム」を静的解析することによって、図６に示す「制御フロー」と、図７に示す「データフロー」とを作成し、さらに、図４に示す「修正１回目ソースプログラム」を静的解析することによって、図８に示す「制御フロー」と、図９に示す「データフロー」とを作成し、これらを参照して、図１３の（Ａ）に示すように、「レベル０」の再検討必要箇所である「調査対象行番号」の中でも、「対象要素」である関数「ｆｕｎｃＡ」の内容が変更されている「５行目」の箇所によって、直接、処理の流れに影響を受ける影響箇所である「７行目」および「８行目」を、「レベル１」の再検討必要箇所として抽出する。
【００８１】
さらに、再検討必要箇所抽出部１５ａは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正１回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、図１３の（Ｂ）に示すように、「調査対象行要素」である関数「ｆｕｎｃＡ」を参照する「対象要素」としての関数「ｆｕｎｃＢ」の処理が記載されている「１７行目」を、「レベル２」の再検討必要箇所として抽出する。
【００８２】
その後、再検討必要箇所抽出部１５ａは、上記と同様に、「修正前ソースプログラム」における「制御フロー」および「データフロー」と、「修正１回目ソースプログラム」における「制御フロー」および「データフロー」とを参照して、図１３の（Ｃ）に示すように、「レベル２」の再検討必要箇所である「調査対象行番号：１７行目」において記載される「対象要素」としての関数「ｆｕｎｃＢ」によって、直接、処理の流れに影響を受ける影響箇所である「１８〜２１行目」を、「レベル３」の再検討必要箇所として抽出する。
【００８３】
また、再検討必要箇所抽出部１５ａは、「修正２回目ソースプログラム」が格納されると、図１４に示すように、「修正２回目ソースプログラム」と「修正１回目ソースプログラム」とを比較して、「修正１回目ソースプログラム」において「レベル０」の再検討必要箇所として抽出された「５行目」、「６行目」、「９行目」および「１１〜１４行目」の箇所を、「修正２回目ソースプログラム」の行番号である「５行目」、「６行目」、「１０行目」および「１２〜１５行目」に対応付けて抽出し、また、「修正２回目ソースプログラム」における「レベル０」の再検討必要箇所として、新たに「７行目」の箇所も抽出する。
【００８４】
さらに、再検討必要箇所抽出部１５ａは、図５に示す「修正２回目ソースプログラム」を静的解析することによって、図１０に示すように、「修正２回目ソースプログラム」における「制御フロー」を作成し、図１１に示すように、「修正２回目ソースプログラム」における「データフロー」を作成し、これら新たに作成された「制御フロー」および「データフロー」を参照して、図１５の（Ａ）に示すように、「修正１回目ソースプログラム」において「レベル１」の再検討必要箇所として抽出された「７行目」および「８行目」の箇所を、「修正２回目ソースプログラム」の行番号である「８行目」および「９行目」に対応付けて抽出し、図１５の（Ｂ）に示すように、「レベル２」の再検討必要箇所として抽出された「１７行目」の箇所を、「修正２回目ソースプログラム」の行番号である「１８行目」に対応付けて抽出し、図１５の（Ｃ）に示すように、「修正１回目ソースプログラム」において「レベル３」の再検討必要箇所として抽出された「１８〜２１行目」の箇所を、「修正２回目ソースプログラム」の行番号である「１９〜２２行目」に対応付けて抽出する。
【００８５】
［実施例１におけるソースプログラム再検討装置の検討履歴更新処理の手順］
まず、実施例１におけるソースプログラム再検討装置１０は、ソフトウェア開発者から再検討作業開始要求を受け付けると（ステップＳ２２０１肯定）、情報表示部１５ｂは、再検討必要箇所と検討履歴とを対応付けて表示する（ステップＳ２２０２）。
【００８６】
すなわち、情報表示部１５ｂは、ソフトウェア開発者から『「レベル３」までのすべての再検討必要箇所を表示』とする再検討作業開始要求を受け付けると、例えば、図１７に示すような画面を、出力部１２にて表示する。
【００８７】
そして、検討履歴更新部１５ｃは、ソフトウェア開発者からの検討履歴の更新を受け付けるまで待機し（ステップＳ２２０３）、検討履歴の更新を受け付けなかった場合は（ステップＳ２２０３否定）、ソフトウェア開発者からの再検討作業終了要求を受け付けるまで待機する（ステップＳ２２０５）。
【００８８】
これに反して、ソフトウェア開発者からの検討履歴の更新を受け付けると（ステップＳ２２０３肯定）、検討履歴更新部１５ｃは、検討履歴を更新する（ステップＳ２２０４）。
【００８９】
例えば、「２００７年２月２６日」に、ソフトウェア開発者である「日本太郎」が、図１７に示す「新ソースウィンドウ」における「レベル０」の再検討必要箇所のうち、「５行目」、「９行目」および「１１〜１４行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「設計仕様所に記載の処理を追加。特に問題なし」とする「指摘メモ」とともに、「検討状態」を「検討済み」とする入力を受け付け（図１８の左側参照）、さらに、図１７に示す「新ソースウィンドウ」における「レベル０」の再検討必要箇所のうち、「６行目」の「マーク」を押下して、「検討状態ダイアログ」を表示させ、「変数「ｙ」が初期化されていない。確認すること」とする「指摘メモ」とともに、「検討状態」を「未検討」とする入力を受け付けると（図１８の右側参照）、検討履歴更新部１５ｃは、図１６の（Ｂ）に示すように、検討履歴を更新する。なお、情報表示部１５ｂは、検討履歴更新部１５ｃによって、図１６の（Ｂ）に示すように、検討履歴が更新されると、図１９に示すように、出力部１２にて表示される画面を変更する。
【００９０】
そして、実施例１におけるソースプログラム再検討装置１０は、ソフトウェア開発者からの再検討作業終了要求を受け付けると（ステップＳ２２０５肯定）、処理を終了する。
【００９１】
［実施例１の効果］
上記したように、実施例１によれば、修正前のソースプログラムである修正前ソースプログラムと、修正後のソースプログラムである修正後ソースプログラムとを比較して、再検討を必要とする箇所である再検討必要箇所を抽出し、抽出された記再検討必要箇所それぞれが検討済みか未検討かを示す履歴である検討履歴を検討履歴更新部１５ｃに記憶し、抽出された再検討必要箇所と、検討履歴更新部１５ｃに記憶された検討済みか未検討かの検討履歴とを対応付けた情報を出力部１２（モニタ）にて表示し、出力部１２（モニタ）において未検討として表示された再検討必要箇所について、入力部１１から検討済みと受け付けた場合に、検討履歴更新部１５ｃに記憶された検討履歴を更新するので、ソフトウェア開発者それぞれが検討した形跡を履歴として残すとともに、ソフトウェア開発者それぞれが検討を必要とする箇所を共有でき、信頼性の高い再検討を実現することが可能となる。
【００９２】
また、実施例１によれば、再検討必要箇所を前記修正後ソースプログラムの位置情報（行番号）に対応付けて抽出し、検討履歴更新部１５ｃは、再検討必要箇所を修正後ソースプログラムの位置情報（行番号）に対応付けて記憶するので、修正前後で再検討必要箇所の位置情報（具体的には、再検討必要箇所がソースプログラムにおいて記載される行番号）にずれが生じた場合でも、常に更新された修正後の位置情報が反映された検討履歴を作成することができ、信頼性の高い再検討を実現することが可能となる。
【００９３】
また、実施例１によれば、修正後ソースプログラムにおいて修正前ソースプログラムから修正された箇所である修正箇所を「レベル０」の再検討必要箇所として抽出し、修正箇所によって修正後ソースプログラムにおいて記述される処理が影響を受ける箇所である影響箇所を、影響の度合いで「レベル１」、「レベル２」および「レベル３」の再検討必要箇所としてレベル分けして抽出し、「レベル０」から「レベル３」にレベル分けされた再検討必要箇所との中から、入力部１１から受け付けたレベルを再検討必要箇所として出力部１２表示するので、顧客の必要性に応じたレベルの再検討必要箇所を表示することで、当該顧客が速やかに検討をすることができ、信頼性の高い再検討を実現することが可能となる。
【実施例２】
【００９４】
さて、これまで実施例１におけるソースプログラム再検討装置について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてもよいものである。そこで、以下では、実施例２におけるソースプログラム再検討装置として、種々の異なる実施例を（１）〜（３）に区分けして説明する。
【００９５】
（１）再検討必要箇所
上記の実施例１では、最新のソースプログラムが格納されるごとに、再検討必要箇所を抽出する場合について説明したが、本発明はこれに限定されるものではなく、例えば、プログラム開発者からの再検討作業開始要求を受け付けて、再検討必要箇所を抽出する場合であってもよい。
【００９６】
（２）システム構成等
また、上記の実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動でおこなうこともでき（例えば、プログラム開発者からの再検討作業開始要求を受け付けるのではなく、最新のソースプログラムが格納されると、自動的に再検討作業開始要求を生成するなど）、あるいは、手動的におこなうものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に更新することができる。
【００９７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各処理部および各記憶部の分散・統合の具体的形態（例えば、図２の形態など）は図示のものに限られず、例えば、情報表示部１５ｂと検討履歴更新部１５ｃとを統合するなど、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９８】
（３）ソースプログラム再検討プログラム
ところで上記の実施例１では、ハードウェアロジックによって各種の処理を実現する場合を説明したが、本発明はこれに限定されるものではなく、あらかじめ用意されたプログラムをコンピュータで実行するようにしてもよい。そこで以下では、図２３を用いて、上記の実施例１に示したソースプログラム再検討装置１０と同様の機能を有するソースプログラム再検討プログラムを実行するコンピュータの一例を説明する。図２３は、実施例１のソースプログラム再検討プログラムを実行するコンピュータを示す図である。
【００９９】
図２３に示すように、情報処理装置としてのコンピュータ２３０は、キーボード２３１、ディスプレイ２３２、ＣＰＵ２３３、ＲＯＭ２３４、ＨＤＤ２３５およびＲＡＭ２３６をバス２３７などで接続して構成される。
【０１００】
ＲＯＭ２３４には、上記の実施例１に示したソースプログラム再検討装置１０と同様の機能を発揮するソースプログラム再検討プログラム、つまり、図２３に示すように、再検討必要箇所抽出プログラム２３４ａ、情報表示プログラム２３４ｂ、検討履歴更新プログラム２３４ｃが予め記憶されている。なお、これらのプログラム２３４ａ〜２３４ｃについては、図２に示したソースプログラム再検討装置１０の各構成要素と同様、適宜統合または分散してもよい。
【０１０１】
そして、ＣＰＵ２３３が、これらのプログラム２３４ａ〜２３４ｃをＲＯＭ２３４から読みだして実行することで、図２３に示すように、各プログラム２３４ａ〜２３４ｃは、再検討必要箇所抽出プロセス２３３ａ、情報表示プロセス２３３ｂ、検討履歴更新プロセス２３３ｃとして機能するようになる。なお、各プロセス２３３ａ〜２３３ｃは、図２に示した、再検討必要箇所抽出部１５ａ、情報表示部１５ｂ、検討履歴更新部１５ｃにそれぞれ対応する。
【０１０２】
また、ＨＤＤ２３５には、図２３に示すように、ソースプログラムデータ２３５ａと、抽出結果データ２３５ｂと、検討履歴データ２３５ｃとが設けられる。このソースプログラムデータ２３５ａは、図２に用いたソースプログラム記憶部１４ａに対応し、抽出結果データ２３５ｂは、図２に用いた抽出結果記憶部１４ｂに対応し、検討履歴データ２３５ｃは、図２に用いた検討履歴記憶部１４ｃに対応する。そしてＣＰＵ２３３は、ソースプログラムデータ２３６ａをソースプログラムデータ２３５ａに対して登録し、抽出結果データ２３６ｂを抽出結果データ２３５ｂに対して登録し、検討履歴データ２３６ｃを検討履歴データ２３５ｃに対して登録し、このソースプログラムデータ２３６ａと、抽出結果データ２３６ｂと、検討履歴データ２３６ｃとを読み出してＲＡＭ２３６に格納し、ＲＡＭ２３６に格納されたソースプログラムデータ２３６ａと、抽出結果データ２３６ｂと、検討履歴データ２３６ｃとに基づいてソースプログラム再検討処理を実行する。
【０１０３】
なお、上記した各プログラム２３４ａ〜２３４ｃについては、必ずしも最初からＲＯＭ２３４に記憶させておく必要はなく、例えばコンピュータ２３０に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」、または、コンピュータ２３０の内外に備えられるＨＤＤなどの「固定用物理媒体」、さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ２３０に接続される「他のコンピュータ（またはサーバ）」などに各プログラムを記憶させておき、コンピュータ２３０がこれらから各プログラムを読み出して実行するようにしてもよい。
【産業上の利用可能性】
【０１０４】
以上のように、本発明に係るソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置は、修正されたソースプログラムを再検討する場合に有用であり、特に、信頼性の高い再検討を実現することが可能なることに適する。
【図面の簡単な説明】
【０１０５】
【図１−１】図１-１は、実施例１におけるソースプログラム再検討装置の概要および特徴を説明するための図である。
【図１−２】図１−２は、実施例１におけるソースプログラム再検討装置の概要および特徴を説明するための図である。
【図２】図２は、実施例１におけるソースプログラム再検討装置の構成を示すブロック図である。
【図３】図３は、実施例１におけるソースプログラム記憶部を説明するための図である。
【図４】図４は、実施例１におけるソースプログラム記憶部を説明するための図である。
【図５】図５は、実施例１におけるソースプログラム記憶部を説明するための図である。
【図６】図６は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図７】図７は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図８】図８は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図９】図９は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１０】図１０は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１１】図１１は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１２】図１２は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１３】図１３は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１４】図１４は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１５】図１５は、実施例１における再検討必要箇所抽出部を説明するための図である。
【図１６】図１６は、実施例１における検討履歴記憶部を説明するための図である。
【図１７】図１７は、実施例１における情報表示部を説明するための図である。
【図１８】図１８は、実施例１における情報表示部を説明するための図である。
【図１９】図１９は、実施例１における情報表示部を説明するための図である。
【図２０】図２０は、実施例１における情報表示部を説明するための図である。
【図２１】図２１は、実施例１におけるソースプログラム再検討装置の再検討必要箇所の抽出処理を説明するための図である。
【図２２】図２２は、実施例１におけるソースプログラム再検討装置の検討履歴更新処理を説明するための図である。
【図２３】図２３は、実施例１のソースプログラム再検討プログラムを実行するコンピュータを示す図である。
【符号の説明】
【０１０６】
１０  ソースプログラム再検討装置
１１  入力部
１２  出力部
１３  入出力制御Ｉ／Ｆ部
１４  記憶部
１４ａ  ソースプログラム記憶部
１４ｂ  抽出結果記憶部
１４ｃ  検討履歴記憶部
１５  処理部
１５ａ  再検討必要箇所抽出部
１５ｂ  情報表示部
１５ｃ  検討履歴更新部
【国際調査報告】
2008129619.tif 000027
2008129619.tif 000028