(57)【要約】【課題】コードリーディングを支援することが可能な電子計算機、方法及びプログラムを提供することにある。【解決手段】実施形態に係る電子計算機は、表示処理手段と、編集処理手段とを具備する。表示処理手段は、ソースコードを表示する第１領域及び当該ソースコードの少なくとも一部を表すダイアグラムを表示する第２領域が配置された画面を表示する。編集処理手段は、第２領域に表示されているダイアグラムを編集する。【選択図】図１
2020091766.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードを表示する第１領域及び前記ソースコードの少なくとも一部を表すダイアグラムを表示する第２領域が配置された画面を表示する表示処理手段と、
前記第２領域に表示されているダイアグラムを編集する編集処理手段と
を具備する電子計算機。
【請求項２】
前記ソースコードは、複数の関数を含み、
前記編集処理手段は、前記第１領域に表示されたソースコードに含まれる複数の関数のうち前記電子計算機を使用するユーザによって指定された関数を表す関数シンボルを、前記第２領域に表示されているダイアグラムに追加する
請求項１記載の電子計算機。
【請求項３】
前記第１領域に表示されたソースコードの前記ユーザによって指定された関数が記述されている部分は、強調表示される請求項２記載の電子計算機。
【請求項４】
前記複数の関数の各々は、少なくとも１つのコードブロックから構成され、
前記関数シンボルは、前記ユーザによって指定された関数を構成するコードブロックを表すサブシンボルを含む
請求項２記載の電子計算機。
【請求項５】
前記関数シンボルに含まれるサブシンボルの位置は、当該関数シンボルによって表される関数内に記述されている当該サブシンボルによって表されるコードブロックの位置に基づいている請求項４記載の電子計算機。
【請求項６】
前記ソースコードは、第１関数を含み、
前記ソースコードに含まれる第１関数は、第２関数を含み、
前記編集処理手段は、
前記第１領域に表示されたソースコードに含まれる第１関数が前記電子計算機を使用するユーザによって指定された場合、当該第１関数を表す第１関数シンボルを前記第２領域に表示されているダイアグラムに追加し、
前記第１関数に含まれる第２関数が前記ユーザによって更に指定された場合、当該第２関数を表す第２関数シンボルを前記第２領域に表示されているダイアグラムに更に追加し、
前記表示処理手段は、前記第２関数が前記ユーザによって指定された場合、前記ソースコードの当該第２関数の定義が記述されている部分を前記第１領域に表示する
請求項１記載の電子計算機。
【請求項７】
前記ダイアグラムは、前記第１関数と前記第２関数との間の呼び出し関係を表す請求項６記載の電子計算機。
【請求項８】
前記第１関数と前記第２関数との間の呼び出し関係は、前記第１関数シンボルと前記第２関数シンボルとを接続する呼び出し線によって表される請求項７記載の電子計算機。
【請求項９】
前記第１関数は、少なくとも１つのコードブロックから構成され、
前記第１関数シンボルは、前記第１関数を構成するコードブロックを表すサブシンボルを含み、
前記第１関数と前記第２関数との間の呼び出し関係は、前記第１関数を構成するコードブロックのうち前記第２関数が記述されているコードブロックを表すサブシンボルと前記第２関数シンボルとを接続する呼び出し線によって表される
請求項７記載の電子計算機。
【請求項１０】
前記第１領域には、前記ソースコードの一部分が表示され、
前記ダイアグラムは、前記ソースコードに含まれる関数が前記第１領域に表示されている場合に当該ダイアグラムに追加されている当該関数を表す関数シンボルを指し示すインジケータを含む
請求項２記載の電子計算機。
【請求項１１】
前記画面には、前記ダイアグラムを全体的に表示する第３領域が更に配置され、
前記第２領域には、前記ダイアグラムの一部が拡大して表示される
請求項１記載の電子計算機。
【請求項１２】
前記編集処理手段は、前記第１領域に表示されたソースコードに対するコメントが作成された場合に、当該コメントを前記第２領域に表示されているダイアグラムに付加する請求項１記載の電子計算機。
【請求項１３】
前記編集処理手段は、前記第２領域に表示されたダイアグラムに対するコメントが作成された場合に、当該コメントを前記第１領域に表示されているソースコードに付加する請求項１記載の電子計算機。
【請求項１４】
前記編集処理手段は、前記第１領域に表示されたソースコードに対する強調表示の有無が変更された場合に、当該強調表示の有無の変更を前記第２領域に表示されているダイアグラムに反映する請求項１記載の電子計算機。
【請求項１５】
前記編集処理手段は、前記第２領域に表示されたダイアグラムに対する強調表示の有無が変更された場合に、当該強調表示の有無の変更を前記第１領域に表示されているソースコードに反映する請求項１記載の電子計算機。
【請求項１６】
電子計算機が実行する方法であって、
ソースコードを表示する第１領域及び前記ソースコードの少なくとも一部を表すダイアグラムを表示する第２領域が配置された画面を表示するステップと、
前記第２領域に表示されているダイアグラムを編集するステップと
を具備する方法。
【請求項１７】
電子計算機のコンピュータによって実行されるプログラムであって、
前記コンピュータに、
ソースコードを表示する第１領域及び前記ソースコードの少なくとも一部を表すダイアグラムを表示する第２領域が配置された画面を表示するステップと、
前記第２領域に表示されているダイアグラムを編集するステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、電子計算機、方法及びプログラムに関する。
【背景技術】
【０００２】
一般に、例えばレガシーコードと称される仕様が不明なソフトウェアを運用及び保守するためには、プログラム言語で記述されたソースコードの内容を理解する必要がある。
【０００３】
しかしながら、膨大なソースコードの内容を理解すること（以下、コードリーディングと表記）は困難であり、非常に時間がかかる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】“Doxygen”、[online]、14  Feb，2011、[平成30年11月20日検索]、インターネット〈URL：http://www.doxygen.jp/〉
【発明の概要】
【発明が解決しようとする課題】
【０００５】
そこで、本発明が解決しようとする課題は、コードリーディングを支援することが可能な電子計算機、方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
実施形態に係る電子計算機は、表示処理手段と、編集処理手段とを具備する。前記表示処理手段は、ソースコードを表示する第１領域及び前記ソースコードの少なくとも一部を表すダイアグラムを表示する第２領域が配置された画面を表示する。前記編集処理手段は、前記第２領域に表示されているダイアグラムを編集する。
【図面の簡単な説明】
【０００７】
【図１】実施形態に係るコードリーディング支援装置の機能構成の一例を示すブロック図。
【図２】コードリーディング支援装置のシステム構成の一例を示す図。
【図３】コード解析情報に含まれる関数情報のデータ構造の一例を示す図。
【図４】コード解析情報に含まれるコードブロック情報のデータ構造の一例を示す図。
【図５】コード付加情報のデータ構造の一例を示す図。
【図６】ダイアグラム情報のデータ構造の一例を示す図。
【図７】ダイアグラム付加情報のデータ構造の一例を示す図。
【図８】ダイアグラム表示処理の処理手順の一例を示すフローチャート。
【図９】コードリーディング支援プログラムが起動された際の表示画面の一例を示す図。
【図１０】コード表示領域にソースコードが表示された際の表示画面の一例を示す図。
【図１１】関数シンボルについて具体的に説明するための図。
【図１２】ダイアグラム表示処理を具体的に説明するための図。
【図１３】ダイアグラム表示処理を具体的に説明するための図。
【図１４】ダイアグラム表示処理を具体的に説明するための図。
【図１５】複数の関数が指定された後に当該関数を表す関数シンボルが追加される場合について説明するための図。
【図１６】ダイアグラムを全体的に表示するための領域が更に配置された表示画面の一例を示す図。
【図１７】コメント付加処理の処理手順の一例を示すフローチャート。
【図１８】コメント作成画面の一例を示す図。
【図１９】コメント付加処理を具体的に説明するための図。
【図２０】強調表示変更処理の処理手順の一例を示すフローチャート。
【図２１】強調表示変更処理を具体的に説明するための図。
【発明を実施するための形態】
【０００８】
以下、図面を参照して、実施形態について説明する。
本実施形態に係る電子計算機は、例えばＪａｖａ（登録商標）またはＣ言語等のプログラム言語で記述されたソースコードの内容を理解すること（コードリーディング）を支援するために用いられる。以下、本実施形態に係る電子計算機を、便宜的に、コードリーディング支援装置と称する。
【０００９】
図１は、本実施形態に係るコードリーディング支援装置の機能構成の一例を示すブロック図である。図１に示すように、コードリーディング支援装置１０は、コード格納部１１、ダイアグラム格納部１２、コード表示処理部１３、ダイアグラム表示処理部１４、操作受付部１５及び編集処理部１６を含む。
【００１０】
コード格納部１１には、例えばコードリーディング支援装置１０を使用するユーザが内容を理解すべきソースコードが格納される。また、コード格納部１１には、当該コード格納部１１に格納されているソースコードに対する解析結果を示すコード解析情報が格納される。なお、コード格納部１１には、複数のソースコード及び当該複数のソースコードの各々に対する解析結果を示すコード解析情報が格納されていてもよい。
【００１１】
ここで、ソースコードには複数の関数が含まれるが、当該複数の関数の各々は、少なくとも１つのコードブロックから構成される。なお、本実施形態において、コードブロックとは、例えば複数の行に亘って記載されたコードのまとまり（ブロック）であり、上記したＪａｖａまたはＣ言語等では「｛」及び「｝」で囲まれた部分に相当する。
【００１２】
この場合、コード格納部１１に格納されるコード解析情報は、当該コード格納部１１に格納されているソースコードに含まれる関数及び当該関数を構成するコードブロック等を示す。
【００１３】
なお、コード解析情報を得るためにはソースコードを解析する必要があるが、当該ソースコードの解析は、例えば統合開発環境において実行される。また、この統合開発環境を提供するためのコード解析ツールとしては、Ｅｃｌｉｐｓｅ  ＪＤＴ、Ｕｎｄｅｒｓｔａｎｄ及びＣｌａｎｇ等が利用可能である。
【００１４】
更に、コード格納部１１には、当該コード格納部１１に格納されているソースコードが表示される際に当該ソースコードに付加される情報（以下、コード付加情報と表記）が格納されている。
【００１５】
ダイアグラム格納部１２には、コード格納部１１に格納されているソースコードの少なくとも一部を表すダイアグラムを表示するために用いられるダイアグラム情報が格納される。また、ダイアグラム格納部１２には、ダイアグラム情報を用いてダイアグラムが表示される際に当該ダイアグラムに付加される情報（以下、ダイアグラム付加情報と表記）が格納されている。
【００１６】
ここで、本実施形態に係るコードリーディング支援装置１０においては、少なくともコード表示領域（第１表示領域）及びダイアグラム表示領域（第２表示領域）を含む画面が表示される。
【００１７】
コード表示処理部１３は、コード格納部１１に格納されているソースコードをコード表示領域に表示する処理を実行する。なお、コード表示処理部１３は、コード表示領域にソースコードを表示する際に、コード格納部１１に格納されているコード付加情報を当該ソースコードに付加する。
【００１８】
ダイアグラム表示処理部１４は、ダイアグラム格納部１２に格納されているダイアグラム情報を用いて、コード表示領域に表示されているソースコードの一部を表すダイアグラムをダイアグラム表示領域に表示する処理を実行する。なお、ダイアグラム表示処理部１４は、ダイアグラム表示領域にダイアグラムを表示する際に、ダイアグラム格納部１２に格納されているダイアグラム付加情報を当該ダイアグラムに付加する。なお、ダイアグラム表示処理部１４は、ダイアグラムを表示する際に、上記したコード格納部１１に格納されているコード解析情報を利用する。
【００１９】
操作受付部１５は、コード表示領域に表示されたソースコード及びダイアグラム表示領域に表示されたダイアグラムに対するユーザの操作を受け付ける。
【００２０】
編集処理部１６は、操作受付部１５によって受け付けられるユーザの操作に基づいて、例えばダイアグラム表示領域に表示されたダイアグラムを編集する。また、編集処理部１６は、操作受付部１５によって受け付けられるユーザの操作に基づいて、コード格納部１１に格納されているコード付加情報及びダイアグラム格納部１２に格納されているダイアグラム付加情報を変更（編集）する。
【００２１】
本実施形態に係るコードリーディング支援装置１０は、ソースコードのビューア（またはエディタ）としての機能に加えて、当該ソースコードの少なくとも一部を表すダイアグラムのエディタとしての機能を有する。
【００２２】
図２は、図１に示すコードリーディング支援装置１０のシステム構成の一例を示す。ここでは、コードリーディング支援装置１０が例えばパーソナルコンピュータ（ＰＣ）等であるものとして説明するが、コードリーディング支援装置１０は他の電子計算機であってもよい。
【００２３】
図２に示すように、コードリーディング支援装置１０は、ＣＰＵ１０１、不揮発性メモリ１０２、主メモリ１０３、ＢＩＯＳ−ＲＯＭ１０４、システムコントローラ１０５、入力デバイス１０６、表示デバイス１０７及びエンベデッドコントローラ（ＥＣ）１０８等を備える。
【００２４】
ＣＰＵ１０１は、コードリーディング支援装置１０内の各コンポーネントの動作を制御するプロセッサである。ＣＰＵ１０１は、ストレージデバイスである不揮発性メモリ１０２から主メモリ１０３にロードされる様々なプログラムを実行する。このプログラムには、オペレーティングシステム（ＯＳ）及び上記したようにコードリーディングを支援するためのプログラム（以下、コードリーディング支援プログラムと表記）等が含まれる。
【００２５】
また、ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１０４に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００２６】
システムコントローラ１０５は、ＣＰＵ１０１のローカルバスと各種コンポーネントとの間を接続するデバイスである。
【００２７】
入力デバイス１０６は、例えばキーボード及びマウス等を含む。表示デバイス１０７は、例えば液晶表示装置のようなディスプレイ等を含む。ＥＣ１０８は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。
【００２８】
なお、図２においては、ＣＰＵ１０１、不揮発性メモリ１０２、主メモリ１０３、ＢＩＯＳ−ＲＯＭ１０４、システムコントローラ１０５、入力デバイス１０６、表示デバイス１０７及びＥＣ１０８のみが示されているが、コードリーディング支援装置１０は、例えばＨＤＤ（Hard Disk Drive）及びＳＳＤ（Solid State Drive）のような他の記憶装置を備えていてもよいし、外部装置との通信を実行するように構成された通信デバイス等を備えていてもよい。
【００２９】
本実施形態において、図１に示すコード格納部１１及びダイアグラム格納部１２は、例えば図２に示す不揮発性メモリ１０２または他の記憶装置を用いて実現される。
【００３０】
また、本実施形態において、図１に示す各部１３〜１６の一部または全ては、例えば図２に示すＣＰＵ１０１（つまり、コードリーディング支援装置１０のコンピュータ）に上記したコードリーディング支援プログラムを実行させること、すなわちソフトウェアによって実現されるものとする。なお、コードリーディング支援プログラムは、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、コードリーディング支援プログラムは、例えばネットワークを介してコードリーディング支援装置１０にダウンロードされても構わない。
【００３１】
ここでは、各部１３〜１６の一部または全てがソフトウェアによって実現されるものとして説明したが、当該各部１３〜１６の一部または全ては、例えばハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせ構成として実現されてもよい。
【００３２】
以下、上記した図１に示すコード格納部１１及びダイアグラム格納部１２に格納される各種情報について説明する。
【００３３】
まず、図３及び図４を参照して、コード格納部１１に格納されているコード解析情報について説明する。上記したようにコード格納部１１に格納されているソースコードは複数の関数を含み、当該関数の各々は少なくとも１つのコードブロックから構成されるが、コード解析情報は、当該ソースコードに含まれる関数を示す関数情報及び当該関数を構成するコードブロックを示すコードブロック情報を含む。
【００３４】
図３は、上記したコード解析情報に含まれる関数情報のデータ構造の一例を示す。図３に示すように、関数情報には、ソースコードＩＤ、関数ＩＤ及び位置情報が含まれる。
【００３５】
ソースコードＩＤは、コード格納部１１に格納されているソースコードを識別するための識別情報である。
【００３６】
関数ＩＤは、当該関数ＩＤに対応づけられているソースコードＩＤによって識別されるソースコードに含まれる関数を識別するための識別情報である。
【００３７】
位置情報は、コード格納部１１に格納されているソースコード（つまり、当該位置情報に対応づけられているソースコードＩＤによって識別されるソースコード）における、当該位置情報に対応づけられている関数ＩＤによって識別される関数の位置を示す。なお、関数情報に含まれる位置情報は、ソースコード中の関数が記述されている行番号（開始行及び終了行）等を含む。
【００３８】
図３に示す例では、関数情報１１１ａ及び１１１ｂが示されている。関数情報１１１ａには、ソースコードＩＤ「１」、関数ＩＤ「１」及び位置情報「ｘ１〜ｘ２」が含まれている。この関数情報１１１ａによれば、ソースコードＩＤ「１」によって識別されるソースコードには関数ＩＤ「１」によって識別される関数が含まれており、当該関数が当該ソースコード中のｘ１行目〜ｘ２行目に記述されていることが示されている。
【００３９】
一方、関数情報１１１ｂには、ソースコードＩＤ「１」、関数ＩＤ「２」及び位置情報「ｙ１〜ｙ２」が含まれている。この関数情報１１１ｂによれば、ソースコードＩＤ「１」によって識別されるソースコードには関数ＩＤ「２」によって識別される関数が含まれており、当該関数が当該ソースコード中のｙ１行目〜ｙ２行目に記述されていることが示されている。
【００４０】
図３においては便宜的に関数情報１１１ａ及び１１１ｂについてのみ説明したが、コード格納部１１に格納されているコード解析情報には、当該コード格納部１１に格納されているソースコードに含まれる関数毎の関数情報が含まれている。
【００４１】
図４は、コード解析情報に含まれるコードブロック情報のデータ構造の一例を示す。図４に示すように、コードブロック情報には、関数ＩＤ、コードブロックＩＤ及び位置情報が含まれる。
【００４２】
関数ＩＤは、上記した関数情報に含まれる関数ＩＤであり、コード格納部１１に格納されているソースコードに含まれる関数を識別するための識別情報である。
【００４３】
コードブロックＩＤは、当該コードブロックＩＤに対応づけられている関数ＩＤによって識別される関数を構成するコードブロックを識別するための識別情報である。
【００４４】
位置情報は、上記したコード格納部１１に格納されているソースコードにおける、当該位置情報に対応づけられているコードブロックＩＤによって識別されるコードブロックの位置を示す。なお、コードブロック情報に含まれる位置情報は、ソースコード中のコードブロックが記述されている行番号等を含む。
【００４５】
図４に示す例では、コードブロック情報１１２ａ及び１１２ｂが示されている。コードブロック情報１１２ａには、関数ＩＤ「１」、コードブロックＩＤ「１」及び位置情報「ｘ１１〜ｘ１２」が含まれている。このコードブロック情報１１２ａによれば、関数ＩＤ「１」によって識別される関数がコードブロックＩＤ「１」によって識別されるコードブロックから構成されており、当該コードブロックがソースコード中のｘ１１行目〜ｘ１２行目に記述されていることが示されている。
【００４６】
一方、コードブロック情報１１２ｂには、関数ＩＤ「１」、コードブロックＩＤ「２」及び位置情報「ｘ１３〜ｘ１４」が含まれている。このコードブロック情報１１２ｂによれば、関数ＩＤ「１」によって識別される関数がコードブロックＩＤ「２」によって識別されるコードブロックから構成されており、当該コードブロックがソースコード中のｘ１３行目〜ｘ１４行目に記述されていることが示されている。
【００４７】
図４においては便宜的にコードブロック情報１１２ａ及び１１２ｂについてのみ説明したが、コード格納部１１に格納されているコード解析情報には、当該コード格納部１１に格納されているソースコードに含まれる関数を構成するコードブロック毎のコードブロック情報が含まれている。
【００４８】
なお、図４に示すように１つの関数（つまり、関数ＩＤ「１」によって識別される関数）は複数のコードブロック（つまり、コードブロックＩＤ「１」及び「２」の各々によって識別されるコードブロック）から構成されてもよいが、当該関数は、例えば１つのコードブロック内に他のコードブロックが記述されるような入れ子構造を有していてもよい。また、関数そのものを１つのコードブロックとして扱うようにしてもよい。
【００４９】
図５は、コード格納部１１に格納されているコード付加情報のデータ構造の一例を示す。図５に示すように、コード付加情報には、ソースコードＩＤ、付加内容及び位置情報が含まれる。
【００５０】
ソースコードＩＤは、コード格納部１１に格納されているソースコードを識別するための識別情報である。
【００５１】
付加内容は、当該付加内容に対応づけられているソースコードＩＤによって識別されるソースコードがコード表示領域に表示される際に、当該ソースコードに付加される内容を示す。なお、本実施形態において、コード表示領域に表示されるソースコードには、例えばコメント及び強調情報等が付加される。
【００５２】
位置情報は、当該位置情報に対応づけられている付加内容に従ってコメントまたは強調情報等が付加される、コード格納部１１に格納されているソースコード（つまり、当該位置情報に対応づけられているソースコードＩＤによって識別されるソースコード）の位置（部分）を示す。なお、コード付加情報に含まれる位置情報は、上記した関数情報及びコードブロック情報に含まれる位置情報と同様に、行番号等を含む。
【００５３】
図５に示す例では、コード付加情報１１３ａ及び１１３ｂが示されている。コード付加情報１１３ａには、ソースコードＩＤ「１」、付加内容「強調」及び位置情報「ｘ１〜ｘ２」が含まれている。このコード付加情報１１３ａによれば、ソースコードＩＤ「１」によって識別されるソースコードがコード表示領域に表示される際に、当該ソースコード中のｘ１行目〜ｘ２行目に強調情報が付加されることが示されている。
【００５４】
なお、ソースコードに対して強調情報が付加される場合には、例えば強調されていることを表す図形、記号またはマーク等がソースコードの該当する部分（つまり、コード付加情報に含まれる位置情報によって示される位置）に付加されればよいが、当該部分（テキスト）のフォント（書体、太さ、色彩等）が変更されてもよい。すなわち、本実施形態において、「ソースコード（の部分）に対して強調情報が付加される」とは、該当するソースコードの部分が強調されていることをユーザが把握することができるように、当該ソースコードの部分に対して所定の処理を施すことをいう。以下の説明においては、ソースコードに強調情報を付加することを、便宜的にソースコードを強調表示すると表現する。
【００５５】
一方、コード付加情報１１３ｂには、ソースコードＩＤ「１」、付加内容「コメント１」及び位置情報「ｘ１５」が含まれている。このコード付加情報１１３ｂによれば、ソースコードＩＤ「１」によって識別されるソースコードがコード表示領域に表示される際に、当該ソースコード中のｘ１５行目にコメント１が付加されることが示されている。
【００５６】
図５においては便宜的にコード付加情報１１３ａ及び１１３ｂについてのみ説明したが、コード格納部１１には、他の付加情報が格納されていてもよい。
【００５７】
また、図５に示す例では付加内容としてコメント及び強調情報が付加されることについてのみ説明したが、当該付加内容は、ソースコードが表示される際に当該ソースコードに付加される（つまり、当該ソースコードの表示を変更する）ものであれば他の内容であっても構わない。
【００５８】
次に、図６は、ダイアグラム格納部１２に格納されているダイアグラム情報のデータ構造の一例を示す。図６に示すように、ダイアグラム情報には、ダイアグラムＩＤ、呼び出し元関数ＩＤ及び呼び出し先関数ＩＤが含まれる。
【００５９】
ダイアグラムＩＤは、上記したダイアグラム表示領域に表示されるダイアグラムを識別するための識別情報である。
【００６０】
呼び出し元関数ＩＤは、コード格納部１１に格納されているソースコードに含まれる関数（第１関数）を識別するための識別情報である。呼び出し元関数ＩＤによって識別される関数は、当該呼び出し元関数ＩＤに対応づけられている呼び出し先関数ＩＤによって識別される関数を含むように定義されているものとする。
【００６１】
呼び出し先関数ＩＤは、コード格納部１１に格納されているソースコードに含まれる関数（第２関数）を識別するための識別情報である。なお、呼び出し先関数ＩＤによって識別される関数は、上記した当該呼び出し先関数ＩＤに対応づけられている呼び出し元関数ＩＤによって識別される関数内に記述された関数である。
【００６２】
すなわち、上記した呼び出し元関数ＩＤによって識別される関数は呼び出し元関数であり、呼び出し先関数ＩＤによって識別される関数は呼び出し先関数である。このため、ダイアグラム情報に含まれる呼び出し元関数ＩＤ及び呼び出し先関数ＩＤは、当該ダイアグラム情報を用いて表示されるダイアグラムにおいて複数の関数の間の呼び出し関係を表すために用いられる。
【００６３】
図６に示す例では、ダイアグラム情報１２１ａ及び１２１ｂが示されている。ダイアグラム情報１２１ａには、ダイアグラムＩＤ「１」、呼び出し元関数ＩＤ「１」及び呼び出し先関数ＩＤ「２」が含まれている。このダイアグラム情報１２１ａによれば、ダイアグラムＩＤ「１」によって識別されるダイアグラムが、呼び出し先関数ＩＤ「２」によって識別される関数が呼び出し元関数ＩＤ「１」によって識別される関数において呼び出されるという呼び出し関係を表すことが示されている。
【００６４】
一方、ダイアグラム情報１２１ｂには、ダイアグラムＩＤ「１」、呼び出し元関数ＩＤ「２」及び呼び出し先関数ＩＤ「３」が含まれている。このダイアグラム情報１２１ｂによれば、ダイアグラムＩＤ「１」によって識別されるダイアグラムが、呼び出し先関数ＩＤ「３」によって識別される関数が呼出元関数ＩＤ「２」によって識別される関数において呼び出されるという呼び出し関係を表すことが示されている。
【００６５】
図６においては便宜的にダイアグラム情報１２１ａ及び１２１ｂについてのみ説明したが、ダイアグラム格納部１２には、他のダイアグラム情報が格納されていてもよい。
【００６６】
なお、図６に示すように、ダイアグラム（例えば、ダイアグラムＩＤ「１」によって識別されるダイアグラム）は、複数の呼び出し関係を表すものであってもよい。
【００６７】
図７は、ダイアグラム格納部１２に格納されているダイアグラム付加情報のデータ構造の一例を示す。図７に示すように、ダイアグラム付加情報には、ダイアグラムＩＤ、付加内容及び位置情報が含まれる。
【００６８】
ダイアグラムＩＤは、ダイアグラム表示領域に表示されるダイアグラムを識別するための識別情報である。
【００６９】
付加内容は、当該付加内容に対応づけられているダイアグラムＩＤによって識別されるダイアグラムがダイアグラム表示領域に表示される際に、当該ダイアグラムに付加される内容を示す。なお、本実施形態において、ダイアグラム表示領域に表示されるダイアグラムには、例えばコメント及び強調情報等が付加される。
【００７０】
位置情報は、当該位置情報に対応づけられている付加内容に従ってコメントまたは強調情報等が付加される、当該位置情報に対応づけられているダイアグラムＩＤによって識別されるダイアグラム上の位置を示す。なお、ダイアグラム付加情報に含まれる位置情報としては、例えば上記した関数ＩＤ及びコードブロック情報ＩＤ等が用いられる。
【００７１】
図７に示す例では、ダイアグラム付加情報１２２ａ及び１２２ｂが示されている。ダイアグラム付加情報１２２ａには、ダイアグラムＩＤ「１」、付加内容「強調」及び位置情報「関数ＩＤ「１」」が含まれている。このダイアグラム付加情報１２２ａによれば、ダイアグラムＩＤ「１」によって識別されるダイアグラムがダイアグラム表示領域に表示される際に、関数ＩＤ「１」によって識別される関数を表現する位置に強調情報が付加されることが示されている。
【００７２】
なお、ダイアグラムにおいて強調情報が付加される場合には、例えば強調されていることを表す色彩がダイアグラムの該当する部分（つまり、ダイアグラム情報に含まれる位置情報によって示される位置）に付加されればよいが、当該部分に強調されていることを表す記号、マークまたは模様等が付加されてもよい。すなわち、本実施形態において、「ダイアグラム（の部分）に対して強調情報が付加される」とは、該当するダイアグラムの部分が強調されていることをユーザが把握することができるように、当該ダイアグラムの部分に対して所定の処理を施すことをいう。以下の説明においては、ダイアグラムに強調情報を付加することを、便宜的にダイアグラムを強調表示すると表現する。
【００７３】
一方、ダイアグラム付加情報１２２ｂには、ダイアグラムＩＤ「１」、付加内容「コメント２」及び位置情報「コードブロックＩＤ「１」」が含まれている。このダイアグラム付加情報１２２ｂによれば、ダイアグラムＩＤ「１」によって識別されるダイアグラムがダイアグラム表示領域に表示される際に、コードブロックＩＤ「１」によって識別されるコードブロックを表現する位置にコメント２が付加されることが示されている。
【００７４】
なお、ダイアグラムにおいては、ソースコードに含まれる関数のみではなく、当該関数を構成するコードブロックをも表現することが可能であるが、当該ダイアグラムの具体例については後述する。
【００７５】
上記した図３〜図７においては本実施形態において用いられる各種情報について説明したが、当該図３〜図７において説明した情報は一例であり、当該情報の一部が省略されていてもよいし、当該情報に他の情報（項目）が含まれていてもよい。
【００７６】
また、図３〜図５に示すデータ構造は一例であり、コード格納部１１に格納されるコード解析情報（関数情報及び情報）及びコード付加情報は、まとめて１つの情報として管理されていてもよい。同様に、図６及び図７に示すデータ構造は一例であり、ダイアグラム格納部１２に格納されるダイアグラム情報及びダイアグラム付加情報は、まとめて１つの情報として管理されていてもよい。
【００７７】
次に、本実施形態に係るコードリーディング支援装置１０の動作について説明する。ここでは、ソースコードの一部を表すダイアグラムを生成して表示する際の処理（以下、ダイアグラム表示処理と表記）、当該ソースコードに対してコメントを付加する際の処理（以下、コメント付加処理と表記）及び当該ソースコードに対する強調表示の有無を変更する際の処理（以下、強調表示変更処理と表記）の各々について主に説明する。
【００７８】
まず、図８のフローチャートを参照して、ダイアグラム表示処理の処理手順の一例について説明する。
【００７９】
コードリーディング支援装置１０を使用するユーザは、当該コードリーディング支援装置１０上で上記したコードリーディング支援プログラムを起動する。
【００８０】
コードリーディング支援装置１０上でコードリーディング支援プログラムが起動された場合、コードリーディング支援装置１０に備えられる表示デバイス１０７（ディスプレイ）には、図９に示すような画面が表示される。
【００８１】
図９に示すように、コードリーディング支援装置１０に表示される画面（以下、表示画面と表記）２００には、コード表示領域２０１及びダイアグラム表示領域２０２が含まれる。
【００８２】
図９に示す例において、コード表示領域２０１及びダイアグラム表示領域２０２は、例えば上下方向に隣接するように並べて配置されている。なお、コード表示領域２０１及びダイアグラム表示領域２０２は、例えば左右方向に隣接するように配置されていてもよい。
【００８３】
また、表示画面２００には、ファイル選択領域２０３が更に含まれている。ユーザは、ファイル選択領域２０３において、例えばコード表示領域２０１に表示するソースコード（ファイル）を選択することができる。
【００８４】
ユーザは、上記した表示画面２００に対する各種操作を行うことによって、ソースコードの一部を表すダイアグラムを作成することができる。
【００８５】
また、ファイル選択領域２０３において例えば過去に作成されたダイアグラムを表示するためのダイアグラム情報（ファイル）が選択された場合には、当該ダイアグラムをダイアグラム表示領域２０２に表示することも可能である。
【００８６】
ここで、上記したようにソースコードの一部を表すダイアグラムを作成する場合、ユーザは、ファイル選択領域２０３において当該ソースコード（ファイル）を選択する。
【００８７】
この場合、コード表示処理部１３は、ユーザによって選択されたソースコード（以下、対象ソースコードと表記）をコード表示領域２０１に表示する（ステップＳ１）。
【００８８】
対象ソースコードの全てをコード表示領域２０１に表示することができない場合、コード表示領域２０１には、対象ソースコードが部分的に表示される。この場合、ユーザは、コードリーディング支援装置１０に備えられる入力デバイス１０６（例えば、マウス及びキーボード等）を用いて当該コード表示領域２０１の表示をスクロールすることによって、対象ソースコードの所望の部分を表示することができるものとする。
【００８９】
ステップＳ１の処理が実行されると、ユーザは、対象ソースコードに含まれる複数の関数をのうちの１つ（以下、第１対象関数と表記）をコード表示領域２０１に表示し、当該第１対象関数を指定する操作（関数追加操作と表記）を行う。ユーザは、この関数追加操作を行うことによって、第１対象関数をダイアグラムに追加することを指示することができる。なお、関数追加操作には、コード表示領域２０１において第１対象関数（の定義）が記述されている位置にカーソルを移動させる操作等が含まれるが、他の操作であってもよい。
【００９０】
操作受付部１５は、上記した関数追加操作が受け付けられた（ユーザによって行われた）か否かを判定する（ステップＳ２）。
【００９１】
関数追加操作が受け付けられたと判定された場合（ステップＳ２のＹＥＳ）、編集処理部１６は、上記した第１対象関数（対象ソースコードの一部）が追加されたダイアグラム（以下、対象ダイアグラムと表記）を表示するために用いられるダイアグラム情報を生成する（ステップＳ３）。この場合、編集処理部１６は、対象ダイアグラムを識別するためのダイアグラムＩＤ及び第１対象関数を識別するための関数ＩＤ（呼び出し元関数ＩＤ）を含むダイアグラム情報を生成する。ステップＳ３において生成されたダイアグラム情報は、ダイアグラム格納部１２に格納される。
【００９２】
次に、編集処理部１６は、ステップＳ３において生成されたダイアグラム情報を用いて表示される対象ダイアグラムに付加されるダイアグラム付加情報を生成する（ステップＳ４）。この場合、編集処理部１６は、例えば対象ダイアグラムを識別するためのダイアグラムＩＤ、付加内容「強調」及び第１対象関数を識別するための関数ＩＤ（位置情報）を含むダイアグラム付加情報を生成する。ステップＳ４において生成されたダイアグラム付加情報は、ダイアグラム格納部１２に格納される。
【００９３】
ステップＳ４の処理が実行されると、ダイアグラム表示処理部１４は、ダイアグラム格納部１２に格納されたダイアグラム情報及びダイアグラム付加情報に基づいて対象ダイアグラムを生成する（ステップＳ５）。
【００９４】
なお、上記したダイアグラム情報及びダイアグラム付加情報によれば、ステップＳ５においては、第１対象関数が追加され、かつ、当該第１対象関数が強調表示された対象ダイアグラムが生成される。ステップＳ５において生成された対象ダイアグラムは、ダイアグラム表示領域２０２に表示される（ステップＳ６）。
【００９５】
また、編集処理部１６は、上記した第１対象関数が対象ダイアグラムに追加されたこと（つまり、対象ダイアグラムの変更通知）に応じて、対象ソースコードに付加される付加情報（以下、コード付加情報と表記）を生成する（ステップＳ７）。この場合、編集処理部１６は、例えばステップＳ１において表示された対象ソースコードを識別するためのソースコードＩＤ、付加内容「強調」及び第１対象関数が記述されている行番号（位置情報）を含むコード付加情報を生成する。ステップＳ７において生成されたコード付加情報は、コード格納部１１に格納される。
【００９６】
ステップＳ７の処理が実行されると、コード表示処理部１３は、コード格納部１１に格納されたコード付加情報を、コード表示領域２０１に表示されている対象ソースコードに反映する（ステップＳ８）。上記したコード付加情報によれば、ステップＳ８の処理が実行されることによって、コード表示領域２０１に表示されている対象ソースコードの第１対象関数が記述されている部分が強調表示される。これによれば、対象ソースコードにおいて、対象ダイアグラムに追加された関数と当該対象ダイアグラムに追加されていない関数とを区別して表示することができる。
【００９７】
ステップＳ８の処理が実行されると、ステップＳ２に戻って処理が繰り返される。ここで、コード表示領域２０１には対象ソースコードの第１対象関数が記述されている部分が表示されているが、ユーザは、ステップＳ８の処理が実行された後に、当該第１対象関数内に記述されている他の関数（以下、第２対象関数と表記）を指定する関数追加操作を行うことができる。ユーザは、この関数追加操作を行うことによって、第２対象関数をダイアグラムに追加することを指示する。
【００９８】
ステップＳ２においてこのような関数追加操作が受け付けられたと判定された場合には、第２対象関数の定義が記述されている部分がコード表示領域２０１に表示され、ステップＳ３以降の処理が実行される。
【００９９】
なお、第２対象関数は、第１対象関数内に記述されているため、当該第１対象関数を呼び出し元関数とした場合における呼び出し先関数に相当する。この場合、ステップＳ３においては、対象ダイアグラムを識別するためのダイアグラムＩＤ、第１対象関数を識別するための関数ＩＤ（呼び出し元関数ＩＤ）及び第２対象関数を識別するための関数ＩＤ（呼び出し先関数ＩＤ）を含むダイアグラム情報を生成する。これによれば、対象ダイアグラムに第２対象関数を追加するとともに、当該対象ダイアグラムにおいて、第１対象関数及び第２対象関数との間の呼び出し関係を表すことができる。
【０１００】
上記した第１対象関数（呼び出し元関数）と第２対象関数（呼び出し先関数）との関係は、例えば上記したコード格納部１１に格納されているコード解析情報（つまり、各関数が記述されている位置）等によって判別可能であるが、当該関係が規定された情報（例えば対象ソースコードにおける接続行や接続先等を含む呼び出し箇所情報）がコードリーディング支援装置１０内で別途管理されていてもよい。
【０１０１】
以下に実行されるステップＳ４〜Ｓ７の処理については上記した通りであるため、ここではその詳しい説明を省略する。
【０１０２】
上記したダイアグラム表示処理によれば、対象ソースコードに含まれる関数のうちユーザによって指定された（関数追加操作が行われた）関数を対象ダイアグラムに追加するとともに、当該追加された複数の関数の間の呼び出し関係を当該対象ダイアグラムにおいて自動的に表すことができる。
【０１０３】
なお、ステップＳ２において関数追加操作が受け付けられていないと判定された場合（ステップＳ２のＮＯ）、ダイアグラム表示処理は終了される。
【０１０４】
図８においてはステップＳ３〜Ｓ７の順に処理が実行されるものとして説明したが、当該処理の順番は適宜変更されても構わない。具体的には、例えばステップＳ７及びＳ８の処理の後にステップＳ３〜Ｓ５の処理が実行されてもよい。
【０１０５】
以下、上記したダイアグラム表示処理について具体的に説明する。図１０は、上記した図８に示すステップＳ１の処理が実行された際のコードリーディング支援装置１０に表示される画面（表示画面）の一例である。
【０１０６】
図１０に示すように、図８に示すステップＳ１が実行された場合、表示画面２００に含まれるコード表示領域２０１には、対象ソースコードが表示される。なお、図１０に示す例においては、対象ソースコードに含まれるｍａｉｎ関数の定義が記述された部分（５行目〜１３行目）がコード表示領域２０１に表示されている。なお、図１０において対象ソースコードの各行の左側に付されている数値が行番号を表している。
【０１０７】
ユーザは、図１０に示す表示画面２００上で例えばｍａｉｎ関数を指定する関数追加操作を行うことができる。この場合、ユーザは、例えばコード表示領域２０１のｍａｉｎ関数の定義が記述された部分にカーソルを合わせることによって、当該ｍａｉｎ関数をダイアグラムに追加することを指示する。
【０１０８】
上記したようにｍａｉｎ関数が指定された場合には、上記した図８に示すステップＳ３〜Ｓ６の処理が実行される。この場合におけるステップＳ３においては、ｍａｉｎ関数が追加される対象ダイアグラムを識別するためのダイアグラムＩＤ、当該ｍａｉｎ関数を識別するための関数ＩＤ（呼び出し元関数ＩＤ）を含むダイアグラム情報が生成される。なお、この時点では、呼び出し先関数に相当する関数は指定されていないため、ダイアグラム情報には呼び出し先関数ＩＤは含まれない。
【０１０９】
また、ステップＳ４においては、ステップＳ３において生成されたダイアグラム情報に含まれるダイアグラムＩＤ（対象ダイアグラムを識別するためのダイアグラムＩＤ）、付加内容「強調」及びｍａｉｎ関数を識別するための関数ＩＤ（位置情報）を含むダイアグラム付加情報が生成される。
【０１１０】
ステップＳ５においては、ステップＳ３において生成されたダイアグラム情報及びステップＳ４において生成されたダイアグラム付加情報に基づいて対象ダイアグラムが生成される。なお、ステップＳ５においては、ダイアグラム情報に含まれる関数ＩＤ（呼び出し元関数ＩＤ）によって識別されるｍａｉｎ関数を表すシンボル（以下、関数シンボルと表記）を含む対象ダイアグラムが生成される。
【０１１１】
ここで、図１１を参照して、上記した関数シンボルについて具体的に説明する。ここでは、便宜的に、上記したｍａｉｎ関数とは異なる関数を用いて説明するものとする。
【０１１２】
図１１の左側に示す関数３０１（ｔｏｙ＿ｃａｌｌ関数）は、ｗｈｉｌｅ文に相当するコードブロック３０１ａ、ｉｆ文に相当するコードブロック３０１ｂ及び３０１ｃから構成されている。また、コードブロック３０１ａには、ｉｆ文に相当するコードブロック３０１ｄが更に含まれている。
【０１１３】
このような関数３０１を表す関数シンボル３０２は、上記した関数３０１全体を表現するメインシンボル３０１ａ及び当該関数３０１を構成するコードブロック３０１ａ〜３０１ｄの各々を表すサブシンボル３０２ｂ〜３０２ｅから構成される。
【０１１４】
なお、関数シンボル３０２（メインシンボル３０２ａ）においてサブシンボル３０２ｂ〜３０２ｅが配置される位置は、コード格納部１１に格納されているコード解析情報（関数情報及びコードブロック情報）に基づいて決定される。具体的には、例えばサブシンボル３０２ｂは、関数３０１において当該サブシンボル３０２ｂによって表されるコードブロック３０１ａが記述されている位置に相当するメインシンボル３０２ａ上に配置される。他のサブシンボル３０２ｃ〜３０２ｅについても同様である。
【０１１５】
すなわち、本実施形態においては、ダイアグラム情報に含まれる関数ＩＤ（呼び出し元関数ＩＤ及び呼び出し先関数ＩＤ）によって識別される関数を構成するコードブロック（が記述されている位置）を当該関数ＩＤを含むコードブロック情報に基づいて特定することによって、当該関数全体を表現するメインシンボル及び当該関数を構成するコードブロックを表すサブシンボルから構成される関数シンボルを生成することができる。
【０１１６】
上記したように生成された関数シンボルを含む対象ダイアグラムは、ステップＳ６においてダイアグラム表示領域２０２に表示される。
【０１１７】
上記したステップＳ３〜Ｓ６の処理が実行された場合、ステップＳ７及びＳ８の処理が実行される。この場合におけるステップＳ７においては、対象ソースコードを識別するためのソースコードＩＤ、付加内容「強調」及び位置情報「５（行）〜１３（行）」を含むコード付加情報が生成される。また、ステップＳ８においては、ステップＳ７において生成されたコード付加情報がコード表示領域２０１に表示されている対象ソースコードに反映される。
【０１１８】
ここで、図１２は、上記したステップＳ３〜Ｓ８の処理が実行された後の表示画面２００の一例を示す。
【０１１９】
詳細については省略するが、図１２に示すｍａｉｎ関数を表す関数シンボル４００は、ｍａｉｎ関数全体を表現するメインシンボル４００ａ及び当該ｍａｉｎ関数を構成するコードブロック（ｉｆ文に相当するコードブロック）を表すサブシンボル４００ｂから構成されている。また、ダイアグラム表示領域２０２に表示されている関数シンボル４００（メインシンボル４００ａ及びサブシンボル４００ｂ）は、上記したダイアグラム付加情報に基づいて強調表示されている（例えば、色彩が付されて表示されている）。
【０１２０】
また、コード表示領域２０１においては、ｍａｉｎ関数の定義が記述された部分が強調表示されている。具体的には、例えば図１２に示すコード表示領域２０１に表示されているｍａｉｎ関数の定義が記述された部分には、強調表示されていることを示すために色彩（例えば、青色等）が付された強調表示線５００が付与されている。
【０１２１】
このように本実施形態においては、コード表示領域２０１において対象ソースコードに含まれる関数を指定することによって、当該関数を表す関数シンボルを含む対象ダイアグラムをダイアグラム表示領域２０２に表示することができるとともに、コード表示領域２０１に表示されている当該関数が記述されている部分を強調表示することができる。
【０１２２】
次に、ユーザは、コード表示領域２０１に表示されているｍａｉｎ関数内に記述されている他の関数を指定する（つまり、当該他の関数に対して関数追加操作を行う）ことができる。図１２に示すコード表示領域２０１においては、例えばｍａｉｎ関数に含まれるｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数が指定される。
【０１２３】
図１２に示すコード表示領域２０１においてｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数が指定された場合、図１３に示すように、表示画面２００に含まれるコード表示領域２０１には、当該ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数の定義が記述されている部分が表示される（つまり、コード表示領域２０１の表示がｍａｉｎ関数からｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数に遷移する）。なお、図１３においては、ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数の一部のみが表示されている。
【０１２４】
ここで、図８に示すステップＳ３〜Ｓ６の処理が実行される。この場合におけるステップＳ３においては、ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数が追加される対象ダイアグラムを識別するためのダイアグラムＩＤ、ｍａｉｎ関数を識別するための関数ＩＤ（呼び出し元関数ＩＤ）及び当該ｔｏｙｍｏｄｅｌ  ｅｘｅｃ関数を識別するための関数ＩＤ（呼び出し先関数ＩＤ）を含むダイアグラム情報が生成される。
【０１２５】
また、ステップＳ４においては、ステップＳ３において生成されたダイアグラム情報に含まれるダイアグラムＩＤ、付加内容「強調」及びｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数を識別するための関数ＩＤ（位置情報）を含むダイアグラム付加情報が生成される。
【０１２６】
ステップＳ５においては、ステップＳ３において生成されたダイアグラム情報及びステップＳ４において生成されたダイアグラム付加情報に基づいて対象ダイアグラムが生成される。
【０１２７】
なお、この場合におけるステップＳ５においては、ダイアグラム情報に含まれる呼び出し元関数ＩＤによって識別されるｍａｉｎ関数を表す関数シンボル（以下、ｍａｉｎ関数シンボルと表記）が生成される。また、ステップＳ５においては、ダイアグラム情報に含まれる呼び出し先関数ＩＤによって識別されるｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数を表す関数シンボル（以下、ｔｏｙｍｏｄｅｌ  ｅｘｅｃ関数シンボルと表記）が生成される。なお、各関数シンボルについては上記した通りであるため、ここではその詳しい説明を省略する。
【０１２８】
更に、ステップＳ５においては、ｍａｉｎ関数（呼び出し元関数）とｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数（呼び出し先関数）との呼び出し関係を表す対象ダイアグラムが生成される。
【０１２９】
これにより、ｍａｉｎ関数シンボル及びｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数シンボルを含み、かつ、ｍａｉｎ関数とｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数との呼び出し関係を表す対象ダイアグラムが生成される。
【０１３０】
ステップＳ５において生成された対象ダイアグラムは、ステップＳ６においてダイアグラム表示領域２０２に表示される。
【０１３１】
上記したように図８に示すステップＳ３〜Ｓ６の処理が実行された場合、ステップＳ７及びＳ８の処理が実行される。この場合におけるステップＳ７においては、対象ソースコードを識別するためのソースコードＩＤ、付加内容「強調」及び位置情報「２２（行）〜４２（行）」を含むコード付加情報が生成される。なお、図１３には示されていないが、位置情報「２２〜４２」は、ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数の定義がソースコード中の２２行目〜４２行目に記述されていることを示している。また、ステップＳ８においては、ステップＳ７において生成されたコード付加情報がコード表示領域に２０１に表示されている対象ソースコードに反映される。
【０１３２】
ここで、図１４は、上記したようにｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数がユーザによって指定されることによってステップＳ３〜Ｓ８の処理が実行された後の表示画面２００の一例を示す。
【０１３３】
図１４に示すように、表示画面２００に含まれるダイアグラム表示領域２０２には、ｍａｉｎ関数シンボル４００及びｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数シンボル６００を含む対象ダイアグラムが表示されている。なお、ｍａｉｎ関数シンボル４００は、上記した図１２に示すダイアグラム表示領域２０２に表示されているｍａｉｎ関数シンボル４００と同一の関数シンボルである。
【０１３４】
一方、ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数シンボル６００は、ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数全体を表現するメインシンボル６００ａ及び当該ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数を構成するコードブロックの各々を表すサブシンボル６００ｂ〜６００ｆから構成されている。
【０１３５】
なお、図１４に示すダイアグラム表示領域２０２に表示されている対象ダイアグラムにおいて、ｍａｉｎ関数シンボル４００（メインシンボル４００ａ及びサブシンボル４００ｂ）及びｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数シンボル６００（メインシンボル６００ａ及びサブシンボル６００ｂ〜６００ｆ）は、上記したダイアグラム付加情報に基づいて強調表示されている。
【０１３６】
更に、ダイアグラム表示領域２０２に表示されている対象ダイアグラムには、ｍａｉｎ関数シンボルとｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数シンボルとを接続する呼び出し線（ｍａｉｎ関数シンボルからｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数への矢印）７００が含まれている。これにより、対象ダイアグラムにおいては、ｍａｉｎ関数が呼び出し元関数であり、ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数が呼び出し先関数であるという呼び出し関係を表すことができる。
【０１３７】
ここで、上記した図１０及び図１２に示すコード表示領域２０１に表示されているｍａｉｎ関数において、ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数は、当該ｍａｉｎ関数を構成するｉｆ文に相当するコードブロック以外の部分に含まれている。この場合、ｍａｉｎ関数とｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数との接続関係を表す呼び出し線７００は、図１４に示すようにｍａｉｎ関数シンボル４００のメインシンボル４００ａ（サブシンボル４００ｂの下）に接続されている。
【０１３８】
すなわち、本実施形態において、呼び出し元関数と呼び出し先関数との呼び出し関係を表す呼び出し線（矢印）は、当該呼び出し元関数内の呼び出し先関数が記述されている位置に対応する位置（メインシンボルまたはサブシンボル）に接続される。例えば呼び出し先関数が呼び出し元関数を構成するコードブロック内に記述されている場合には、当該呼び出し元関数と呼び出し先関数との呼び出し関係を表す呼び出し線は、当該コードブロックを表すサブシンボルに接続される。
【０１３９】
ここでは、呼び出し線の呼び出し元関数側の接続について説明したが、呼び出し先関数側において、当該呼び出し線は、例えば図１４に示すように呼び出し先関数名等と接続されればよい。
【０１４０】
また、ダイアグラム表示領域２０２に表示される対象ダイアグラムには、インジケータ８００が更に含まれていてもよい。このインジケータ８００は、コード表示領域２０１に表示されている対象ソースコードの部分を対象ダイアグラムにおいて表している。換言すれば、コード表示領域２０１に対象ソースコードの一部分として関数が表示されている場合、インジケータ８００は、当該関数を表す関数シンボルを指し示している。
【０１４１】
具体的には、例えば図１４に示すように関数シンボル６００にインジケータ８００が付与されている場合、当該インジケータ８００は、当該関数シンボル６００によって表される関数の定義が記述されている部分がコード表示領域２０１に表示されていることを表している。
【０１４２】
なお、図１４においてはインジケータ８００が三角形状のマークである例を示しているが、当該インジケータ８００は他の形状を有していてもよい。また、インジケータ８００は、コード表示領域２０１に表示されている対象ソースコードの部分を把握することが可能であれば、図形、記号、文字または色彩等で表現されるものであってもよい。
【０１４３】
また、コード表示領域２０１において、ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数の定義が記述された部分は強調表示されている。具体的には、例えば図１４に示すコード表示領域２０１に表示されているｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数の定義が記述された部分には、強調されていることを示すために色彩が付された強調表示線９００が付与されている。
【０１４４】
ここでは、ｍａｉｎ関数及びｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数が順次指定された（つまり、ｍａｉｎ関数及びｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数がダイアグラムに追加された）場合について説明したが、当該ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数の後に更に他の関数（当該ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数内に記述されている関数）が指定された場合には、上記したステップＳ３〜Ｓ８の処理と同様の処理が実行される。このような処理が繰り返されることによって、ユーザによって指定された複数の関数の各々を表す関数シンボル（メインシンボル及びサブシンボル）を含み、かつ、当該複数の関数の間の呼び出し関係を表すダイアグラムをダイアグラム表示領域２０２に表示することができる。
【０１４５】
なお、図８に示す処理においては関数が指定される度にステップＳ３〜Ｓ８の処理が実行されるものとして説明したが、例えば複数の関数が指定された後にステップＳ３〜Ｓ８の処理が実行される構成としてもよい。なお、ステップＳ３〜Ｓ８の処理が実行されるタイミングについてはユーザによって指示されればよい。
【０１４６】
具体的には、図１５に示すように、上記したｍａｉｎ関数が追加されたダイアグラムがダイアグラム表示領域２０２に表示された後、コード表示領域２０１においてｍａｉｎ関数内に記述されているｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数、ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数内に記述されているｔｏｙ＿ｃａｌｌ関数、ｔｏｙ＿ｃａｌｌ関数内に記述されているｇｅｔ＿ｆｌａｇ関数が順次指定されたものとする。なお、ユーザによって指定された関数の各々と当該関数の各々が指定された順番（つまり、途中経路の関数）はコードリーディング支援装置１０内で保持（記憶）される。ｇｅｔ＿ｆｌａｇ関数が指定された後に、例えばダイアグラムを表示（生成）する旨がユーザによって指示された場合、図８に示すステップＳ３〜Ｓ８の処理が実行される。この場合、ダイアグラム表示領域２０２においては、ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数、ｔｏｙ＿ｃａｌｌ関数及びｇｅｔ＿ｆｌａｇ関数の各々を表す関数シンボル（ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数シンボル、ｔｏｙ＿ｃａｌｌ関数シンボル及びｇｅｔ＿ｆｌａｇ関数シンボル）を含むダイアグラムがダイアグラム表示領域２０２に表示される。また、このダイアグラムにおいては、ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数を呼び出し元関数、ｔｏｙ＿ｃａｌｌ関数を呼び出し先関数とする呼び出し関係を表す呼び出し線（矢印）が表示される。同様に、このダイアグラムにおいては、ｔｏｙ＿ｃａｌｌ関数を呼び出し元関数、ｇｅｔ＿ｆｌａｇ関数を呼び出し先関数とする呼び出し関係を表す呼び出し線（矢印）が表示される。
【０１４７】
本実施形態において、ユーザは、当該ユーザが順次指定した関数を指定することによってダイアグラム表示領域２０２に表示されるダイアグラムを参照することによって、例えば対象ソースコード（プログラム）に基づくコンピュータの特定の動作（振る舞い）を読解することが可能となる。
【０１４８】
なお、本実施形態においてはダイアグラム表示領域２０２にダイアグラムが表示されるものとして説明したが、表示画面２００には、当該ダイアグラムを表示する他の領域が配置されていてもよい。具体的には、例えば図１６に示すように、ダイアグラムを全体的に表示するための領域（第３表示領域）２０４が表示画面２００に更に配置されていてもよい。この場合、ダイアグラム表示領域２０２においては、ダイアグラム全体を表示する領域２０４において指定されたダイアグラムの一部分が拡大して表示されるようにしてもよい。なお、ダイアグラム表示領域２０２においてダイアグラム全体が表示され、領域２０４においてダイアグラムの一部分が表示されるようにしてもよい。更に、領域２０４の表示及び非表示がユーザによって選択可能なように構成されていてもよい。
【０１４９】
また、上記したダイアグラム表示処理において生成されたダイアグラム情報及びダイアグラム付加情報はダイアグラム格納部１２に格納される。このため、ダイアグラム格納部１２に格納されたダイアグラム情報及びダイアグラム付加情報を上記したファイル選択領域２０３において指定することによって、コードリーディング装置１０を使用してユーザが作成（表示）したダイアグラムを他のユーザが参照（閲覧）するようなことも可能となる。
【０１５０】
更に、本実施形態においては、ユーザによって指定された関数がダイアグラムに追加されるものとして説明したが、例えば図１５に示すようにｍａｉｎ関数がユーザによって指定された場合に、当該ｍａｉｎ関数内に記述されているｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数、ｔｏｙｍｏｄｅｌ＿ｅｘｅｃ関数内に記述されているｔｏｙ＿ｃａｌｌ関数、ｔｏｙ＿ｃａｌｌ関数内に記述されているｇｅｔ＿ｆｌａｇ関数が自動的にダイアグラムに追加される構成とすることも可能である。このような構成の場合、自動的にダイアグラムに追加された関数（つまり、候補）の中からダイアグラムへの追加を承認する関数をユーザが選択するようにしてもよい。
【０１５１】
また、１つの関数内に複数の関数が記述されている場合には、複数の呼び出し線を介して、当該１つの関数（呼び出し元関数）が複数の呼び出し先関数と接続されていてもよい。
【０１５２】
また、上記したダイアグラム表示処理においては関数指定操作が行われる度に当該関数指定操作において指定された関数を表す関数シンボルを生成するものとして説明したが、対象ソースコードに含まれる関数の各々を表す関数シンボルは、予め生成され、コードリーディング支援装置１０内で管理されても構わない。
【０１５３】
次に、図１７のフローチャートを参照して、コメント付加処理の処理手順の一例について説明する。なお、本実施形態におけるコメント付加処理は、付加内容としてコメントを含む付加情報（コード付加情報及びダイアグラム付加情報）を編集（生成及び削除等）する処理をいう。
【０１５４】
ここでは、上記したダイアグラム表示処理が実行されることによって、コード表示領域２０１には対象ソースコードが表示され、ダイアグラム表示領域２０２にはユーザによって指定された関数（関数シンボル）が追加された対象ダイアグラムが表示されているものとする。
【０１５５】
ここで、本実施形態において、ユーザは、例えばコード表示領域２０１に表示されている対象ソースコードに対してコメントを付加することができる。なお、対象ソースコードに対するコメントは、コードが記述されている行単位で付加可能である。
【０１５６】
上記したように対象ソースコードに対してコメントを付加する場合、ユーザは、対象ソースコードのコメントを付加すべき部分をコード表示領域２０１に表示し、コメントを付加する操作（以下、コメント付加操作と表記）を行う。ユーザは、このコメント付加操作を行うことによって、対象ソースコードに対するコメントを付加（追加）することができる。なお、コメント付加操作には、コメントを付加すべき行番号を指定する操作及び当該コメントを作成する操作等が含まれる。
【０１５７】
操作受付部１５は、上記したコメント付加操作が受け付けられた（ユーザによって行われた）か否かを判定する（ステップＳ１１）。
【０１５８】
コメント付加操作が受け付けられたと判定された場合（ステップＳ１１のＹＥＳ）、編集処理部１６は、対象ソースコードに付加されるコード付加情報を生成する（ステップＳ１２）。この場合、編集処理部１６は、対象ソースコードを識別するためのソースコードＩＤ、上記したコメント付加操作においてユーザによって作成されたコメント（付加内容）及び当該コメント付加操作においてユーザによって指定された行番号（位置情報）を含むコード付加情報を生成する。ステップＳ１２において生成されたコード付加情報は、コード格納部１１に格納される。
【０１５９】
ステップＳ１２の処理が実行されると、コード表示処理部１３は、コード格納部１１に格納されたコード付加情報を、コード表示領域２０１に表示されている対象ソースコードに反映する（ステップＳ１３）。上記したコード付加情報によれば、ステップＳ１３の処理が実行されることによって、コード表示領域２０１に表示されている対象ソースコードのユーザによって指定された部分（行）にコメントが表示（付加）される。
【０１６０】
また、編集処理部１６は、ダイアグラム表示領域２０２に表示されている対象ダイアグラムに付加されるダイアグラム付加情報を生成する（ステップＳ１４）。この場合、編集処理部１６は、対象ダイアグラムを識別するためのダイアグラムＩＤ、コメント付加操作においてユーザによって作成されたコメント（付加内容）及び当該コメント付加操作においてユーザによって指定された行番号に該当するコードブロック（当該行番号に記述されたコードを含むコードブロック）を識別するためのコードブロックＩＤ（位置情報）を含むダイアグラム付加情報を生成する。なお、ユーザによって指定された行番号に該当するコードブロックが存在しない場合には、当該行番号に該当する関数を識別するための関数ＩＤがダイアグラム付加情報に含まれていてもよい。ステップＳ１４において生成されたダイアグラム付加情報は、ダイアグラム格納部１２に格納される。
【０１６１】
ステップＳ１４の処理が実行されると、ダイアグラム表示処理部１４は、ダイアグラム格納部１２に格納されたダイアグラム付加情報を、ダイアグラム表示領域２０２に表示されている対象ダイアグラムに反映する（ステップＳ１５）。上記したダイアグラム付加情報によれば、ステップＳ１５の処理が実行されることによって、ユーザによって指定された行番号に該当するサブシンボルにコメントが表示（付加）される。なお、上記したように位置情報として関数ＩＤがダイアグラム付加情報に含まれている場合には、当該関数ＩＤによって識別される関数を表す関数シンボル（を構成するメインシンボル）にコメントが付加されてもよい。
【０１６２】
上記したコメント付加処理によれば、例えば対象ソースコードに対してコメントが付加（追加）された場合に、対象ダイアグラムの該当箇所に同じコメントを表示することができる。
【０１６３】
なお、ステップＳ１１においてコメント付加操作が受け付けられていないと判定された場合（ステップＳ１１のＮＯ）、コメント付加処理は終了される。
【０１６４】
以下、上記したコメント付加処理について具体的に説明する。ここでは、図１２に示すようにコード表示領域２０１に対象ソースコード（ｍａｉｎ関数が記述されている部分）が表示されており、ダイアグラム表示領域２０２に対象ダイアグラム（ｍａｉｎ関数を表す関数シンボル４００）が表示されているものとする。
【０１６５】
この場合において、例えば対象ソースコードの８行目にコメントを付加する場合を想定する。この場合、ユーザは、入力デバイス１０６（例えば、マウスまたはキーボード）を用いて、例えば対象ソースコードの８行目にカーソルを合わせ、右クリック操作を行う。なお、この操作が上記したコメントを付加すべき行番号を指定する操作に相当する。
【０１６６】
ここで、上記したように対象ソースコードの８行目にカーソルを合わせて右クリック操作が行われた場合には、図１８に示す画面（以下、コメント作成画面と表記）が例えばポップアップ形式等で表示される。
【０１６７】
図１８に示すように、コメント作成画面１０００には、コメント作成領域１０００ａが設けられている。ユーザは、入力デバイス１０６を用いて、コメント作成領域１０００ａにおいてコメントを作成することができる。
【０１６８】
また、コメント作成画面１０００には、「ＯＫ」ボタン１０００ｂ及び「キャンセル」ボタン１０００ｃが更に設けられている。
【０１６９】
コメント作成領域１０００ａにおいてコメントが作成され、ユーザによって「ＯＫ」ボタン１０００ｂが押下された場合、コメントの作成が完了する。
【０１７０】
一方、ユーザによって「キャンセル」ボタン１０００ｃが押下された場合、コメントの作成がキャンセルされる。
【０１７１】
上記したようにコメント作成画面１０００におけるコメントの作成が完了した場合、図１７に示すステップＳ１２〜Ｓ１５の処理が実行される。この場合におけるステップＳ１２においては、対象ソースコードを識別するためのソースコードＩＤ、コメント作成画面１０００においてユーザによって作成されたコメント（付加内容）及び上記したコード表示領域２０１においてユーザによって指定された「８（行目）」（位置情報）を含むコード付加情報が生成される。
【０１７２】
ステップＳ１３においては、ステップＳ１２において生成されたコメント付加情報がコード表示領域２０１に表示されている対象ソースコードに反映される。
【０１７３】
一方、ステップＳ１４においては、対象ダイアグラムを識別するためのダイアグラムＩＤ、コメント作成画面１０００においてユーザによって作成されたコメント（付加内容）及びコード表示領域２０１においてユーザによって指定された行番号に該当するコードブロックを識別するためのコードブロックＩＤ（位置情報）を含むダイアグラム情報が生成される。
【０１７４】
ステップＳ１５においては、ステップＳ１４において生成されたダイアグラム情報がダイアグラム表示領域２０２に表示されている対象ダイアグラムに反映される。
【０１７５】
ここで、図１９は、上記したステップＳ１２〜Ｓ１５の処理が実行された後の表示画面２００の一例を示す。
【０１７６】
図１９に示すように、コード表示領域２０１に表示されている対象ソースコードの５行目には、ユーザによって作成されたコメントが付加されている。
【０１７７】
また、ダイアグラム表示領域２０２に表示されている対象ダイアグラムに含まれるｍａｉｎ関数シンボル４００に含まれるサブシンボル４００ｂには、ユーザによって作成されたコメントが付加されている。
【０１７８】
このようにコード表示領域２０１において対象ソースコードのユーザによって指定された位置（行）にコメントが付加された場合には、対象ダイアグラムの該当箇所にも同様のコメントが付加される。
【０１７９】
本実施形態においては、対象ソースコードに対してコメントが付加された場合に対象ダイアグラムに当該コメントが反映されるものとして説明したが、例えば対象ダイアグラムに対してユーザがコメントを付加することも可能である。この場合には、対象ダイアグラムに対して付加されたコメントが対象ソースコードに反映されるものとする。
【０１８０】
なお、対象ダイアグラムに対するコメントは例えば当該対象ダイアグラムを構成するメインシンボルまたはサブシンボルに対して付加することが可能である。これによれば、例えば対象ダイアグラムを構成するメインシンボルに対してコメントが付加された場合には、対象ソースコード中の当該メインシンボル（関数シンボル）によって表される関数が記述されている任意の行等に当該コメントが表示（付加）されればよい。一方、例えば対象ダイアグラムを構成するサブシンボルに対してコメントが付加された場合には、対象ソースコード中の当該サブシンボルによって表されるコードブロックが記述されている任意の行等に当該コメントが表示（付加）されればよい。
【０１８１】
また、本実施形態においてはコメントが付加される場合について説明したが、当該コメントを削除することも可能である。コメントが削除される場合には、当該コメントを付加内容として含む付加情報（コード付加情報及びダイアグラム付加情報）が削除され、当該付加情報の削除が対象ソースコード及び対象ダイアグラムに反映されればよい。
【０１８２】
次に、図２０のフローチャートを参照して、強調表示変更処理の処理手順の一例について説明する。なお、本実施形態における強調表示変更処理は、付加内容として強調を含む付加情報（コード付加情報及びダイアグラム付加情報）を編集（生成及び削除等）する処理をいう。
【０１８３】
ここでは、上記したダイアグラム表示処理が実行されることによって、コード表示領域２０１には対象ソースコードが表示され、ダイアグラム表示領域２０２にはユーザによって指定された関数（関数シンボル）が追加された対象ダイアグラムが表示されているものとする。
【０１８４】
ここで、ユーザは、例えばコード表示領域２０１に表示されている対象ソースコードに対して強調表示の有無を変更することができる。強調表示の有無は、例えば関数を構成するコードブロック単位で変更することが可能である。
【０１８５】
なお、上記した図８に示すダイアグラム表示処理等において説明したように、ユーザによって指定された関数が対象ダイアグラムに追加された場合、対象ソースコードの当該関数が記述されている部分及び対象ダイアグラムに含まれる当該関数を表す関数シンボルはそれぞれ強調表示される。このため、ここでは対象ソースコード（の強調表示されている部分）の強調表示を解除する場合について主に説明する。
【０１８６】
上記したように対象ソースコードの強調表示を解除する場合、ユーザは、対象ソースコードの強調表示されている部分をコード表示領域２０１に表示し、当該強調表示を解除する操作（以下、強調解除操作と表記）を行う。ユーザは、この強調解除操作を行うことによって、対象ソースコードに対する強調表示を解除することができる。なお、強調解除操作には、強調表示を解除するコードブロック（が記述されている行番号）を指定する操作等が含まれる。
【０１８７】
操作受付部１５は、上記した強調解除操作が受け付けられた（つまり、ユーザによって行われた）か否かを判定する（ステップＳ２１）。
【０１８８】
強調解除操作が受け付けられたと判定された場合（ステップＳ２１のＹＥＳ）、編集処理部１６は、対象ソースコードに付加されるコード付加情報を削除する（ステップＳ２２）。この場合、編集処理部１６は、対象ソースコードを識別するためのソースコードＩＤ、付加内容「強調」及び強調解除操作においてユーザによって指定されたコードブロックが記述されている行番号（位置情報）を含むコード付加情報をコード格納部１１から削除する。
【０１８９】
ステップＳ２２の処理が実行されると、コード表示処理部１３は、当該ステップＳ２２におけるコード付加情報の削除をコード表示領域２０１に表示されている対象ソースコードに反映する（ステップＳ２３）。上記したコード付加情報の削除によれば、ステップＳ２３の処理が実行されることによって、コード表示領域２０１に表示されている対象ソースコードのユーザによって指定されたコードブロックの部分の強調表示が解除される。
【０１９０】
また、編集処理部１６は、ダイアグラム表示領域２０２に表示されている対象ダイアグラムに付加されるダイアグラム付加情報を削除する（ステップＳ２４）。この場合、編集処理部１６は、対象ダイアグラムを識別するためのダイアグラムＩＤ、付加内容「強調」及び強調解除操作においてユーザによって指定されたコードブロックを識別するためのコードブロックＩＤ（位置情報）を含むダイアグラム付加情報をダイアグラム格納部１２から削除する。なお、ユーザによって指定されたコードブロックを識別するためのコードブロックＩＤは、当該ユーザによって指定されたコードブロックが記述されている行番号及び上記したコード格納部１１に格納されているコード解析情報（コードブロック情報）に基づいて特定することができる。
【０１９１】
ステップＳ２４の処理が実行されると、ダイアグラム表示処理部１４は、当該ステップＳ２４におけるダイアグラム付加情報の削除をダイアグラム表示領域２０２に表示されている対象ダイアグラムに反映する（ステップＳ２５）。上記したダイアグラム付加情報の削除によれば、ステップＳ２５の処理が実行されることによって、ダイアグラム表示領域２０２に表示されている対象ダイアグラムのユーザによって指定されたコードブロックを表すサブシンボルの強調表示が解除される。
【０１９２】
上記した強調表示変更処理によれば、例えば対象ソースコード（コードブロック）の強調表示が解除（強調表示の有無が変更）された場合に、対象ダイアグラムの該当箇所（当該コードブロックを表すサブシンボル）の強調表示も同様に解除する（強調表示の有無を変更する）ことができる。
【０１９３】
なお、ステップＳ２１において強調解除操作が受け付けられていないと判定された場合（ステップＳ２１のＮＯ）、強調表示変更処理は終了される。
【０１９４】
以下、上記した強調表示変更処理について具体的に説明する。ここでは、図１２に示すようにコード表示領域２０１に対象ソースコード（ｍａｉｎ関数が記述されている部分）が表示されており、ダイアグラム表示領域２０２に対象ダイアグラム（ｍａｉｎ関数を表す関数シンボル４００）が表示されているものとする。
【０１９５】
この場合において、例えば対象ソースコードの８行目〜１０行目に記述されているコードブロックの強調表示を解除する場合を想定する。この場合、ユーザは、入力デバイス１０６（例えば、マウスまたはキーボード）を用いて、対象ソースコードの８行目〜１０行目を指定する操作を行う。
【０１９６】
この場合、上記した図２０に示すステップＳ２２〜Ｓ２３の処理が実行される。この場合におけるステップＳ２２においては、対象ソースコードを識別するためのソースコードＩＤ、付加内容「強調」及びユーザによって選択（指定）された「８（行目）〜１０（行目）」（位置情報）を含むコード付加情報がコード格納部１１から削除される。
【０１９７】
具体的には、ステップＳ２２の処理が実行される前には、対象ソースコードを識別するためのソースコードＩＤ、付加内容「強調」及び位置情報「５（行目）〜１３（行目）」を含むコード付加情報がコード格納部１１に格納されている。このため、上記したコード付加情報がコード格納部１１から削除された場合には、コード格納部１１には、対象ソースコードを識別するためのソースコードＩＤ、付加内容「強調」及び位置情報「５（行目）〜７（行目）」を含むコード付加情報と、対象ソースコードを識別するためのソースコードＩＤ、付加内容「強調」及び位置情報「１１（行目）〜１３（行目）」を含むコード付加情報とが格納された状態となる。
【０１９８】
ステップＳ２３においては、ステップＳ２２におけるコメント付加情報の削除がコード表示領域２０１に表示されている対象ソースコードに反映される。
【０１９９】
一方、ステップＳ２４においては、対象ダイアグラムを識別するためのダイアグラムＩＤ、付加内容「強調」及びユーザによって選択された８行目〜１０行目に記述されているコードブロックを識別するためのコードブロックＩＤ（位置情報）を含むダイアグラム情報がダイアグラム格納部１２から削除される。
【０２００】
ステップＳ２５においては、ステップＳ２４におけるダイアグラム付加情報の削除がダイアグラム表示領域２０２に表示されている対象ダイアグラムに反映される。
【０２０１】
ここで、図２１は、上記したステップＳ２２〜Ｓ２５の処理が実行された後の表示画面２００の一例を示す。
【０２０２】
図２１に示すように、コード表示領域２０１に表示されている対象ソースコードの８行目〜１０行目においては、強調表示されていることを示す強調表示線５００が削除されている（つまり、強調表示が解除されている）。
【０２０３】
また、ダイアグラム表示領域２０２に表示されている対象ダイアグラムに含まれるｍａｉｎ関数シンボル４００に含まれるサブシンボル４００ｂには、強調表示されていることを示す色彩が付されていない（つまり、強調表示が解除されている）。
【０２０４】
このように本実施形態においては、対象ソースコードのユーザによって指定（選択）された位置の強調表示が解除された場合には、対象ダイアグラムの該当箇所の強調表示も同様に解除される。
【０２０５】
なお、ここでは便宜的に対象ソースコードの８行目〜１０行目の強調表示が解除される場合について説明したが、一般的には所定の振る舞いにおいて動作しない箇所の強調表示等がユーザの操作に応じて解除される。
【０２０６】
本実施形態においては強調表示が解除される場合について主に説明したが、例えば対象ソースコードに対して強調表示が設定された場合に、当該強調表示の設定が対象ダイアグラムに反映される構成であってもよい。この場合には、付加内容として強調表示を含む付加情報（コード付加情報及びダイアグラム付加情報）が生成され、当該付加情報が対象ソースコード及び対象ダイアグラムに反映されればよい。
【０２０７】
また、本実施形態においては対象ソースコードに対する強調表示の有無が変更された場合に当該強調表示の有無の変更が対象ダイアグラムに反映されるものとして説明したが、例えば対象ダイアグラムに対する強調表示の有無が変更された場合に当該強調表示の有無の変更が対象ソースコードに反映される構成としてもよい。
【０２０８】
上記したように本実施形態においては、ソースコードを表示するコード表示領域２０１（第１表示領域）及びソースコードの少なくとも一部を表すダイアグラムを表示するダイアグラム表示領域２０２（第２表示領域）が配置された画面を表示し、当該ダイアグラム表示領域２０２に表示されているダイアグラムを編集（作成）する。なお、本実施形態においては、コード表示領域２０１に表示されたソースコードに含まれる複数の関数のうちユーザによって指定された関数（を表す関数シンボル）をダイアグラムに追加することができる。
【０２０９】
一般的なコードリーディングを支援するツールにおいては例えばユーザ（開発者）が図示したくない要素が表示されてしまう等、当該ユーザの意図を反映することが困難であるのに対して、本実施形態においては、上記した構成により、ユーザの意図するダイアグラムを作成及び表示することができるため、コードリーディングを適切に支援することが可能となる。
【０２１０】
また、本実施形態において、コード表示領域２０１に表示されたソースコードのユーザによって指定された関数が記述されている部分は強調表示される。このような構成によれば、ユーザは、ソースコードに含まれる複数の関数のうち、ダイアグラムに追加された関数を容易に判別することができる。
【０２１１】
更に、本実施形態において、上記した関数シンボルはユーザによって指定された関数を構成するコードブロックを表すサブシンボルを含む。また、関数シンボルに含まれるサブシンボルの位置は、関数シンボルによって表される関数内に記述されている当該サブシンボルによって表されるコードブロックの位置に基づいている。このような構成によれば、ユーザは、当該ユーザによって指定された関数を構成するコードブロックの位置関係等をダイアグラムにおいて容易に把握することが可能となる。
【０２１２】
更に、本実施形態においては、例えば第１関数が指定された場合に当該第１関数を表す第１関数シンボルがダイアグラムに追加され、当該第１関数に含まれる第２関数が指定された場合に当該第２関数を表す第２関数シンボルがダイアグラムに追加される。また、第２関数が指定された場合には、ソースコードの当該第２関数が記述されている部分がコード表示領域２０１に表示される。本実施形態においては、このような構成により、各関数内に記述されている関数（つまり、呼び出し先関数）をコード表示領域２０１において順次指定することができる。
【０２１３】
また、本実施形態において、ダイアグラムは、上記した第１関数と第２関数との間の呼び出し関係を表す。具体的には、第１関数と第２関数との間の呼び出し関係は、第１関数シンボルと第２関数シンボルとを接続する呼び出し線（矢印）によって表すことができる。本実施形態においては、このような構成により、ユーザは、ダイアグラムにおいて複数の関数の間の呼び出し関係を容易に把握することが可能となる。
【０２１４】
更に、本実施形態において、第１関数と第２関数との間の呼び出し関係を表す呼び出し線は、第１関数を構成するコードブロックのうち第２関数が記述されているコードブロックを表すサブシンボルと第２関数シンボルとを接続する。このような構成によれば、ダイアグラムにおいて、第１関数において第２関数が記述されている位置（コードブロック）を容易に把握することが可能となる。
【０２１５】
なお、本実施形態においてコード表示領域２０１にはソースコードの一部分のみが表示されるが、ダイアグラムは、ソースコードに含まれる関数がコード表示領域２０１に表示されている場合に当該ダイアグラムに追加されている当該関数を表す関数シンボルを指し示すインジケータを含む。このようなインジケータによれば、コード表示領域２０１に表示されている内容に対応するダイアグラムの該当箇所（関数シンボル等）を容易に把握することが可能となる。
【０２１６】
また、本実施形態においては、表示画面２００にはダイアグラムを全体的に表示する領域２０４が更に配置されていてもよい。この場合、ダイアグラム表示領域２０２には、例えばユーザによって指定されたダイアグラムの一部が拡大して表示される。このような構成によれば、ダイアグラムの細部を容易に確認することができる。
【０２１７】
更に、本実施形態においては、コード表示領域２０１に表示されたソースコードに対するコメントが作成された場合に、当該コメントをダイアグラム表示領域２０２に表示されているダイアグラムにも反映する。同様に、ダイアグラム表示領域２０２に表示されたダイアグラムに対するコメントが作成された場合に、当該コメントをコード表示領域２０１に表示されているソースコードにも反映する。本実施形態においては、このような構成により、例えばソースコード及びダイアグラムの一方に対して付加されたコメントであっても、当該コメントをソースコード及びダイアグラムの両方で確認することが可能となる。
【０２１８】
また、本実施形態においては、コード表示領域２０１に表示されたソースコードに対する強調表示の有無が変更された場合に、当該強調表示の有無の変更をダイアグラム表示領域２０２に表示されているダイアグラムにも反映する。同様に、ダイアグラム表示領域２０２に表示されたダイアグラムに対する強調表示の有無が変更された場合に、当該強調表示の有無の変更をコード表示領域２０１に表示されているソースコードにも反映する。本実施形態においては、このような構成により、例えばソースコード及びダイアグラムの一方において強調表示の有無が変更された場合であっても、当該変更内容をソースコード及びダイアグラムの両方で確認することが可能となる。
【０２１９】
すなわち、本実施形態においては、ソースコードのビューア（エディタ）としての機能とダイアグラムのエディタとしての機能とが連携して動作することによって、ユーザの利便性を向上させることができる。
【０２２０】
なお、上記した本実施形態に係るコードリーディング装置１０は、例えばレガシーコードと称される仕様が不明なソフトウェアを運用及び保守する際に利用することができる。具体的には、このようなソフトウェア（ソースコード）の内容を理解すること（コードリーディング）は困難である場合が多いが、本実施形態に係るコードリーディング装置１０を利用し、ユーザの意図が反映されたダイアグラムを参照して特定の動作（振る舞い）を確認することによって、当該コードリーディングの困難性を緩和することが可能となる。
【０２２１】
なお、本実施形態においては、コードリーディング支援装置１０がコード格納部１１及びダイアグラム格納部１２を含むものとして説明したが、当該コード格納部１１（に格納されているコード解析情報及びコード付加情報）及びダイアグラム格納部１２（に格納されているダイアグラム情報及びダイアグラム付加情報）の少なくとも一部がコードリーディング支援装置１０とは異なる外部装置で管理されていてもよい。このような構成の場合には、コード格納部１１またはダイアグラム格納部１２に格納されている情報が必要に応じて外部装置から受信されればよい。
【０２２２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。  
【符号の説明】
【０２２３】
１０…コードリーディング支援装置（電子計算機）、１１…コード格納部、１２…ダイアグラム格納部、１３…コード表示処理部、１４…ダイアグラム表示処理部、１５…操作受付部、１６…編集処理部、１０１…ＣＰＵ、１０２…不揮発性メモリ、１０３…主メモリ、１０４…ＢＩＯＳ−ＲＯＭ、１０５…システムコントローラ、１０６…入力デバイス、１０７…表示デバイス、１０８…ＥＣ。
【図１】
2020091766.tif 000003
【図２】
2020091766.tif 000004
【図３】
2020091766.tif 000005
【図４】
2020091766.tif 000006
【図５】
2020091766.tif 000007
【図６】
2020091766.tif 000008
【図７】
2020091766.tif 000009
【図８】
2020091766.tif 000010
【図９】
2020091766.tif 000011
【図１０】
2020091766.tif 000012
【図１１】
2020091766.tif 000013
【図１２】
2020091766.tif 000014
【図１３】
2020091766.tif 000015
【図１４】
2020091766.tif 000016
【図１５】
2020091766.tif 000017
【図１６】
2020091766.tif 000018
【図１７】
2020091766.tif 000019
【図１８】
2020091766.tif 000020
【図１９】
2020091766.tif 000021
【図２０】
2020091766.tif 000022
【図２１】
2020091766.tif 000023