(57)【要約】【課題】プログラム設計ツールによるソースコードの修正から修正前のソースコードを保護することのできるソースコード保護装置を提供する。【解決手段】ソースコード保護装置１は、原ソースコードＳ１に対する保護領域を指定する保護領域指定部１１と、原ソースコードＳ１の修正を意図して生成された新ソースコードＳ２と原ソースコードＳ１との差異部分を抽出する差異抽出部１２と、差異抽出部１２により抽出された差異部分の原ソースコードＳ１が保護領域指定部１１により指定された保護領域に含まれているかどうかを判定する保護判定部１３と、保護判定部１３により保護領域に含まれていると判定された上述の差異部分の新ソースコードＳ２を原ソースコードＳ１に差し戻すソースコード差し戻し部１４と、を備える。【選択図】図１
2008197982.tif 000002
【特許請求の範囲】
【請求項１】
原ソースコードに対する保護領域を指定する保護領域指定手段と、
前記原ソースコードの修正を意図してプログラム設計ツールにより生成された新ソースコードと前記原ソースコードとの差異部分を抽出する差異抽出手段と、
前記差異部分の前記原ソースコードが前記保護領域に含まれているかどうかを判定する保護判定手段と、
前記保護判定手段により前記保護領域に含まれていると判定された前記差異部分の前記新ソースコードを前記原ソースコードに差し戻すソースコード差し戻し手段と
を備えることを特徴とするソースコード保護装置。
【請求項２】
原ソースコードに対する保護領域を指定する保護領域指定手段と、
前記原ソースコードの修正を意図してプログラム設計ツールにより生成された新ソースコードと前記原ソースコードとの差異部分を抽出する差異抽出手段と、
前記差異部分の前記原ソースコードが前記保護領域に含まれているときに警告を発する警告生成手段と、
前記警告が発せられたときに、前記差異部分の前記新ソースコードを前記原ソースコードに差し戻す処理を行うか否かの選択を要求する選択要求手段と、
前記選択に応じて前記差異部分の前記新ソースコードに対する処理を行うソースコード処理手段と
を備えることを特徴とするソースコード保護装置。
【請求項３】
前記差異部分に含まれる前記新ソースコードの関数が影響を及ぼす範囲を前記新ソースコード上にグラフィカルに表示する影響範囲表示手段を、
さらに備えることを特徴とする請求項２に記載のソースコード保護装置。
【請求項４】
前記差異抽出手段が、
前記原ソースコードのデバッグ情報および前記新ソースコードのデバッグ情報にもとづいて前記差異部分を抽出する
ことを特徴とする請求項２または３に記載のソースコード保護装置。
【請求項５】
前記差異抽出手段が、
前記原ソースコードと前記新ソースコードとの差異のうち、ロジックおよび変数の値に変更が加えられた部分のみを前記差異部分として抽出する
ことを特徴とする請求項４に記載のソースコード保護装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード保護装置に関し、特にプログラム設計ツールにより自動生成されたソースコードを保護するソースコード保護装置に関する。
【背景技術】
【０００２】
近年、プログラムの開発効率向上のため、ＵＭＬ（Unified  Modeling  Language）に代表されるモデル記述言語で記述された動作仕様からソースコードを自動生成するプログラム設計ツールが、プログラムの開発に用いられている（例えば、特許文献１参照。）。
【０００３】
このようなプログラム設計ツールの使用によりソースコードの生産効率は向上するが、その反面、生成されたソースコードの検証効率が低下するという問題が発生する。例えば、デバッグなどによりソースコードの検証が一旦済んだ後にプログラムの修正が必要になった場合など、プログラム設計ツールから新たなソースコードが生成される。そのため、この新たに生成されたソースコード全体の検証を改めて行わなければならない。この場合、修正前と後で同じソースコードが生成されていたとしても、その部分の検証を再度行わなければならない。
【０００４】
そこで、このような場合、修正を加えたくない部分のソースコードが保護され、その部分がそのまま保存されていることが望まれる。そうすれば、その部分の検証を繰り返し行う必要がなくなる。しかし、プログラム設計ツールで自動生成されたソースコードの構造は設計者には不明であるため、保存したいソースコードの記述場所を設計者が特定することは困難である。
【特許文献１】特開２００４−７０８１０号公報  （第６−７ページ、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
そこで、本発明の目的は、プログラム設計ツールによるソースコードの修正から修正前のソースコードを保護することのできるソースコード保護装置を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一態様によれば、原ソースコードに対する保護領域を指定する保護領域指定手段と、前記原ソースコードの修正を意図してプログラム設計ツールにより生成された新ソースコードと前記原ソースコードとの差異部分を抽出する差異抽出手段と、前記差異部分の前記原ソースコードが前記保護領域に含まれているかどうかを判定する保護判定手段と、前記保護判定手段により前記保護領域に含まれていると判定された前記差異部分の前記新ソースコードを前記原ソースコードに差し戻すソースコード差し戻し手段とを備えることを特徴とするソースコード保護装置が提供される。
【０００７】
また、本発明の別の一態様によれば、原ソースコードに対する保護領域を指定する保護領域指定手段と、前記原ソースコードの修正を意図してプログラム設計ツールにより生成された新ソースコードと前記原ソースコードとの差異部分を抽出する差異抽出手段と、前記差異部分の前記原ソースコードが前記保護領域に含まれているときに警告を発する警告生成手段と、前記警告が発せられたときに、前記差異部分の前記新ソースコードを前記原ソースコードに差し戻す処理を行うか否かの選択を要求する選択要求手段と、前記選択に応じて前記差異部分の前記新ソースコードに対する処理を行うソースコード処理手段とを備えることを特徴とするソースコード保護装置が提供される。
【発明の効果】
【０００８】
本発明によれば、プログラム設計ツールによるソースコードの修正から修正前のソースコードを保護することができるので、ソースコードの検証効率を向上させることができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施例を図面を参照して説明する。なお、各実施例のソースコード保護装置は、ＵＭＬなどのモデル記述言語で記述された設計記述からプログラム設計ツールにより生成されたソースコードをその処理対象とするものとする。
【実施例１】
【００１０】
図１は、本発明の実施例１に係るソースコード保護装置の構成の例を示すブロック図である。
【００１１】
本実施例のソースコード保護装置１へは、プログラム設計ツール１００により原設計記述Ｕ１から生成された原ソースコードＳ１、および原設計記述Ｕ１を修正した新設計記述Ｕ２からプログラム設計ツール１００により生成された新ソースコードＳ２が入力される。
【００１２】
本実施例のソースコード保護装置１は、原ソースコードＳ１に対する保護領域を指定する保護領域指定部１１と、原ソースコードＳ１の修正を意図して生成された新ソースコードＳ２と原ソースコードＳ１との差異部分を抽出する差異抽出部１２と、差異抽出部１２により抽出された差異部分の原ソースコードＳ１が保護領域指定部１１により指定された保護領域に含まれているかどうかを判定する保護判定部１３と、保護判定部１３により保護領域に含まれていると判定された上述の差異部分の新ソースコードＳ２を原ソースコードＳ１に差し戻すソースコード差し戻し部１４と、を備える。
【００１３】
保護領域指定部１１は、外部からの保護対象指定入力にもとづいて、原ソースコードＳ１において保護すべき領域を記述した保護領域管理テーブルを作成する。ここで、保護対象指定入力としては、原ソースコードＳ１に対して変更を加えたくない領域が、ファイル、モジュール、関数の単位で指定される。
【００１４】
図２に、保護領域指定部１１が生成する保護領域管理テーブルの例を示す。保護領域管理テーブルでは、保護対象の領域の名称（例えば、file a、moduleA、funcA）が、保護単位とともに番号を付けて管理される。
【００１５】
差異抽出部１２は、原ソースコードＳ１と、この原ソースコードＳ１の修正を意図して生成された新ソースコードＳ２との差異部分を抽出する。
【００１６】
保護判定部１３は、差異抽出部１２により抽出された差異部分の原ソースコードＳ１を図２に示した保護領域管理テーブルと照合する。この照合により、一致するものがあれば、その部分の原ソースコードＳ１が、新ソースコードＳ２では変更されていると判定することができる。
【００１７】
そこで、ソースコード差し戻し部１４は、この部分の新ソースコードＳ２を原ソースコードＳ１に差し戻す。これにより、保護領域管理テーブルに記載された領域のソースコードは、新ソースコードＳ２においても保護される。
【００１８】
このようにして、ソースコード差し戻し部１４は、新ソースコードＳ２に対して、保護領域管理テーブルに記載された領域が変更されている部分を原ソースコードＳ１に差し戻す処理を行い、その結果を保護済みソースコードＳ３として出力する。
【００１９】
このような本実施例によれば、原ソースコードに対して予め保護領域を指定しておくことにより、原ソースコードに対する修正が行なわれても、その保護領域のソースコードを修正から保護することができる。
【実施例２】
【００２０】
図３は、本発明の実施例２に係るソースコード保護装置の構成の例を示すブロック図である。本実施例のソースコード保護装置２が、実施例１のソースコード保護装置１と異なる点は、新ソースコードＳ２において保護領域のソースコードの変更が行われていた場合、そのソースコードを原ソースコードＳ１へ差し戻すかどうかの判断を設計者が行えるようにした点である。
【００２１】
本実施例のソースコード保護装置２は、原ソースコードＳ１に対する保護領域を指定する保護領域指定部２１と、原ソースコードＳ１の修正を意図して生成された新ソースコードＳ２と原ソースコードＳ１との差異部分を抽出する差異抽出部２２と、差異抽出部２２により抽出された差異部分の原ソースコードＳ１が保護領域指定部２１により指定された保護領域に含まれているときに警告を発する警告生成部２３と、その警告が発せられたときに、上述の差異部分の新ソースコードＳ２を原ソースコードＳ１に差し戻す処理を行うか否かの選択を要求する選択要求部２４と、入力された選択に応じて差異部分の新ソースコードＳ２に対する処理を行うソースコード処理部２５と、を備える。
【００２２】
保護領域指定部２１は、実施例１の保護領域指定部１１と同様、外部からの保護対象指定入力にもとづいて、原ソースコードＳ１において保護すべき領域を記述した保護領域管理テーブルを作成する。保護領域管理テーブルの例は、実施例１で示した図２と同様である。
【００２３】
また、差異抽出部２２も、実施例１の差異抽出部１２と同様、原ソースコードＳ１と、この原ソースコードＳ１の修正を意図して生成された新ソースコードＳ２との差異部分を抽出する。
【００２４】
警告生成部２３は、差異抽出部２２により抽出された差異部分の原ソースコードＳ１を図２に示したような保護領域管理テーブルと照合する。この照合により、一致するものがあれば、その部分の原ソースコードＳ１が、新ソースコードＳ２では変更されていると判定することができる。そこで、警告生成部２３は、保護領域に対して変更が行われようとしていることを設計者へ知らせるために、外部へ対して警告を発する。
【００２５】
そのとき、選択要求部２４は、差異部分の新ソースコードＳ２を原ソースコードＳ１に差し戻す処理を行うか否かの選択を設計者に要求する。
【００２６】
図４に、この警告生成部２３の警告と、選択要求部２４の選択要求と、を一緒にＧＵＩ（Graphical  User  Interface）表示した例を示す。
【００２７】
この例では、保護領域管理テーブルに記載されている関数‘funcA’が、新ソースコードＳ２において変更されていることを警告し、この変更を原ソースコードＳ１の戻すかどうかの選択を設計者に要求している。
【００２８】
ソースコード処理部２５は、選択要求部２４において設計者が入力した選択に応じて、差異部分の新ソースコードＳ２に対する処理を行う。
【００２９】
例えば、図４に示す表示において「はい」が入力されたときは、差異部分の新ソースコードＳ２を原ソースコードＳ１に差し戻す処理を行い、「いいえ」が入力されたときは、差異部分の新ソースコードＳ２をそのまま残す処理を行う。
【００３０】
このようにして、ソースコード処理部２５は、新ソースコードＳ２の、保護領域管理テーブルに記載された領域が変更されている部分に対して、設計者の選択に応じて、原ソースコードＳ１に差し戻す処理を行うか、新ソースコードＳ２のまま残すかの処理を行い、その結果を処理済みソースコードＳ４として出力する。
【００３１】
このような本実施例によれば、予め保護がかけられている原ソースコードに対する変更が行われようとしたときに、その変更が妥当なものであるかどうかを判断する機会を設計者に提供することができる。
【実施例３】
【００３２】
図５は、本発明の実施例３に係るソースコード保護装置の構成の例を示すブロック図である。本実施例のソースコード保護装置３は、実施例２のソースコード保護装置２に対して、影響範囲表示部３１を追加したものである。そこで、図５において、図３に示したブロックと同一の機能を有するブロックには図３と同一の符号を付し、ここではその詳細な説明を省略する。
【００３３】
影響範囲表示部３１は、差異抽出部２２により抽出された差異部分に含まれる新ソースコードＳ２に記述された関数が、新ソースコードＳ２のどこに影響を及ぼしているかを、新ソースコードＳ２上に着色などして、グラフィカルにわかりやすく表示する。
【００３４】
図６に、影響範囲表示部３１の出力の例を示す。この例では、保護領域指定部２１により保護領域に指定されている関数‘funcA’に対して、新ソースコードＳ２において変更が行われているときの表示の例を示す。なお、ここでは、変更された関数およびその変更が影響を及ぼす箇所をその背景を着色することにより示す。
【００３５】
図６に示す例では、変更された関数‘funcA’と、関数‘funcA’に呼び出されている関数‘funcD’および‘funcE’と、関数‘funcA’を呼び出している関数‘funcF’および‘funcG’が着色されて、関数の変更の影響する箇所が一目瞭然で認識できる。
【００３６】
また、このほかに、影響範囲表示部３１は、関数変更の影響を示すリストも出力する。図７に、影響範囲表示部３１から出力される関数変更の影響を示すリストの例を示す。
【００３７】
図７（ａ）は、保護領域指定部２１により保護領域に指定されている関数に対して、新ソースコードＳ２において変更が行われた関数のリストであり、図７（ｂ）は、その変更が行われた関数のそれぞれについて、その変更された関数に呼び出される関数を拾い出したリストであり、図７（ｃ）は、その変更が行われた関数のそれぞれについて、その変更された関数を呼び出す関数を拾い出したリストである。それぞれのリストには、変更許可チェック欄がついており、コードレビューや単体テストなどにより関数の変更に問題がないと判定されているかどうかをチェックできるようになっている。
【００３８】
設計者は、この影響範囲表示部３１の出力を参照して、選択要求部２４による選択入力要求に対する判断を下すことができる。
【００３９】
このような本実施例によれば、予め保護がかけられている原ソースコードに対する変更が行われようとしたときに、その変更の及ぼす影響を把握することが容易であり、その変更が妥当なものであるかどうかを設計者が判断するときに、その判断を誤ることを防止することができる。
【実施例４】
【００４０】
図８は、本発明の実施例４に係るソースコード保護装置の構成の例を示すブロック図である。本実施例のソースコード保護装置４は、実施例３のソースコード保護装置３と構成は同じであるが、差異抽出部４２が、原ソースコードデバッグ情報Ｄ１と、新ソースコードデバッグ情報Ｄ２を入力として、原ソースコードＳ１と新ソースコードＳ２との差異部分を抽出する点が、実施例３のソースコード保護装置３とは異なる。
【００４１】
原ソースコードデバッグ情報Ｄ１および新ソースコードデバッグ情報Ｄ２は、原ソースコードＳ１および新ソースコードＳ２をそれぞれビルドすることにより得られる。
【００４２】
差異抽出部４２は、このデバッグ情報を用いることにより、ローカル変数名の変更や改行の挿入、あるいはコメントの修正など、ロジックおよび変数の変更が見られないソースコードの変更については、これを差異抽出の対象から除外する。
【００４３】
このような本実施例によれば、ロジックおよび変数の変更が見られる変更のみが、ソースコードの差異部分として抽出されるので、保護領域のソースコードの変更に対して、設計者にその妥当性の判断を真に要求したいものだけにその対象を絞り込むことができる。
【図面の簡単な説明】
【００４４】
【図１】本発明の実施例１に係るソースコード保護装置の構成の例を示すブロック図。
【図２】保護領域管理テーブルの例を示す図。
【図３】本発明の実施例２に係るソースコード保護装置の構成の例を示すブロック図。
【図４】選択要求の表示の例を示す図。
【図５】本発明の実施例３に係るソースコード保護装置の構成の例を示すブロック図。
【図６】影響範囲の表示の例を示す図。
【図７】関数変更の影響を示すリストの例を示す図。
【図８】本発明の実施例４に係るソースコード保護装置の構成の例を示すブロック図。
【符号の説明】
【００４５】
１〜４  ソースコード保護装置
１１、２１  保護領域指定部
１２、２２、４２  差異抽出部
１３  保護判定部
１４  ソースコード差し戻し部
２３  警告生成部
２４  選択要求部
２５  ソースコード処理部
３１  影響範囲抽出部
【図１】
2008197982.tif 000003
【図２】
2008197982.tif 000004
【図３】
2008197982.tif 000005
【図４】
2008197982.tif 000006
【図５】
2008197982.tif 000007
【図６】
2008197982.tif 000008
【図７】
2008197982.tif 000009
【図８】
2008197982.tif 000010