(57)【要約】【課題】シンボル名の不整合が生じないようにするとともに、簡単にシンボル名を変換できるようにする。【解決手段】ソースコードに含まれるシンボルの情報を抽出して、前記抽出されたシンボル情報から変換対象とするシンボルを選択する。そして、シンボル名の命名規則を決定し、前記選択手段により選択されたシンボルに対して前記決定された命名規則を適用し、変換前のシンボル名と変換後のシンボル名との対応に基づいて前記シンボル名を変換するようにして、ソースコード中のシンボル名を変換する作業を自動化して、手作業による変換に必要だった作業時間を短縮するとともに、シンボル名変換に伴うモジュール間のシンボル名の不整合を解消することができるようにする。【選択図】図１
2010092091.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードに含まれるシンボルの情報を抽出する抽出手段と、
前記抽出手段により抽出されたシンボル情報から変換対象とするシンボルを選択する選択手段と、
シンボル名の命名規則を決定する決定手段と、
前記選択手段により選択されたシンボルに対して前記決定手段により決定された命名規則を適用し、変換前のシンボル名と変換後のシンボル名との対応に基づいて前記シンボル名を変換する適用手段とを備えたことを特徴とするシンボル変換装置。
【請求項２】
ソースコードに含まれるシンボルの情報を抽出する抽出工程と、
前記抽出工程において抽出されたシンボル情報から変換対象とするシンボルを選択する選択工程と、
シンボル名の命名規則を決定する決定工程と、
前記選択工程において選択されたシンボルに対して前記決定工程において決定された命名規則を適用し、変換前のシンボル名と変換後のシンボル名との対応に基づいて前記シンボル名を変換する適用工程とを備えたことを特徴とするシンボル変換方法。
【請求項３】
請求項２に記載のシンボル変換方法の各工程をコンピュータにて実施させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシンボル変換装置、シンボル変換方法及びプログラムに関し、特に、ソースコード中のシンボル名を自動的に変換するために用いて好適な技術に関する。
【背景技術】
【０００２】
近年、ソフトウェア開発の大規模化に伴い、過去の設計資産をモジュール化し再利用する設計方針が一般的になっている。このようなモジュール化されたソフトウェア部品の再利用による設計では、異なるモジュールに同じ名前のシンボルが存在することにより、生じるシンボル名の衝突がしばしば問題となる。そこで、この問題に対し、シンボル名に対して一貫した命名規則を適用することによりシンボル名の衝突を回避する方策が広く用いられている。
【０００３】
命名規則による方策では、例えば、あるモジュールに属するシンボルには必ずシンボル名の接頭語としてモジュール名を付与する等の規則により、異なるモジュール間でのシンボル名衝突を回避している。しかしながらこの方策では、異なる命名規則で設計されたモジュールを再利用する場合、命名規則を統一するため手動でシンボル名を変換する必要があった。シンボル自動で変更する技術としては、例えば、特許文献１に開示されているように、データベース化されたシンボル変換ルールを参照することにより、変換前のシンボル情報から変換後のシンボル情報を自動的に生成している。
【０００４】
【特許文献１】特開２００５−１００２６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前述の特許文献１に開示されたシンボル情報の変換では、変換対象とするシンボルを手動で指定する必要がある。したがって、一般に１つのソフトウェアモジュールには多くのシンボルが含まれるため、これらを全て手動で指定することは多くの時間が必要となる。
【０００６】
また、ソースコード中のシンボル名は文脈に応じて変換すべきか否かが決定されるため、手動によるシンボルの指定では指定するべきシンボルを誤りやすい。さらに、ソフトウェアモジュールのシンボル名を変換する場合においては、あるモジュールに対してシンボル名変換処理を施した場合、そのモジュールに依存する他のモジュールとの間でシンボル名の不整合が生じてしまう。
【０００７】
本発明は前述の問題点に鑑み、シンボル名の不整合が生じないようにするとともに、簡単にシンボル名を変換できるようにすることを目的としている。
【課題を解決するための手段】
【０００８】
本発明のシンボル変換装置は、ソースコードに含まれるシンボルの情報を抽出する抽出手段と、前記抽出手段により抽出されたシンボル情報から変換対象とするシンボルを選択する選択手段と、シンボル名の命名規則を決定する決定手段と、前記選択手段により選択されたシンボルに対して前記決定手段により決定された命名規則を適用し、変換前のシンボル名と変換後のシンボル名との対応に基づいて前記シンボル名を変換する適用手段とを備えたことを特徴とする。
【０００９】
本発明のシンボル変換方法は、ソースコードに含まれるシンボルの情報を抽出する抽出工程と、前記抽出工程において抽出されたシンボル情報から変換対象とするシンボルを選択する選択工程と、シンボル名の命名規則を決定する決定工程と、前記選択工程において選択されたシンボルに対して前記決定工程において決定された命名規則を適用し、変換前のシンボル名と変換後のシンボル名との対応に基づいて前記シンボル名を変換する適用工程とを備えたことを特徴とする。
【００１０】
本発明のプログラムは、前記シンボル変換方法の各工程をコンピュータにて実施させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、シンボル名の不整合が生じないようにするとともに、簡単にシンボル名を変換することができる。
【発明を実施するための最良の形態】
【００１２】
（第１の実施形態）
以下、本発明の実施形態について図面を参照しながら説明する。
図１は、本実施形態に係るシンボル変換装置１の構成例を示すブロック図である。
図１において、１はシンボル変換装置であり、２は変換対象となるシンボルを含んだシンボル抽出対象ファイルである。３は変換前のシンボル名と変換後のシンボル名との対応関係を保持した変換表ファイルであり、４はシンボル変換が施される変換表適用対象ファイルである。
【００１３】
シンボル抽出対象ファイル２及び変換表適用対象ファイル４は共にシンボル名変換作業の対象となるソースコードである。シンボル抽出対象ファイル２はシンボル名を抽出するために参照のみされるのに対し、変換表適用対象ファイル４は内容を変更される点が異なっている。なお、シンボル抽出対象ファイル２及び変換表適用対象ファイル４は、同一のファイルであってもよいし、別のファイルであってもよい。
【００１４】
シンボル変換装置１は、シンボル抽出対象ファイル２の内容を読み込み、ファイル中の全シンボル情報を抽出するシンボル抽出部１ａと、抽出された全シンボル情報から変換対象とするシンボルを選択するシンボル選択部１ｂとを備えている。また、シンボルに施す変換処理の処理内容を決定する命名規則決定部１ｃを備えている。
【００１５】
さらに、シンボル選択部１ｂにより選択された変換対象シンボル情報と命名規則決定部１ｃにより決定された命名規則から変換前のシンボルと変換後のシンボルの対応表を生成する変換表生成部１ｄを備える。また、変換表を変換表ファイル３として保存する機能、変換表ファイル３から変換表を読み込む機能、及び複数の変換表をマージする機能を有する変換表管理部１ｅを備える。さらに、変換表に基づき変換表適用対象ファイル４に含まれるシンボルを変換する変換表適用部１ｆを備える。
【００１６】
以下、図１に基づき、本実施形態におけるシンボル変換処理の流れを説明する。なお、各処理における具体的な実装例をあげるにあたり、変換対象のソースコードはＣ言語で記述されていることを想定する。
【００１７】
まず、シンボル抽出部１ａにより、シンボル抽出対象ファイル２に含まれるシンボル情報を抽出する。ここではシンボル抽出対象ファイル２内で宣言された全ての外部シンボル（ファイルスコープを有するシンボル）を抽出し、図２に示すようなシンボル情報リスト５を作成する。シンボル情報リスト５は、複数のシンボル情報をリスト化したものであり、１つのシンボル情報はシンボル名及びシンボル種類の２つのデータから構成される。
【００１８】
図２に示すシンボル種類は、該シンボルが他のファイルに対しても公開されることを示す「GLOBAL」と、対象ファイル内のみからアクセス可能であることを示す「STATIC」との２種類を区別する。Ｃ言語では外部シンボルは以下のように分類される。
GLOBAL：ファイルスコープを有しstatic宣言されていない変数および関数の宣言子。
STATIC：ファイルスコープを有しstatic宣言された変数および関数の宣言子、ファイルスコープを有するtypedef宣言された型識別子。ファイルスコープを有するstruct, union, enum宣言子とenumの列挙子、および#defineディレクティブによるマクロ名。
【００１９】
以上のシンボル情報リスト５を作成する処理は、既存の構文解析手法によって実現される。
【００２０】
次に、シンボル選択部１ｂにより、シンボル抽出部１ａによって抽出されたシンボル情報のリストから、変換対象となるシンボルを選択する処理について、図３のフローチャートに沿って説明する。
まず、ステップＳ６１において、シンボル抽出対象ファイル２がヘッダファイルであるか否かを判定する。
【００２１】
この判定の結果、ヘッダファイルである場合は、該ファイルは任意のソースコードからincludeされる可能性があるため、シンボル情報リスト５に含まれる全てのシンボルについてシンボル名衝突の可能性がある。そこで、ステップＳ６２に進み、シンボル情報リスト５中の全てのシンボルを変換対象シンボルとし、図４に示すような変換対象シンボル情報リスト７ａを生成する。
【００２２】
一方、ステップＳ６１の判定の結果、シンボル抽出対象ファイル２がヘッダファイルでない場合は、シンボル情報リスト５に含まれるシンボルのうち、シンボル種類が「GLOBAL」であるもののみシンボル名の衝突の可能性がある。そこで、ステップＳ６３に進み、シンボル情報リスト５に含まれるシンボルのうち、シンボル種類が「GLOBAL」であるもののみを変換対象シンボルとし、図５に示すような変換対象シンボル情報リスト７ｂを生成する。
【００２３】
次に、命名規則決定部１ｃは、変換前のシンボル名から変換後のシンボル名を生成するための命名規則を決定する。命名規則としては、例えば、既存の正規表現による置換処理を用いることができる。
【００２４】
図６は、命名規則テーブル８の例を示す図である。
図６において、命名規則番号「０」は、変換前のシンボル名が"xxx_"から始まっていた場合、"xxx_"を"yyy_"で置き換えることを意味する。また、命名規則番号「１」は、変換前のシンボル名が"yyy_"で始まっていた場合、"yyy_"を"YYY_"で置き換えることを意味する。
【００２５】
なお、図６に示す例のように命名規則は複数あってもよい。また、命名規則決定部１ｃは、命名規則テーブル８を生成するために、ユーザの入力に従って生成してもよい。
【００２６】
変換表生成部１ｄは、シンボル選択部１ｂにより生成された変換対象シンボル情報リストと、命名規則決定部１ｃにより生成された命名規則テーブル８とに基づき、変換前のシンボル名と変換後のシンボル名の対応を記述した変換表を生成する。ここで、変換前のシンボル名と変換後のシンボル名との対を変換ルールと呼び、変換表は変換ルールを複数まとめたテーブルである。
【００２７】
図７は、変換対象シンボル情報リスト７ａと命名規則テーブル８とを元に生成した変換表９の例を示す図である。なお、図７に示すように、各変換ルールに対して識別のためのＩＤ番号（変換ルール番号）を付与してもよい。
【００２８】
図８は、本実施形態における変換表生成部１ｄによる変換表を生成する処理手順の一例を示すフローチャートである。
まず、ステップＳ１０１において、変換表を初期化する。次に、ステップＳ１０２において、該当する命名規則を探索する。そして、ステップＳ１０３において、該当する命名規則があるか否かを判定する。
【００２９】
この判定の結果、該当する命名規則があった場合は、ステップＳ１０４において、該シンボルのシンボル名に対して該命名規則に基づくシンボル名変更を施し、変換後のシンボル名を得る。一方、ステップＳ１０３の判定の結果、該当する命名規則がなかった場合は、ステップＳ１０５において、変換前のシンボル名をそのまま変換後のシンボル名とする。
【００３０】
次に、ステップＳ１０６において、ステップＳ１０４またはステップＳ１０５で得たシンボル名が既に変換表の変換後シンボル名に存在しているか否かを確認する。この確認の結果、存在していた場合は、シンボル名を変更することによりシンボル名衝突が起こることを意味するので、ステップＳ１０７に進み、適切なエラー処理を行い、変換表生成処理を終了する。
【００３１】
なお、ステップＳ１０７におけるエラー処理としては、例えば、シンボル名衝突を回避するために必要な情報（衝突した２つのシンボルそれぞれの、変換前のシンボル名・変換後のシンボル名・変換に用いた命名規則、等）をユーザに提示することができる。また、命名規則決定部１ｃにより新たな命名規則テーブルを生成し、再び変換表生成処理を実行してもよい。
【００３２】
一方、ステップＳ１０６の確認の結果、衝突するシンボルが存在しなかった場合は、ステップＳ１０８において、変換前のシンボル名と変換後のシンボル名の対を変換ルールとして変換表に追加する。そして、ステップＳ１０９において、全シンボルに対して処理を行ったか否かを判定する。この判定の結果、全シンボルについて終了していない場合は、ステップＳ１０２に戻り、次のシンボルについて処理を繰り返す。一方、ステップＳ１０９の判定の結果、全シンボルについて終了した場合は、変換表を生成する処理を終了する。
【００３３】
次に、変換表管理部１ｅによる変換表管理処理について説明する。変換表管理部１ｅは変換表を保持しており、保持する変換表を変換表ファイル３として保存する変換表保存機能を有している。さらに、変換表ファイル３から変換表を読み込む変換表読込機能、及び複数の変換表をマージする変換表マージ機能を有している。なお、変換表保存機能、変換表読込機能については既存の手法で実現されるため説明は省略し、ここでは変換表マージ機能について説明する。
【００３４】
変換表管理部１ｅに対して、変換表読込機能または変換表生成部１ｄによって新たな変換表が入力された場合、変換表管理部１ｅは保持していた変換表（既存変換表）と新たに入力された変換表（新規変換表）とをマージする。そして、既存変換表を更新する。
【００３５】
図９は、本実施形態における変換表管理部１ｅによる変換表のマージ処理手順の一例を示すフローチャートである。
まず、ステップＳ１１１において、既存の変換表に類似の変換ルールがあるか否かを探索する。この探索の結果、変換前のシンボル名、変換後のシンボル名ともに一致する変換ルールが既存の変換表にあった場合は、該変換ルールを追加する必要は無いので、何もせずにステップＳ１１４へ進む。
【００３６】
また、ステップＳ１１１の探索の結果、変換前のシンボル名、変換後のシンボル名のどちらか一方も既存変換表中の変換ルールと一致しなかった場合は、ステップＳ１１２に進み、該変換ルールを既存変換表に追加する。
【００３７】
また、ステップＳ１１１の探索の結果、変換前のシンボル名、変換後のシンボル名のどちらか一方のみが一致する変換ルールが既存変換表中にあった場合は、既存変換表と新規変換表の間に競合する変換ルールがあることを意味する。したがって、ステップＳ１１３に進み、適切なエラー対応処理を行った上で、変換表マージ処理を終了する。なお、ステップＳ１１３におけるエラー対応処理としては、例えば、競合する２つの変換ルールの内容をユーザに提示することができる。
【００３８】
また、新規変換表が変換表生成部１ｄにより投入されていた場合は、命名規則決定部１ｃにより新たな命名規則テーブルを生成した上で再び変換表生成処理を実行し、得られた変換表を用いて再び変換表マージ処理を実行してもよい。以上の手順により、変換表管理部１ｅは変換表マージ機能を実現する。
【００３９】
変換表適用部１ｆは、変換表管理部１ｅの保持する変換表に基づき、変換表適用対象ファイル４に対してシンボル名変更の処理を施す。図１０は、本実施形態における変換表適用部１ｆによる変換表を適用する処理手順の一例を示すフローチャートである。
【００４０】
各シンボル名に対しては、まず、ステップＳ１２１において、該シンボルが変換対象であるか、すなわち変換表中に変換前のシンボル名が該シンボル名と一致する変換ルールがあるか否かを判定する。この判定の結果、該当する変換ルールがある場合は、ステップＳ１２２において、シンボル名を該変換ルールの変換後のシンボル名で置き換える。
【００４１】
一方、ステップＳ１２１の判定の結果、該当する変換ルールがない場合は、ステップＳ１２３に進む。そして、ステップＳ１２３において、該シンボルが変換表により置き換えられたシンボル名と競合するか、すなわち変換表中に変換後のシンボル名が該シンボル名と一致する変換ルールがあるか否かを判定する。
【００４２】
この判定の結果、該当する変換ルールがない場合は、該シンボル名は変換表により置き換えられたシンボル名と競合しないので、次のステップＳ１２４に進み、すべてのシンボルについて終了したか否かを判定する。この判定の結果、すべてのシンボルについて終了していない場合はステップＳ１２１に戻り、次のシンボルについて処理を進める。一方、ステップＳ１２４の判定の結果、全てのシンボルについて終了した場合は、そのまま変換表適用処理を終了する。
【００４３】
一方、ステップＳ１２３の判定の結果、該当する変換ルールがある場合は、該シンボル名は変換表により置き換えられたシンボル名と競合するため、ステップＳ１２５に進み、適切なエラー対応処理を行った上で、変換表適用処理を終了する。
【００４４】
ステップＳ１２５におけるエラー対応処理としては、例えば競合したシンボル名・競合した変換ルールの変換前のシンボル名および変換後のシンボル名をユーザに提示することができる。以上の処理により、変換表適用部１ｆは、変換表に基づいて変換表適用対象ファイル４に含まれるシンボル名を置き換える。
【００４５】
以上のように本実施形態によれば、ソースコード中のシンボル名を変換する作業が自動化され、手作業による変換に必要だった作業時間を短縮することができる。また、手作業による誤ったシンボルの指定を回避することにより、シンボル名変換作業の正確性を向上させることができる。さらに、あるモジュールに施したシンボル名変換と同様の変換を他のモジュールに対しても適用することによってシンボル名変換に伴うモジュール間のシンボル名の不整合を解消することができ、不整合解消のための作業時間を短縮することができる。
【００４６】
（本発明に係る他の実施形態）
前述した本発明の実施形態におけるシンボル変換装置を構成する各手段、並びにシンボル変換方法の各工程は、コンピュータのＲＡＭやＲＯＭなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【００４７】
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【００４８】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（実施形態では図３、８〜１０に示すフローチャートに対応したプログラム）を、システムまたは装置に直接、または遠隔から供給する場合も含む。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【００４９】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００５０】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００５１】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスクなどがある。さらに、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ）などもある。
【００５２】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する方法がある。そして、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【００５３】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００５４】
また、その他の方法として、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記録媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００５５】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００５６】
さらに、その他の方法として、まず記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００５７】
【図１】本発明の実施形態に係るシンボル変換装置の構成例を示すブロック図である。
【図２】本発明の実施形態におけるシンボル情報リストの一例を示す図である。
【図３】本発明の実施形態におけるシンボル選択部による変換対象となるシンボルを選択する処理手順の一例を示すフローチャートである。
【図４】本発明の実施形態において、シンボル抽出対象ファイルがヘッダファイルである場合の変換対象シンボル情報リストの一例を示す図である。
【図５】本発明の実施形態において、シンボル抽出対象ファイルがヘッダファイルでない場合の変換対象シンボル情報リストの一例を示す図である。
【図６】本発明の実施形態における命名規則テーブルの一例を示す図である。
【図７】本発明の実施形態における変換対象シンボル情報リストと命名規則テーブルとを元に生成した変換表の一例を示す図である。
【図８】本発明の実施形態における変換表生成部による変換表を生成する処理手順の一例を示すフローチャートである。
【図９】本発明の実施形態における変換表管理部による変換表のマージ処理手順の一例を示すフローチャートである。
【図１０】本発明の実施形態における変換表適用部による変換表を適用する処理手順の一例を示すフローチャートである。
【符号の説明】
【００５８】
１  シンボル変換装置
１ａ  シンボル抽出部
１ｂ  シンボル選択部
１ｃ  命名規則決定部
１ｄ  変換表生成部
１ｅ  変換表管理部
１ｆ  変換表適用部
２  シンボル抽出対象ファイル
３  変換表ファイル
４  変換表適用対象ファイル
【図１】
2010092091.tif 000003
【図２】
2010092091.tif 000004
【図３】
2010092091.tif 000005
【図４】
2010092091.tif 000006
【図５】
2010092091.tif 000007
【図６】
2010092091.tif 000008
【図７】
2010092091.tif 000009
【図８】
2010092091.tif 000010
【図９】
2010092091.tif 000011
【図１０】
2010092091.tif 000012