(57)【要約】      （修正有）【課題】配置先領域間のルールに違反する依存関係を検出できる違反依存検出装置を提供する。【解決手段】違反依存検出装置１００は、関係解析部１１１と違反解析部１１２を備える。関係解析部は、配置先領域リストと依存要素組リストとに基づいて、依存領域組リストを生成する。違反解析部は、依存領域組リストと違反領域組リストとに基づいて、違反要素組リストを生成する。依存領域組リストには、ソースコードに含まれる依存元要素と、依存元要素が配置される依存元配置領域と、依存元要素に依存する依存先要素と、依存先要素が配置される依存先配置領域と、が互いに対応付けられている。違反領域組リストには、依存元違反領域と、依存先違反領域と、が互いに対応付けられている。違反要素組リストは、依存元違反領域に配置される依存元要素と依存先違反領域に配置される依存先要素との組を示す。【選択図】図１
2019215607.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードに含まれる１つ以上のプログラム要素である１つ以上の依存元要素と、１つ以上の依存元要素が配置される１つ以上の記憶領域である１つ以上の依存元配置領域と、１つ以上のプログラム要素であり１つ以上の依存元要素に依存する１つ以上の依存先要素と、１つ以上の依存先要素が配置される１つ以上の記憶領域である１つ以上の依存先配置領域と、が互いに対応付けられた依存領域組リスト、及び、１つ以上の記憶領域である１つ以上の依存元違反領域と、１つ以上の記憶領域である１つ以上の依存先違反領域と、が互いに対応付けられた違反領域組リストに基づいて、依存元違反領域に配置される依存元要素と依存先違反領域に配置される依存先要素との組を１つ以上示す違反要素組リストを生成する違反解析部
を備える違反依存検出装置。
【請求項２】
１つ以上のプログラム要素と１つ以上のプログラム要素が配置される１つ以上の記憶領域である１つ以上の配置先領域とが互いに対応付けられた配置先領域リスト、及び、前記１つ以上の依存元要素と前記１つ以上の依存先要素とが互いに対応付けられた依存要素組リストに基づいて、前記依存領域組リストを生成する関係解析部を備える
請求項１に記載の違反依存検出装置。
【請求項３】
１つ以上のプログラム要素と１つ以上のプログラム要素が配置される１つ以上の記憶領域の位置を示す１つ以上の配置先アドレスとが互いに対応付けられた配置先アドレスリスト、及び、１つ以上の記憶領域と１つ以上の記憶領域の範囲を示す１つ以上のアドレス区間とが互いに対応付けられた記憶領域リストに基づいて、前記配置先領域リストを生成する領域解析部を備える
請求項２に記載の違反依存検出装置。
【請求項４】
前記配置先アドレスリストが、配置先アドレスとして、プログラム要素が配置される記憶領域の先頭アドレスとプログラム要素が配置される記憶領域の終了アドレスとを示す
請求項３に記載の違反依存検出装置。
【請求項５】
前記ソースコードを解析し、解析結果に基づいて前記配置先アドレスリストを生成するアドレス解析部を備える
請求項３または請求項４に記載の違反依存検出装置。
【請求項６】
前記ソースコードを解析し、解析結果に基づいて前記配置先領域リストを生成する領域解析部を備える
請求項２に記載の違反依存検出装置。
【請求項７】
前記ソースコードから前記１つ以上の依存元要素と前記１つ以上の依存先要素とを抽出し、前記依存要素組リストを生成する関係抽出部を備える
請求項２から請求項６のいずれか１項に記載の違反依存検出装置。
【請求項８】
前記違反要素組リストは、依存元違反領域に配置される依存元要素である依存元違反要素と依存先違反領域に配置される依存先要素である依存先違反要素との組を１つ以上示し、
前記違反依存検出装置は、さらに、
前記違反要素組リストに基づいて前記ソースコードから依存元違反要素が依存先違反要素を使用する違反箇所を見つけ、前記ソースコードの中の前記違反箇所にしるしを付ける装飾部を備える
請求項１から請求項７のいずれか１項に記載の違反依存検出装置。
【請求項９】
前記装飾部は、前記ソースコードから依存元違反要素と依存先違反要素とのそれぞれの定義箇所を見つけ、前記ソースコードの中のそれぞれの定義箇所にしるしを付ける
請求項８に記載の違反依存検出装置。
【請求項１０】
前記装飾部は、前記依存領域組リストに基づいて、依存元違反要素の定義箇所に依存元配置領域に対応するしるしを付けると共に、依存先違反要素の定義箇所に依存先配置領域に対応するしるしを付ける
請求項９に記載の違反依存検出装置。
【請求項１１】
ソースコードに含まれる１つ以上のプログラム要素である１つ以上の依存元要素と、１つ以上の依存元要素が配置される１つ以上の記憶領域である１つ以上の依存元配置領域と、１つ以上のプログラム要素であり１つ以上の依存元要素に依存する１つ以上の依存先要素と、１つ以上の依存先要素が配置される１つ以上の記憶領域である１つ以上の依存先配置領域と、が互いに対応付けられた依存領域組リスト、及び、１つ以上の記憶領域である１つ以上の依存元違反領域と、１つ以上の記憶領域である１つ以上の依存先違反領域と、が互いに対応付けられた違反領域組リストに基づいて、依存元違反領域に配置される依存元要素と依存先違反領域に配置される依存先要素との組を１つ以上示す違反要素組リストを生成する違反解析部
としてコンピュータを機能させるための違反依存検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコードに含まれるルール違反の依存関係を検出する技術に関するものである。
【背景技術】
【０００２】
組込み機器の開発において、ソースコード内の各要素（関数または変数等）の配置先領域をファイルレベルまたは関数レベルで指定することが可能である。
これにより、１チップマイクロコンピュータに内蔵されるメモリのどのアドレス空間に各要素を配置するかを制御できる。
例えば、ＡＲＭ社のコンパイラが使用される場合、スキャッタファイルと呼ばれるリンカ設定ファイルを用いて各要素の配置先領域を設定することができる。
【０００３】
組込み機器のＲＯＭに書かれたＦ／Ｗ（ファームウェア）を更新するＦ／Ｗアップデートと呼ばれる機能がある。
通常、１チップマイクロコンピュータのフラッシュメモリにプログラムが書き込まれる場合、ライターと呼ばれる機器が１チップマイクロコンピュータの外部端子に接続され、プログラムが１チップマイクロコンピュータのフラッシュメモリに直接書き込まれる。
一方、Ｆ／Ｗアップデートでは、１チップマイクロコンピュータに内蔵されるシリアルコミュニケーションインターフェイスを介して、マイクロコンピュータのフラッシュメモリにプログラムが書き込まれる。
【０００４】
Ｆ／Ｗアップデートが実施される場合、ライターを用いてアップデート実施プログラムとアップデート対象プログラムとが一つのフラッシュメモリに書き込まれる。そして、アップデート実施プログラムがフラッシュメモリからＲＡＭにロードされ、フラッシュメモリ内のアップデート対象プログラムに対して消去または書き込みが実施される。
【０００５】
特許文献１は、プログラムの更新箇所のみをフラッシュメモリに書き込む技術が開示されている。
特許文献２は、１つのフラッシュメモリをプログラム領域とデータ領域とに使用する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−２６５２８３号公報
【特許文献２】特許第３７２７４８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記のような技術を用いて組込みＦ／Ｗが開発される場合、配置先領域間にルール違反の依存関係があると、プログラムが想定どおりの動作をしない場合またはプログラムが実行時異常となる場合がある。
例えば、Ｆ／Ｗアップデートにおいてフラッシュメモリ内のアップデート対象プログラムに対して消去または書き込みが実施される際に、ＲＡＭ内のアップデート実施プログラムから消去済み領域の関数が呼び出された場合、その関数の実体が存在しないため実行時異常が発生する。
また、明示的に配置先エリアが記載された要素以外の要素についてはコンパイラのリンクルールに従って自動的に配置先エリアが決定されるため、問題の原因を解明することが難しい。
【０００８】
本発明は、配置先領域間のルールに違反する依存関係を検出できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明の違反依存検出装置は、
ソースコードに含まれる１つ以上のプログラム要素である１つ以上の依存元要素と、１つ以上の依存元要素が配置される１つ以上の記憶領域である１つ以上の依存元配置領域と、１つ以上のプログラム要素であり１つ以上の依存元要素に依存する１つ以上の依存先要素と、１つ以上の依存先要素が配置される１つ以上の記憶領域である１つ以上の依存先配置領域と、が互いに対応付けられた依存領域組リスト、及び、１つ以上の記憶領域である１つ以上の依存元違反領域と、１つ以上の記憶領域である１つ以上の依存先違反領域と、が互いに対応付けられた違反領域組リストに基づいて、依存元違反領域に配置される依存元要素と依存先違反領域に配置される依存先要素との組を１つ以上示す違反要素組リストを生成する違反解析部を備える。
【発明の効果】
【００１０】
本発明によれば、違反要素組リストを生成することができる。違反要素組リストは、配置先領域間のルールに違反する依存関係を有する要素組のリストに相当する。そのため、配置先領域間のルールに違反する依存関係を検出することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１における違反依存検出装置１００の構成図。
【図２】実施の形態１における違反依存検出方法の概要図。
【図３】実施の形態１における違反依存検出方法のフローチャート。
【図４】実施の形態１における配置先領域リスト１２１の具体例を示す図。
【図５】実施の形態１における１チップマイクロコンピュータの記憶領域の具体例を示す図。
【図６】実施の形態１における依存要素組リスト１２２の具体例を示す図。
【図７】実施の形態１における依存領域組リスト１２３の具体例を示す図。
【図８】実施の形態１における関係解析処理（Ｓ１２０）のフローチャート。
【図９】実施の形態１における違反領域組リスト１２４の具体例を示す図。
【図１０】実施の形態１における違反要素組リスト１２５の具体例を示す図。
【図１１】実施の形態１における違反解析処理（Ｓ１４０）のフローチャート。
【図１２】実施の形態２における違反依存検出装置１００の構成図。
【図１３】実施の形態２における違反依存検出方法の概要図。
【図１４】実施の形態２における違反依存検出方法のフローチャート。
【図１５】実施の形態２における配置先アドレスリスト１２６の具体例を示す図。
【図１６】実施の形態２における記憶領域リスト１２７の具体例を示す図。
【図１７】実施の形態２における領域解析処理（Ｓ２２０）のフローチャート。
【図１８】実施の形態３における違反依存検出装置１００の構成図。
【図１９】実施の形態３における違反依存検出方法の概要図。
【図２０】実施の形態３における違反依存検出方法のフローチャート。
【図２１】実施の形態４における違反依存検出装置１００の構成図。
【図２２】実施の形態４における違反依存検出方法の概要図。
【図２３】実施の形態４における違反依存検出方法のフローチャート。
【図２４】実施の形態５における違反依存検出装置１００の構成図。
【図２５】実施の形態５における違反依存検出方法の概要図。
【図２６】実施の形態５における違反依存検出方法のフローチャート。
【図２７】実施の形態６における違反依存検出装置１００の構成図。
【図２８】実施の形態６における違反依存検出方法の概要図。
【図２９】実施の形態６における違反依存検出方法のフローチャート。
【図３０】実施の形態６における装飾処理（Ｓ６６０）のフローチャート。
【図３１】実施の形態における違反依存検出装置１００のハードウェア構成図。
【発明を実施するための形態】
【００１２】
実施の形態および図面において、同じ要素および対応する要素には同じ符号を付している。同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
【００１３】
実施の形態１．
配置先領域ルールに違反する依存関係を検出するための形態について、図１から図１１に基づいて説明する。
【００１４】
＊＊＊構成の説明＊＊＊
図１に基づいて、違反依存検出装置１００の構成を説明する。
違反依存検出装置１００は、プロセッサ１０１とメモリ１０２とストレージ１０３と通信装置１０４と入出力インタフェース１０５といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【００１５】
プロセッサ１０１は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、他のハードウェアを制御する。例えば、プロセッサ１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、またはＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
メモリ１０２は揮発性の記憶装置である。メモリ１０２は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ１０２はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。具体的には、ＲＡＭは、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）またはＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）である。メモリ１０２に記憶されたデータは必要に応じてストレージ１０３に保存される。
ストレージ１０３は不揮発性の記憶装置である。ストレージ１０３は補助記憶装置ともいう。例えば、ストレージ１０３は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、またはフラッシュメモリである。ストレージ１０３は可搬記憶媒体であってもよい。ストレージ１０３に記憶されたデータは必要に応じてメモリ１０２にロードされる。
通信装置１０４はレシーバ及びトランスミッタである。例えば、通信装置１０４は通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入出力インタフェース１０５は入力装置および出力装置が接続されるポートである。例えば、入出力インタフェース１０５はＵＳＢ端子であり、入力装置はキーボードおよびマウスであり、出力装置はディスプレイである。ＵＳＢはＵｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓの略称である。
【００１６】
違反依存検出装置１００は、関係解析部１１１と違反解析部１１２といった要素を備える。これらの要素はソフトウェアで実現される。
【００１７】
ストレージ１０３には、関係解析部１１１と違反解析部１１２としてコンピュータを機能させるための違反依存検出プログラムが記憶されている。違反依存検出プログラムは、メモリ１０２にロードされて、プロセッサ１０１によって実行される。
さらに、ストレージ１０３にはＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が記憶されている。ＯＳの少なくとも一部は、メモリ１０２にロードされて、プロセッサ１０１によって実行される。
つまり、プロセッサ１０１は、ＯＳを実行しながら、違反依存検出プログラムを実行する。
違反依存検出プログラムを実行して得られるデータは、メモリ１０２、ストレージ１０３、プロセッサ１０１内のレジスタ、または、プロセッサ１０１内のキャッシュメモリといった記憶装置に記憶される。
【００１８】
ストレージ１０３は記憶部１２０として機能する。但し、他の記憶装置が、ストレージ１０３の代わりに、又は、ストレージ１０３と共に、記憶部１２０として機能してもよい。
【００１９】
違反依存検出装置１００は、プロセッサ１０１を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ１０１の役割を分担する。
【００２０】
違反依存検出プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータ読み取り可能に記録（格納）することができる。
【００２１】
＊＊＊動作の説明＊＊＊
違反依存検出装置１００の動作は違反依存検出方法に相当する。また、違反依存検出方法の手順は違反依存検出プログラムの手順に相当する。
【００２２】
図２に基づいて、違反依存検出方法の概要を説明する。
まず、関係解析部１１１は、配置先領域リスト１２１と依存要素組リスト１２２とに基づいて、依存領域組リスト１２３を生成する。
【００２３】
配置先領域リスト１２１は、１つ以上のプログラム要素と、１つ以上の配置先領域と、が互いに対応付けられたリストである。
プログラム要素は、プログラムにおいて使用される要素であり、ソースコードに含まれる。例えば、プログラム要素は、関数または変数などである。
配置先領域は、プログラム要素が配置される記憶領域である。
【００２４】
依存要素組リスト１２２は、１つ以上の依存元要素と、１つ以上の依存先要素と、が互いに対応付けられたリストである。
依存元要素は、依存先要素の依存元となるプログラム要素である。
依存先要素は、依存元要素に依存するプログラム要素である。
つまり、依存元要素と依存先要素との間には依存関係がある。依存先要素は依存元要素によって使用される。例えば、依存関係は、関数の呼び出しまたは変数の参照などである。依存関係が変数の参照である場合、依存元要素は変数を参照する関数であり、依存先要素は参照される変数である。
【００２５】
依存領域組リスト１２３は、１つ以上の依存元要素と、１つ以上の依存元配置領域と、１つ以上の依存先要素と、１つ以上の依存先配置領域と、が互いに対応付けられたリストである。
依存元配置領域は、依存元要素が配置される記憶領域である。
依存先配置領域は、依存先要素が配置される記憶領域である。
【００２６】
そして、違反解析部１１２は、依存領域組リスト１２３と違反領域組リスト１２４とに基づいて、違反要素組リスト１２５を生成する。
【００２７】
違反領域組リスト１２４は、１つ以上の依存元違反領域と、１つ以上の依存先違反領域と、が互いに対応付けられたリストである。
依存元違反領域は、依存先違反領域と対を成す記憶領域である。
依存先違反領域は、依存元違反領域と対を成す記憶領域である。
【００２８】
違反要素組リスト１２５は、依存元違反領域に配置される依存元要素と依存先違反領域に配置される依存先要素との組を１つ以上示すリストである。
【００２９】
図３に基づいて、違反依存検出方法の詳細を説明する。
ステップＳ１１０において、利用者は、通信装置１０４または入出力インタフェース１０５を介して、配置先領域リスト１２１と依存要素組リスト１２２とを違反依存検出装置１００に入力する。
関係解析部１１１は、配置先領域リスト１２１と依存要素組リスト１２２とを受け付ける。そして、関係解析部１１１は、配置先領域リスト１２１と依存要素組リスト１２２とを記憶部１２０に記憶する。
【００３０】
図４に基づいて、配置先領域リスト１２１の具体例を説明する。
配置先領域リスト１２１には、４つのプログラム要素と４つの配置先領域とが互いに対応付けられている。
ｕｐｄａｔｅ（）、ｆｕｎｃ１（）、ｆｕｎｃ２（）およびｆｕｎｃ３（）は、それぞれ関数である。
例えば、ｕｐｄａｔｅ（）は領域Ａに対応付けられている。これは、ｕｐｄａｔｅ（）がコンパイラによって領域Ａに配置されることを意味する。また、ｆｕｎｃ３（）は領域Ｂに対応付けられている。これは、ｆｕｎｃ３（）がコンパイラによって領域Ｂに配置されることを意味する。
【００３１】
図５に基づいて、１チップマイクロコンピュータの記憶領域の具体例を説明する。
１チップマイクロコンピュータは、フラッシュメモリとＲＡＭとを有している。
フラッシュメモリは、領域Ａと領域Ｂとを有している。ＲＡＭは、領域Ｃを有している。
領域Ａはアドレス００００Ｈからアドレス０１００Ｈまでの記憶領域である。領域Ｂはアドレス０２００Ｈからアドレス０３００Ｈまでの記憶領域である。領域Ｃはアドレス１０００Ｈからアドレス１１００Ｈまでの記憶領域である。
領域Ａには、アップデート実施プログラムが配置される。領域Ｂには、アップデート対象プログラムが配置される。領域Ｃには、コピーされたアップデート実施プログラムが配置される。
アップデート実施プログラムは、アップデート対象プログラムをアップデートするためのプログラムである。アップデート対象プログラムは、アップデートされるプログラムである。
【００３２】
図６に基づいて、依存要素組リスト１２２の具体例を説明する。
依存要素組リスト１２２には、３つの依存元要素と３つの依存先要素とが互いに対応付けられている。つまり、依存要素組リスト１２２には、３つの依存要素組が登録されている。
依存要素組は、依存元要素と依存先要素との組である。
例えば、２つ目の依存要素組は、ｕｐｄａｔｅ（）とｆｕｎｃ３（）との組である。この組は、ｕｐｄａｔｅ（）からｆｕｎｃ３（）への依存関係の存在を示している。
【００３３】
図３に戻り、ステップＳ１２０を説明する。
ステップＳ１２０において、関係解析部１１１は、配置先領域リスト１２１と依存要素組リスト１２２とに基づいて、依存領域組リスト１２３を生成する。
そして、関係解析部１１１は、依存領域組リスト１２３を記憶部１２０に記憶する。
【００３４】
図７に基づいて、図４の配置先領域リスト１２１と図６の依存要素組リスト１２２とに基づいて生成される依存領域組リスト１２３を説明する。
依存領域組リスト１２３には、３つの依存元要素と３つの依存元配置領域と３つの依存先要素と３つの依存先配置領域とが互いに対応付けられている。つまり、依存領域組リスト１２３には、３つの依存領域組が登録されている。
依存領域組は、依存元要素と依存元配置領域と依存先要素と依存先配置領域との組である。
例えば、２つ目の依存領域組は、ｕｐｄａｔｅ（）と領域Ａとｆｕｎｃ３（）と領域Ｂとの組である。この組は、領域Ａに配置されるｕｐｄａｔｅ（）から領域Ｂに配置されるｆｕｎｃ３（）への依存関係の存在を示している。
【００３５】
図８に基づいて、関係解析処理（Ｓ１２０）の詳細を説明する。
ステップＳ１２１において、関係解析部１１１は、依存要素組リスト１２２から、未選択の依存要素組を１つ選択する。
例えば、関係解析部１１１は、図６の依存要素組リスト１２２から、２つ目の依存要素組を選択する。２つ目の依存要素組は、ｕｐｄａｔｅ（）関数とｆｕｎｃ３（）関数との組である。
【００３６】
ステップＳ１２２およびステップＳ１２３は、ステップＳ１２１で選択された依存要素組に対して実行される。
【００３７】
ステップＳ１２２において、関係解析部１１１は、依存元要素に対応付けられた配置先領域の名称を配置先領域リスト１２１から抽出する。抽出される名称を依存元配置領域名という。
例えば、依存元要素名が「ｕｐｄａｔｅ（）」である場合、関係解析部１１１は、図４の配置先領域リスト１２１から「領域Ａ」を抽出する。「領域Ａ」が依存元配置領域名である。
【００３８】
さらに、関係解析部１１１は、依存先要素に対応付けられた配置先領域の名称を配置先領域リスト１２１から抽出する。抽出される名称を依存先配置領域名という。
例えば、依存先要素名が「ｆｕｎｃ３（）」である場合、関係解析部１１１は、図４の配置先領域リスト１２１から「領域Ｂ」を抽出する。「領域Ｂ」が依存先配置領域名である。
【００３９】
ステップＳ１２３において、関係解析部１１１は、依存元要素名と依存元配置領域名と依存先要素名と依存先配置領域名との組を依存領域組リスト１２３に登録する。
例えば、依存元要素名が「ｕｐｄａｔｅ（）」であり、依存元配置領域名が「領域Ａ」であり、依存先要素名が「ｆｕｎｃ３（）」であり、依存先配置領域名が「領域Ｂ」であると仮定する。この場合、関係解析部１１１は、図７において２つ目の依存領域組を依存領域組リスト１２３に登録する。
【００４０】
ステップＳ１２４において、関係解析部１１１は、未選択の依存要素組が有るか判定する。ステップＳ１２４において、未選択の依存要素組を未選択組という。
未選択組が有る場合、処理はステップＳ１２１に進む。
未選択組が無い場合、処理はステップＳ１２５に進む。
【００４１】
ステップＳ１２５において、関係解析部１１１は、依存領域組リスト１２３を記憶部１２０に記憶する。
【００４２】
図３に戻り、ステップＳ１３０を説明する。
ステップＳ１３０において、利用者は、通信装置１０４または入出力インタフェース１０５を介して、違反領域組リスト１２４を違反依存検出装置１００に入力する。
違反解析部１１２は、違反領域組リスト１２４を受け付ける。そして、違反解析部１１２は、違反領域組リスト１２４を記憶部１２０に記憶する。
【００４３】
図９に基づいて、違反領域組リスト１２４の具体例を説明する。
違反領域組リスト１２４には、１つの依存元違反領域と１つの依存先違反領域とが互いに対応付けられている。つまり、違反領域組リスト１２４には、１つの違反領域組が登録されている。
違反領域組は、依存元違反領域と依存先違反領域との組である。
具体的には、違反領域組リスト１２４には、領域Ａと領域Ｂとの組が登録されている。この組は、領域Ａに配置される依存元要素から領域Ｂに配置される依存先要素への依存関係がルール違反であることを意味する。
【００４４】
図３に戻り、ステップＳ１４０を説明する。
ステップＳ１４０において、違反解析部１１２は、依存領域組リスト１２３と違反領域組リスト１２４とに基づいて、違反要素組リスト１２５を生成する。
そして、違反解析部１１２は、違反要素組リスト１２５を記憶部１２０に記憶する。また、違反解析部１１２は、通信装置１０４と入出力インタフェース１０５とを介して、違反要素組リスト１２５を出力する。
【００４５】
図１０に基づいて、図７の依存領域組リスト１２３と図９の違反領域組リスト１２４とに基づいて生成される違反要素組リスト１２５を説明する。
違反要素組リスト１２５には、１つの依存元要素と１つの依存元配置領域と１つの依存先要素と１つの依存先配置領域とが互いに対応付けられている。つまり、違反要素組リスト１２５には、１つの違反要素組が登録されている。
違反要素組は、依存元要素と依存元配置領域と依存先要素と依存先配置領域との組である。
【００４６】
図１１に基づいて、違反解析処理（Ｓ１４０）の詳細を説明する。
ステップＳ１４１において、違反解析部１１２は、依存領域組リスト１２３から、未選択の依存領域組を１つ選択する。
例えば、違反解析部１１２は、図７の依存領域組リスト１２３から、２つ目の依存領域組を選択する。２つ目の依存領域組は、ｕｐｄａｔｅ（）と領域Ａとｆｕｎｃ３（）と領域Ｂとの組である。
【００４７】
ステップＳ１４２およびステップＳ１４３は、ステップＳ１４１で選択された依存領域組に対して実行される。
【００４８】
ステップＳ１４２において、違反解析部１１２は、依存領域組と一致する違反領域組が違反領域組リスト１２４に登録されているか判定する。
具体的には、違反解析部１１２は、依存領域組から依存元配置領域名と依存先配置領域名とを抽出する。そして、違反解析部１１２は、依存元配置領域名と同じ依存元違反領域名と依存先配置領域名と同じ依存先違反領域名との組が違反領域組リスト１２４に登録されているか判定する。
例えば、依存領域組における依存元配置領域が領域Ａであり、依存領域組における依存先配置領域が領域Ｂであると仮定する。この場合、違反解析部１１２は、依存元違反領域が領域Ａであり、且つ、依存先違反領域が領域Ｂである違反領域組が違反領域組リスト１２４に登録されているか判定する。図９の違反領域組リスト１２４には、該当する違反領域組が登録されている。したがって、違反解析部１１２は、依存領域組と一致する違反領域組が違反領域組リスト１２４に登録されていると判定する。
依存領域組と一致する違反領域組が違反領域組リスト１２４に登録されている場合、処理はステップＳ１４３に進む。
依存領域組と一致する違反領域組が違反領域組リスト１２４に登録されていない場合、処理はステップＳ１４４に進む。
【００４９】
ステップＳ１４３において、違反解析部１１２は、依存領域組と一致する違反領域組を違反要素組リスト１２５に登録する。
例えば、依存領域組がｕｐｄａｔｅ（）と領域Ａとｆｕｎｃ３（）と領域Ｂとの組であると仮定する。この場合、違反解析部１１２は、図１０に示すように、依存領域組と一致する違反領域組を違反要素組リスト１２５に登録する。
【００５０】
ステップＳ１４４において、違反解析部１１２は、未選択の依存領域組が有るか判定する。ステップＳ１４４において、未選択の依存領域組を未選択組という。
未選択組が有る場合、処理はステップＳ１４１に進む。
未選択組が無い場合、処理はステップＳ１４５に進む。
【００５１】
ステップＳ１４５において、違反解析部１１２は、違反要素組リスト１２５を記憶部１２０に記憶する。
また、違反解析部１１２は、違反要素組リスト１２５を出力する。例えば、違反解析部１１２は、通信装置１０４を介して、違反要素組リスト１２５を他のコンピュータに送信する。または、違反解析部１１２は、入出力インタフェース１０５を介して、違反要素組リスト１２５をディスプレイに表示する。
【００５２】
＊＊＊実施の形態１の補足＊＊＊
配置先領域リスト１２１は、ソースコードとコンパイラの要素配置ルールとを元に生成される。配置先領域リスト１２１は、人によって手動で生成されてもよいし、ツールまたはスクリプトなどによって自動で生成されてもよい。
依存要素組リスト１２２は、ソースコードを元に生成される。依存要素組リスト１２２は、人によって手動で生成されてもよいし、ツールまたはスクリプトなどによって自動で生成されてもよい。
違反領域組リスト１２４は、ソースコードを元に生成される。違反領域組リスト１２４は、人によって手動で生成されてもよいし、ツールまたはスクリプトなどによって自動で生成されてもよい。
【００５３】
＊＊＊実施の形態１の効果＊＊＊
違反依存検出装置１００は違反要素組リスト１２５を生成することができる。そのため、ソースコードにおいて違反要素組が使用されている箇所を、配置先領域に関する依存関係についての違反箇所として検出することが可能となる。
例えば、図５において、フラッシュメモリの領域Ａに書き込まれたアップデート実施プログラムがＲＡＭの領域Ｃに展開される。そして、フラッシュメモリの領域Ｂに書き込まれたアップデート対象プログラムに対して消去または書き込みが実施される。この際に、アップデート実施プログラムに含まれるｕｐｄａｔｅ（）がアップデート対象プログラムに含まれるｆｕｎｃ３（）を呼び出してしまうと実行時異常が発生する。ただし、この異常はアップデート実施プログラムが動作して初めて気付くものであり、アップデート実施プログラムのソースコードをコーディング中に違反箇所を発見することは難しい。一方、実施の形態１により、アップデータ実施プログラムが動作する前に、ソースコード内の違反箇所を検出することが可能である。
また、ルール違反の依存関係が早期に発見されることにより、プログラムの実行時異常の防止とＦ／Ｗの開発工数の削減とを図ることができる。
【００５４】
＊＊＊他の構成＊＊＊
違反要素組は、依存元配置領域と依存先配置領域とを含まなくてもよい。つまり、違反要素組は、依存元要素と依存先要素との組であってもよい。
【００５５】
実施の形態２．
配置先領域リスト１２１を生成する形態について、主に実施の形態１と異なる点を図１２から図１７に基づいて説明する。
【００５６】
＊＊＊構成の説明＊＊＊
図１２に基づいて、違反依存検出装置１００の構成を説明する。
違反依存検出装置１００は、さらに、領域解析部１１３という要素を備える。領域解析部１１３はソフトウェアによって実現される。
違反依存検出プログラムは、さらに、領域解析部１１３としてコンピュータを機能させる。
【００５７】
＊＊＊動作の説明＊＊＊
図１３に基づいて、違反依存検出方法の概要を説明する。
領域解析部１１３は、配置先アドレスリスト１２６と記憶領域リスト１２７とに基づいて、配置先領域リスト１２１を生成する。
【００５８】
配置先アドレスリスト１２６は、１つ以上のプログラム要素と１つ以上の配置先アドレスとが互いに対応付けられたリストである。
配置先アドレスは、プログラム要素が配置される記憶領域の位置を示す。具体的には、配置先アドレスは、プログラム要素が配置される記憶領域の先頭アドレスである。
【００５９】
記憶領域リスト１２７は、１つ以上の記憶領域と１つ以上のアドレス区間とが互いに対応付けられたリストである。
アドレス区間は、記憶領域の範囲を示す。具体的には、アドレス区間は、記憶領域の先頭アドレスと記憶領域の終了アドレスとで表される。
【００６０】
関係解析部１１１と違反解析部１１２とについては、実施の形態１で説明した通りである（図２参照）。
【００６１】
図１４に基づいて、違反依存検出方法の詳細を説明する。
ステップＳ２１０において、利用者は、通信装置１０４または入出力インタフェース１０５を介して、配置先アドレスリスト１２６と記憶領域リスト１２７とを違反依存検出装置１００に入力する。
領域解析部１１３は、配置先アドレスリスト１２６と記憶領域リスト１２７とを受け付ける。そして、領域解析部１１３は、配置先アドレスリスト１２６と記憶領域リスト１２７とを記憶部１２０に記憶する。
【００６２】
図１５に基づいて、図４の配置先領域リスト１２１を生成するための配置先アドレスリスト１２６を説明する。
配置先アドレスリスト１２６には、４つのプログラム要素と４つの配置先アドレスとが互いに対応付けられている。
例えば、ｕｐｄａｔｅ（）は「００１０Ｈ」に対応付けられている。これは、ｕｐｄａｔｅ（）が配置される記憶領域の先頭アドレスが「００１０Ｈ」であることを意味する。
【００６３】
図１６に基づいて、図４の配置先領域リスト１２１を生成するための記憶領域リスト１２７を説明する。
記憶領域リスト１２７には、４つの記憶領域と４つのアドレス区間とが互いに対応付けられている。
例えば、領域Ａは「００００Ｈ〜００ＦＦＨ」に対応付けられている。これは、領域Ａの先頭アドレスが「００００Ｈ」であり、領域Ａの終了アドレスが「００ＦＦＨ」であることを意味する。
【００６４】
図１４に戻り、ステップＳ２２０を説明する。
ステップＳ２２０において、領域解析部１１３は、配置先アドレスリスト１２６と記憶領域リスト１２７とに基づいて、配置先領域リスト１２１を生成する。
そして、領域解析部１１３は、配置先領域リスト１２１を記憶部１２０に記憶する。
【００６５】
図１７に基づいて、領域解析処理（Ｓ２２０）の詳細を説明する。
ステップＳ２２１において、領域解析部１１３は、配置先アドレスリスト１２６から、未選択のプログラム要素を１つ選択する。
例えば、領域解析部１１３は、図１５の配置先アドレスリスト１２６から、ｕｐｄａｔｅ（）を選択する。
【００６６】
ステップＳ２２２からステップＳ２２４は、ステップＳ２２１で選択されたプログラム要素に対して実行される。
【００６７】
ステップＳ２２２において、領域解析部１１３は、プログラム要素に対応付けられた配置先アドレスを配置先アドレスリスト１２６から抽出する。
例えば、プログラム要素がｕｐｄａｔｅ（）である場合、領域解析部１１３は、図１５の配置先アドレスリスト１２６から「００１０Ｈ」を抽出する。
【００６８】
ステップＳ２２３において、領域解析部１１３は、抽出した配置先アドレスが含まれるアドレス区間を記憶領域リスト１２７から選択する。
例えば、抽出した配置先アドレスが「００１０Ｈ」である場合、領域解析部１１３は、図１６の記憶領域リスト１２７から「００００Ｈ〜００ＦＦＨ」を選択する。
【００６９】
そして、領域解析部１１３は、選択したアドレス区間に対応付けられた記憶領域の名称を記憶領域リスト１２７から抽出する。抽出される名称を配置先領域名という。
例えば、選択したアドレス区間が「００００Ｈ〜００ＦＦＨ」である場合、領域解析部１１３は、図１６の記憶領域リスト１２７から「領域Ａ」を抽出する。
【００７０】
ステップＳ２２４において、領域解析部１１３は、プログラム要素名と配置先領域名との組を配置先領域リスト１２１に登録する。
例えば、プログラム要素名が「ｕｐｄａｔｅ（）」であり、配置先領域名が「領域Ａ」である場合、領域解析部１１３は、図４において１つ目の配置先領域情報を配置先領域リスト１２１に登録する。
【００７１】
ステップＳ２２５において、領域解析部１１３は、未選択のプログラム要素が有るか判定する。ステップＳ２２５において、未選択のプログラム要素を未選択要素という。
未選択要素が有る場合、処理はステップＳ２２１に進む。
未選択要素が無い場合、処理はステップＳ２２６に進む。
【００７２】
ステップＳ２２６において、領域解析部１１３は、配置先領域リスト１２１を記憶部１２０に記憶する。
【００７３】
図１４に戻り、ステップＳ２３０からステップＳ２６０を説明する。
ステップＳ２３０において、利用者は、通信装置１０４または入出力インタフェース１０５を介して、依存要素組リスト１２２を違反依存検出装置１００に入力する。
関係解析部１１１は、依存要素組リスト１２２を受け付ける。そして、関係解析部１１１は、依存要素組リスト１２２を記憶部１２０に記憶する。
【００７４】
ステップＳ２４０からステップＳ２６０は、実施の形態１におけるステップＳ１２０からステップＳ１４０と同じである（図３参照）。
【００７５】
＊＊＊実施の形態２の効果＊＊＊
違反依存検出装置１００は、配置先アドレスリスト１２６と記憶領域リスト１２７とに基づいて配置先領域リスト１２１を自動的に生成する。これにより、利用者の負担を減らすことが可能となる。
【００７６】
＊＊＊他の構成＊＊＊
配置先アドレスリスト１２６が、配置先アドレスを示す情報として配置先区間を示してもよい。配置先区間は、プログラム要素が配置される記憶領域のアドレス区間である。具体的には、配置先区間は、先頭アドレスと終了アドレスとで表される。つまり、配置先アドレスリスト１２６が、配置先アドレスとして、先頭アドレスと終了アドレスとを示してもよい。
プログラム要素のアドレス区間が、記憶領域リスト１２７に登録されている複数の記憶領域に跨る場合、１つまたは複数の記憶領域がプログラム要素の配置先領域として配置先領域リスト１２１に登録される。
プログラム要素の複数の配置先領域が配置先領域リスト１２１に登録された場合、プログラム要素の配置先領域毎に、プログラム要素が含まれる依存領域組が依存領域組リスト１２３に登録される。つまり、プログラム要素が含まれる複数の依存領域組が依存領域組リスト１２３に登録される。
プログラム要素が含まれる複数の依存領域組の少なくともいずれかが違反領域組と一致する場合、プログラム要素が含まれる違反要素組が違反要素組リスト１２５に登録される。
【００７７】
実施の形態３．
配置先アドレスリスト１２６を生成する形態について、主に実施の形態２と異なる点を図１８から図２０に基づいて説明する。
【００７８】
＊＊＊構成の説明＊＊＊
図１８に基づいて、違反依存検出装置１００の構成を説明する。
違反依存検出装置１００は、さらに、アドレス解析部１１４という要素を備える。アドレス解析部１１４はソフトウェアによって実現される。
違反依存検出プログラムは、さらに、アドレス解析部１１４としてコンピュータを機能させる。
【００７９】
＊＊＊動作の説明＊＊＊
図１９に基づいて、違反依存検出方法の概要を説明する。
アドレス解析部１１４は、ソースコード１２８を解析し、解析結果に基づいて配置先アドレスリスト１２６を生成する。
【００８０】
ソースコード１２８は、Ｆ／Ｗ、すなわち、コンピュータプログラムの元となる文字の羅列である。つまり、ソースコード１２８は、コンピュータに対する一連の指示が記述されたものである。
【００８１】
関係解析部１１１と違反解析部１１２と領域解析部１１３とについては、実施の形態２で説明した通りである（図１３参照）。
【００８２】
図２０に基づいて、違反依存検出方法の詳細を説明する。
ステップＳ３１０において、利用者は、通信装置１０４または入出力インタフェース１０５を介して、ソースコード１２８を違反依存検出装置１００に入力する。
アドレス解析部１１４は、ソースコード１２８を受け付ける。そして、アドレス解析部１１４は、ソースコード１２８を記憶部１２０に記憶する。
【００８３】
ステップＳ３２０において、アドレス解析部１１４は、ソースコード１２８に基づいて、配置先アドレスリスト１２６を生成する。
そして、アドレス解析部１１４は、配置先アドレスリスト１２６を記憶部１２０に記憶する。
【００８４】
具体的には、アドレス解析部１１４は、配置先アドレスリスト１２６を以下のように生成する。
アドレス解析部１１４は、使用されるリンカに対応するソースコード記述方式に従って、ソースコード１２８を解析する。アドレス解析部１１４は、解析結果に基づいて、各プログラム要素の配置先アドレスを求める。そして、アドレス解析部１１４は、各プログラム要素の配置先アドレスをリスト化することによって、配置先アドレスリスト１２６を生成する。
ＡＲＭリンカが使用される場合、ソースコード１２８のファイル群はＣファイルとスキャッタファイルとを含む。この場合、アドレス解析部１１４は、Ｃファイルを解析することによって、各プログラム要素の配置先セクションを求める。また、アドレス解析部１１４は、スキャッタファイル（の実行領域記述など）を解析することによって、各セクションの配置先アドレスを求める。そして、アドレス解析部１１４は、各プログラム要素の配置先セクションと各セクションの配置先アドレスとを互いに対応付けることによって、配置先アドレスリスト１２６を生成する。
プログラム要素の配置先セクションおよびプログラム要素の配置先アドレスが明示的にソースコード１２８に記述されていない場合、アドレス解析部１１４は、使用されるリンカの仕様に基づいて、プログラム要素の配置先アドレスを求める。例えば、依存先要素の配置先は依存元要素の配置先に従う、という仕様のリンクが使用される場合、アドレス解析部１１４は、ソースコード１２８を解析することによって依存元要素の配置先アドレスを求め、依存元要素の配置先アドレスに基づいて依存先要素の配置先アドレスを求める。
【００８５】
ステップＳ３３０において、利用者は、通信装置１０４または入出力インタフェース１０５を介して、記憶領域リスト１２７を違反依存検出装置１００に入力する。
領域解析部１１３は、記憶領域リスト１２７を受け付ける。そして、領域解析部１１３は、記憶領域リスト１２７を記憶部１２０に記憶する。
【００８６】
ステップＳ３４０からステップＳ３８０は、実施の形態２におけるステップＳ２２０からステップＳ２６０と同じである（図１４参照）。
【００８７】
＊＊＊実施の形態３の効果＊＊＊
違反依存検出装置１００は、ソースコード１２８を解析することによって、配置先アドレスリスト１２６を自動的に生成する。これにより、利用者の負担を減らすことが可能となる。
【００８８】
＊＊＊他の構成＊＊＊
アドレス解析部１１４は、ソースコード１２８の解析結果に基づいて、記憶領域リスト１２７を生成してもよい。この場合、アドレス解析部１１４は、ソースコード１２８を解析することによって、各セクションのアドレス空間を求める。そして、アドレス解析部１１４は、各セクションのアドレス空間をリスト化することによって、記憶領域リスト１２７を生成する。
【００８９】
実施の形態４．
配置先領域リスト１２１を生成する形態について、主に実施の形態１と異なる点を図２１から図２３に基づいて説明する。
【００９０】
＊＊＊構成の説明＊＊＊
図２１に基づいて、違反依存検出装置１００の構成を説明する。
違反依存検出装置１００は、さらに、領域解析部１１５という要素を備える。領域解析部１１５はソフトウェアによって実現される。
違反依存検出プログラムは、さらに、領域解析部１１５としてコンピュータを機能させる。
【００９１】
＊＊＊動作の説明＊＊＊
図２２に基づいて、違反依存検出方法の概要を説明する。
領域解析部１１５は、ソースコード１２８を解析し、解析結果に基づいて配置先領域リスト１２１を生成する。
【００９２】
ソースコード１２８は、Ｆ／Ｗ、すなわち、コンピュータプログラムの元となる文字の羅列である。つまり、ソースコード１２８は、コンピュータに対する一連の指示が記述されたものである。
【００９３】
関係解析部１１１と違反解析部１１２とについては、実施の形態１で説明した通りである（図２参照）。
【００９４】
図２３に基づいて、違反依存検出方法の詳細を説明する。
ステップＳ４１０において、利用者は、通信装置１０４または入出力インタフェース１０５を介して、ソースコード１２８を違反依存検出装置１００に入力する。
領域解析部１１５は、ソースコード１２８を受け付ける。そして、領域解析部１１５は、ソースコード１２８を記憶部１２０に記憶する。
【００９５】
ステップＳ４２０において、領域解析部１１５は、ソースコード１２８に基づいて、配置先領域リスト１２１を生成する。
そして、領域解析部１１５は、配置先領域リスト１２１を記憶部１２０に記憶する。
【００９６】
具体的には、領域解析部１１５は、配置先領域リスト１２１を以下のように生成する。
領域解析部１１５は、使用されるリンカに対応するソースコード記述方式に従って、ソースコード１２８を空き席する。領域解析部１１５は、解析結果に基づいて、各プログラム要素の配置先領域を求める。そして、領域解析部１１５は、各プログラム要素の配置先領域を配置先領域リスト１２１に登録する。
ＡＲＭリンカが使用される場合、ソースコード１２８のファイル群はＣファイルとスキャッタファイルとを含む。この場合、領域解析部１１５は、Ｃファイルとスキャッタファイルとを解析することによって、各プログラム要素の配置先セクションを求める。配置先セクションは配置先領域に相当する。
プログラム要素の配置先セクションが明示的にソースコード１２８に記述されていない場合、違反要素組リスト１２５は、使用されるリンカの仕様に基づいて、プログラム要素の配置先セクションを求める。例えば、依存先要素の配置先は依存元要素の配置先に従う、という仕様のリンカが使用される場合、領域解析部１１５は、ソースコード１２８を解析することによって依存元要素の配置先セクションを求め、依存元要素の配置先セクションに基づいて依存先要素の配置先セクションを求める。
【００９７】
ステップＳ４３０において、利用者は、通信装置１０４または入出力インタフェース１０５を介して、依存要素組リスト１２２を違反依存検出装置１００に入力する。
関係解析部１１１は、依存要素組リスト１２２を受け付ける。そして、関係解析部１１１は、依存要素組リスト１２２を記憶部１２０に記憶する。
【００９８】
ステップＳ４４０からステップＳ４６０は、実施の形態１におけるステップＳ１２０からステップＳ１４０と同じである（図３参照）。
【００９９】
＊＊＊実施の形態４の効果＊＊＊
違反依存検出装置１００は、ソースコード１２８を解析することによって、配置先領域リスト１２１を自動的に生成する。これにより、利用者の負担を減らすことが可能となる。
【０１００】
実施の形態５．
依存要素組リスト１２２を生成する形態について、主に実施の形態１と異なる点を図２４から図２６に基づいて説明する。
【０１０１】
＊＊＊構成の説明＊＊＊
図２４に基づいて、違反依存検出装置１００の構成を説明する。
違反依存検出装置１００は、さらに、関係抽出部１１６という要素を備える。関係抽出部１１６はソフトウェアによって実現される。
違反依存検出プログラムは、さらに、関係抽出部１１６としてコンピュータを機能させる。
【０１０２】
＊＊＊動作の説明＊＊＊
図２５に基づいて、違反依存検出方法の概要を説明する。
関係抽出部１１６は、ソースコード１２８から１つ以上の依存元要素と１つ以上の依存先要素とを抽出し、依存要素組リスト１２２を生成する。
【０１０３】
ソースコード１２８は、Ｆ／Ｗ、すなわち、コンピュータプログラムの元となる文字の羅列である。つまり、ソースコード１２８は、コンピュータに対する一連の指示が記述されたものである。
【０１０４】
関係解析部１１１と違反解析部１１２とについては、実施の形態１で説明した通りである（図２参照）。
【０１０５】
図２６に基づいて、違反依存検出方法の詳細を説明する。
ステップＳ５１０において、利用者は、通信装置１０４または入出力インタフェース１０５を介して、ソースコード１２８を違反依存検出装置１００に入力する。
関係抽出部１１６は、ソースコード１２８を受け付ける。そして、関係抽出部１１６は、ソースコード１２８を記憶部１２０に記憶する。
【０１０６】
ステップＳ５２０において、関係抽出部１１６は、ソースコード１２８に基づいて依存要素組リスト１２２を生成する。
そして、関係抽出部１１６は、依存要素組リスト１２２を記憶部１２０に記憶する。
【０１０７】
具体的には、関係抽出部１１６は、依存要素組リスト１２２を以下のように生成する。
関係抽出部１１６は、ソースコード１２８から１つ以上の依存要素組を抽出する。そして、関係抽出部１１６は、抽出した１つ以上の依存要素組をリスト化することによって、依存要素組リスト１２２を生成する。
【０１０８】
ステップＳ５３０において、利用者は、通信装置１０４または入出力インタフェース１０５を介して、配置先領域リスト１２１を違反依存検出装置１００に入力する。
関係解析部１１１は、配置先領域リスト１２１を受け付ける。そして、関係解析部１１１は、配置先領域リスト１２１を記憶部１２０に記憶する。
【０１０９】
ステップＳ５４０からステップＳ５６０は、実施の形態１におけるステップＳ１２０からステップＳ１４０と同じである（図３参照）。
【０１１０】
＊＊＊実施の形態５の効果＊＊＊
違反依存検出装置１００は、ソースコード１２８に基づいて依存要素組リスト１２２を自動的に生成する。これにより、利用者の負担を減らすことが可能となる。
【０１１１】
＊＊＊他の構成＊＊＊
実施の形態５に実施の形態２および実施の形態３を適用してもよい。
つまり、違反依存検出装置１００は、配置先アドレスリスト１２６と記憶領域リスト１２７とに基づいて配置先領域リスト１２１を生成する領域解析部１１３を備えてもよい。さらに、違反依存検出装置１００は、ソースコード１２８に基づいて配置先アドレスリスト１２６を生成するアドレス解析部１１４を備えてもよい。
【０１１２】
実施の形態５に実施の形態４を適用してもよい。
つまり、違反依存検出装置１００は、ソースコード１２８に基づいて配置先領域リスト１２１を生成する領域解析部１１５を備えてもよい。
【０１１３】
実施の形態６．
ソースコード１２８において違反要素組が使用される箇所にしるしを付ける形態について、主に実施の形態１と異なる点を図２７から図３０に基づいて説明する。
【０１１４】
＊＊＊構成の説明＊＊＊
図２７に基づいて、違反依存検出装置１００の構成を説明する。
違反依存検出装置１００は、さらに、装飾部１１７という要素を備える。装飾部１１７はソフトウェアによって実現される。
違反依存検出プログラムは、さらに、装飾部１１７としてコンピュータを機能させる。
【０１１５】
＊＊＊動作の説明＊＊＊
図２８に基づいて、違反依存検出方法の概要を説明する。
装飾部１１７は、違反要素組リスト１２５に基づいてソースコード１２８の中の違反箇所を見つけ、ソースコード１２８の中の違反箇所にしるしを付ける。
違反箇所は、依存元違反要素が依存先違反要素を使用する箇所である。
依存元違反要素は、違反要素組に含まれる依存元要素である。つまり、依存元違反要素は、依存元違反領域に配置される依存元要素である。
依存先違反要素は、違反要素組に含まれる依存先要素である。つまり、依存先違反要素は、依存先違反領域に配置される依存先要素である。
【０１１６】
ソースコード１２８は、Ｆ／Ｗ、すなわち、コンピュータプログラムの元となる文字の羅列である。つまり、ソースコード１２８は、コンピュータに対する一連の指示が記述されたものである。
【０１１７】
ソースコード１２９は、違反箇所にしるしが付けられたソースコード１２８である。
【０１１８】
関係解析部１１１と違反解析部１１２とについては、実施の形態１で説明した通りである（図２参照）。
【０１１９】
図２９に基づいて、違反依存検出方法の詳細を説明する。
ステップＳ６１０からステップＳ６４０は、実施の形態１におけるステップＳ１１０からステップＳ１４０と同じである（図３参照）。
【０１２０】
ステップＳ６５０において、利用者は、通信装置１０４または入出力インタフェース１０５を介して、ソースコード１２８を違反依存検出装置１００に入力する。
装飾部１１７は、ソースコード１２８を受け付ける。そして、装飾部１１７は、ソースコード１２８を記憶部１２０に記憶する。
【０１２１】
ステップＳ６６０において、装飾部１１７は、違反要素組リスト１２５に基づいてソースコード１２８の中の違反箇所を見つけ、ソースコード１２８の中の違反箇所にしるしを付ける。つまり、装飾部１１７は、ソースコード１２８の中の違反箇所に対してマーキングを行う。
そして、装飾部１１７は、ソースコード１２９を記憶部１２０に記憶する。また、装飾部１１７は、通信装置１０４と入出力インタフェース１０５とを介して、ソースコード１２９を出力する。ソースコード１２９は、違反箇所にしるしが付けられたソースコード１２８である。
【０１２２】
図３０に基づいて、装飾処理（Ｓ６６０）の詳細を説明する。
ステップＳ６６１において、装飾部１１７は、違反要素組リスト１２５から、未選択の違反要素組を１つ選択する。
例えば、装飾部１１７は、図１０の違反要素組リスト１２５から、違反要素組を選択する。依存元違反要素はｕｐｄａｔｅ（）であり、依存先違反要素はｆｕｎｃ３（）である。
【０１２３】
ステップＳ６６２およびステップＳ６６３は、ステップＳ６６１で選択された違反要素組に対して実行される。
【０１２４】
ステップＳ６６２において、装飾部１１７は、ソースコード１２８から、違反要素組に対応する違反箇所を見つける。
例えば、依存元違反要素はｕｐｄａｔｅ（）であり、依存先違反要素はｆｕｎｃ３（）であると仮定する。この場合、装飾部１１７は、ｕｐｄａｔｅ（）がｆｕｎｃ３（）を呼び出す箇所をソースコード１２８から見つける。見つかった箇所が違反箇所である。
【０１２５】
ステップＳ６６３において、装飾部１１７は、見つかった違反箇所にしるしを付ける。
例えば、装飾部１１７は、違反箇所に対して色付けを行う。
【０１２６】
ステップＳ６６４において、装飾部１１７は、未選択の違反要素組が有るか判定する。ステップＳ６６４において、未選択の違反要素組を未選択組という。
未選択組が有る場合、処理はステップＳ６６１に進む。
未選択組が無い場合、処理はステップＳ６６５に進む。
【０１２７】
ステップＳ６６５において、装飾部１１７は、ソースコード１２９を記憶部１２０に記憶する。ソースコード１２９は、違反箇所にしるしが付けられたソースコード１２８である。
また、装飾部１１７は、ソースコード１２９を出力する。例えば、装飾部１１７は、通信装置１０４を介して、ソースコード１２９を他のコンピュータに送信する。または、装飾部１１７は、入出力インタフェース１０５を介して、ソースコード１２９をディスプレイに表示する。
【０１２８】
＊＊＊実施の形態６の効果＊＊＊
違反依存検出装置１００は、ソースコード１２８の中の違反箇所に自動的にしるしを付けることができる。これにより、コーディングにおいて早期に違反箇所を検出することが可能となる。
【０１２９】
＊＊＊他の構成＊＊＊
装飾部１１７は、ソースコード１２８から依存元違反要素と依存先違反要素とのそれぞれの定義箇所を見つけ、ソースコード１２８の中のそれぞれの定義箇所にしるしを付けてもよい。
また、装飾部１１７は、依存領域組リスト１２３に基づいて、依存元違反要素の定義箇所に依存元配置領域に対応するしるしを付けると共に、依存先違反要素の定義箇所に依存先配置領域に対応するしるしを付けてもよい。
【０１３０】
装飾部１１７は、違反箇所リストを生成し、違反箇所リストを記憶部１２０に記憶してもよい。さらに、装飾部１１７は、違反箇所リストをソースコード１２９と同じように出力してもよい。違反箇所リストは、１つ以上の違反箇所を示すリストである。
【０１３１】
実施の形態６に実施の形態２および実施の形態３を適用してもよい。
つまり、違反依存検出装置１００は、配置先アドレスリスト１２６と記憶領域リスト１２７とに基づいて配置先領域リスト１２１を生成する領域解析部１１３を備えてもよい。さらに、違反依存検出装置１００は、ソースコード１２８に基づいて配置先アドレスリスト１２６を生成するアドレス解析部１１４を備えてもよい。
【０１３２】
実施の形態６に実施の形態４を適用してもよい。
つまり、違反依存検出装置１００は、ソースコード１２８に基づいて配置先領域リスト１２１を生成する領域解析部１１５を備えてもよい。
【０１３３】
実施の形態６に実施の形態５を適用してもよい。
つまり、違反依存検出装置１００は、ソースコード１２８に基づいて依存要素組リスト１２２を生成する関係抽出部１１６を備えてもよい。
【０１３４】
＊＊＊実施の形態の補足＊＊＊
違反依存検出装置１００は、配置先領域リスト１２１と依存要素組リスト１２２と依存領域組リスト１２３と違反領域組リスト１２４と配置先アドレスリスト１２６と記憶領域リスト１２７とのそれぞれを違反要素組リスト１２５と同じように出力してもよい。さらに、違反依存検出装置１００は、ソースコード１２８をソースコード１２９と同じように出力してもよい。出力タイミングは任意である。各リストおよびソースコード１２８が出力されることにより、利用者が途中経過を確認することが可能となる。
【０１３５】
図３１に基づいて、違反依存検出装置１００のハードウェア構成を説明する。
違反依存検出装置１００は処理回路１０９を備える。
処理回路１０９は、関係解析部１１１と違反解析部１１２と領域解析部１１３とアドレス解析部１１４と領域解析部１１５と関係抽出部１１６と装飾部１１７とを実現するハードウェアである。
処理回路１０９は、専用のハードウェアであってもよいし、メモリ１０２に格納されるプログラムを実行するプロセッサ１０１であってもよい。
【０１３６】
処理回路１０９が専用のハードウェアである場合、処理回路１０９は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。
ＡＳＩＣはＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略称であり、ＦＰＧＡはＦｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ
Ａｒｒａｙの略称である。
違反依存検出装置１００は、処理回路１０９を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路１０９の役割を分担する。
【０１３７】
処理回路１０９において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
【０１３８】
このように、処理回路１０９はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
【０１３９】
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
【符号の説明】
【０１４０】
１００  違反依存検出装置、１０１  プロセッサ、１０２  メモリ、１０３  ストレージ、１０４  通信装置、１０５  入出力インタフェース、１０９  処理回路、１１１  関係解析部、１１２  違反解析部、１１３  領域解析部、１１４  アドレス解析部、１１５  領域解析部、１１６  関係抽出部、１１７  装飾部、１２０  記憶部、１２１  配置先領域リスト、１２２  依存要素組リスト、１２３  依存領域組リスト、１２４  違反領域組リスト、１２５  違反要素組リスト、１２６  配置先アドレスリスト、１２７  記憶領域リスト、１２８  ソースコード、１２９  ソースコード。
【図１】
2019215607.tif 000003
【図２】
2019215607.tif 000004
【図３】
2019215607.tif 000005
【図４】
2019215607.tif 000006
【図５】
2019215607.tif 000007
【図６】
2019215607.tif 000008
【図７】
2019215607.tif 000009
【図８】
2019215607.tif 000010
【図９】
2019215607.tif 000011
【図１０】
2019215607.tif 000012
【図１１】
2019215607.tif 000013
【図１２】
2019215607.tif 000014
【図１３】
2019215607.tif 000015
【図１４】
2019215607.tif 000016
【図１５】
2019215607.tif 000017
【図１６】
2019215607.tif 000018
【図１７】
2019215607.tif 000019
【図１８】
2019215607.tif 000020
【図１９】
2019215607.tif 000021
【図２０】
2019215607.tif 000022
【図２１】
2019215607.tif 000023
【図２２】
2019215607.tif 000024
【図２３】
2019215607.tif 000025
【図２４】
2019215607.tif 000026
【図２５】
2019215607.tif 000027
【図２６】
2019215607.tif 000028
【図２７】
2019215607.tif 000029
【図２８】
2019215607.tif 000030
【図２９】
2019215607.tif 000031
【図３０】
2019215607.tif 000032
【図３１】
2019215607.tif 000033