(57)【要約】【課題】各コンポーネントが共通のデータを扱う特定のコンポーネントを経由してデータをやり取りするソフトウェアであっても、各コンポーネント間の繋がりを理解しやすく可視化するソフトウェア構造可視化装置を提供する。【課題を解決するための手段】本発明におけるソフトウェア構造可視化装置は、ソフトウェアの構文を解析する構文解析部と、構文解析部によって解析された構文の解析結果を基にソフトウェアの構造を認識するソフトウェア構造認識部と、ソフトウェア構造認識部によって認識された構造とソフトウェアの命名規則を基に構造で使用される複数のＩ／Ｆを関連付けるＩ／Ｆ関連付け部と、Ｉ／Ｆ関連付け部によって関連付けられた複数のＩ／Ｆを１つのＩ／Ｆに置き換えて構造を変換する構造変換部と、構造変換部によって変換された構造の情報を提示する構造情報提示部とを備える。【選択図】図１
2015138356.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの構文を解析する構文解析部と、
前記構文解析部によって解析された前記構文の解析結果を基に前記ソフトウェアの構造を認識するソフトウェア構造認識部と、
前記ソフトウェア構造認識部によって認識された前記構造と前記ソフトウェアの命名規則を基に前記構造で使用される複数のＩ／Ｆを関連付けるＩ／Ｆ関連付け部と、
前記Ｉ／Ｆ関連付け部によって関連付けられた複数のＩ／Ｆを１つのＩ／Ｆに置き換えて前記構造を変換する構造変換部と、
前記構造変換部によって変換された前記構造の情報を提示する構造情報提示部と
を備える、ソフトウェア構造可視化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア構造可視化装置に関する。
【背景技術】
【０００２】
従来、ソースコードを解析して、関数の呼び出し関係と関数とモジュールとの包含関係から設定したモジュール単位で表したモジュール間呼出関連図を作成するソースコード解析機器がある（例えば、特許文献１を参照）。
【０００３】
また、入力されたプログラムのソースコードを標準仕様に従って構文解析し、解析結果から再構築したプログラムの構造情報をドキュメントとして生成するドキュメント生成手段がある（例えば、特許文献２を参照）。
【０００４】
また、ソースコードを解析して構文情報を出力する構文解析手段がある（例えば、特許文献３を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２９３４８６号公報
【特許文献２】特開２００９−０８０６８１号公報
【特許文献３】特開２０１３−１５６７８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記従来技術においては、各コンポーネントが共通のデータを扱う特定のコンポーネントを経由してデータをやり取りするソフトウェアの構造を可視化する場合に、各コンポーネントが特定のコンポーネントに繋がっている構造図が作成されてしまう場合があった。
【０００７】
そこで、本発明は、各コンポーネントが共通のデータを扱う特定のコンポーネントを経由してデータをやり取りするソフトウェアであっても、各コンポーネント間の繋がりを理解しやすく可視化するソフトウェア構造可視化装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明におけるソフトウェア構造可視化装置は、ソフトウェアの構文を解析する構文解析部と、前記構文解析部によって解析された前記構文の解析結果を基に前記ソフトウェアの構造を認識するソフトウェア構造認識部と、前記ソフトウェア構造認識部によって認識された前記構造と前記ソフトウェアの命名規則を基に前記構造で使用される複数のＩ／Ｆを関連付けるＩ／Ｆ関連付け部と、前記Ｉ／Ｆ関連付け部によって関連付けられた複数のＩ／Ｆを１つのＩ／Ｆに置き換えて前記構造を変換する構造変換部と、前記構造変換部によって変換された前記構造の情報を提示する構造情報提示部とを備える。
【発明の効果】
【０００９】
本発明の実施形態によれば、各コンポーネントが共通のデータを扱う特定のコンポーネントを経由してデータをやり取りするソフトウェアであっても、各コンポーネント間の繋がりを理解しやすく可視化するソフトウェア構造可視化装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】ソフトウェア構造可視化装置の構成の一例を示すブロック図
【図２】ソフトウェア構造可視化装置の動作の一例を示すフローチャート
【図３】ソースコード上のコンポーネント間の関係の一例を示す図
【図４】コンポーネント間のソースコード上のデータの授受の一例を示す図
【図５】ソースコード上のデータの授受を直接Ｉ／Ｆに変換した一例を示す図
【図６】図示されるコンポーネント間の関係の一例を示す図
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の一例である実施の形態を説明する。
【００１２】
先ず、図１および図２を用いて、ソフトウェア構造可視化装置の構成と動作を説明する。図１は、ソフトウェア構造可視化装置の構成の一例を示すブロック図である。図２は、図１で説明するソフトウェア構造可視化装置の動作の一例を示すフローチャートである。
【００１３】
図１において、ソフトウェア構造可視化装置１は、構文解析部１１、ソフトウェア構造認識部１２、Ｉ／Ｆ（Interface）関連付け部１３、構造変換部１４、および構造情報提示部１５の各機能を備える。ソフトウェア構造可視化装置１の各機能は、図２におけるそれぞれのステップ（Ｓ１〜Ｓ５）における動作を行う。
【００１４】
構文解析部１１は、入力されたソースコードの構文を解析する（Ｓ１）。ソースコードの構文の解析は、例えば、ソースコードからソフトウェアのコンポーネントを特定する記述を抽出する。コンポーネントとは、ソフトウェアの構成単位であって、例えば、フォルダ、ソースファイル、関数、またはそれらが集合したものである。本実施形態で認識されるコンポーネントは、他のコンポーネントと、変数の参照や関数の呼び出しなどによりデータの授受を行うソフトウェアの構成単位である。構文解析部１１は、ソースコードの記述から認識したコンポーネントの解析結果をソフトウェア構造認識部１２に出力する。
【００１５】
ソフトウェア構造認識部１２は、構文解析部１１から入力されたソースコードの解析結果からソフトウェアの構造を認識する（Ｓ２）。ソフトウェアの構造の認識とは、コンポーネントと他のコンポーネントのデータやり取りによる繋がりを認識することである。ソフトウェア構造認識部１２は、例えば、一のコンポーネントと他のコンポーネントの間のデータのやり取りのためのＩ／Ｆを認識する。ソフトウェア構造認識部１２は、認識結果をソフトウェア構造情報として、Ｉ／Ｆ関連付け部１３、および構造変換部１４に出力する。
【００１６】
Ｉ／Ｆ関連付け部１３は、ソフトウェア構造認識部１２から入力されたソフトウェア構造情報に記述されたＩ／Ｆを解析して、同じデータ置き場コンポーネントを経由してデータをやり取りする複数のＩ／Ｆを関連付ける（Ｓ３）。
【００１７】
Ｉ／Ｆの解析は、例えば関数の呼び出しや変数の参照を規定した命名規則を参照する。命名規則としては、例えば、車載ソフトウェアプラットフォームの国際規格であるＡＵＴＯＳＡＲ  ＲＴＥ（Automotive Open System Architecture Runtime Environment：ＡＵＴＯＳＡＲランタイム環境）がある。ＡＵＴＯＳＡＲ  ＲＴＥは、ＡＵＴＯＳＡＲ  ＲＴＥ上で動作するアプリケーションに対して、規格化された命名規則によって共通の基板ソフトウェア（Basic Software：ＢＳＷ）を提供する。ＡＵＴＯＳＡＲ  ＲＴＥは、ハードウェアに依存しないソフトウェア環境を提供することができるため、複数のＥＣＵでの共通したソフトウェア開発やソフトウェアの再利用を可能にする。Ｉ／Ｆ関連付け部１３は、命名規則を参照して、ソフトウェア構造情報に記述された命名規則にて関連するＩ／Ｆを、関連するＩ／Ｆの集合として構造変換部１４に出力する。命令規則の代替として、Ｉ／Ｆの名称やＩ／Ｆ同士の関連の情報を利用してもよい。これらは、例えば、ソフトウェアプラットフォームにおいてＩ／Ｆを定義するコンフィグ情報によって提供される。コンフィグ情報は、例えばＸＭＬ（Extensible Mark up Language）によって記述されて提供されてもよい。
【００１８】
ここで、図３を用いて、データ置き場コンポーネントの説明をする。図３は、ソースコード上のコンポーネント間の関係の一例を示す図である。
【００１９】
図３において、コンポーネントＡ１０１、コンポーネントＢ１０２、コンポーネントＣ１０３、およびコンポーネントＤ１０４は、データ置き場コンポーネント１００を共通のデータ置き場として使用する。コンポーネントＡ１０１乃至コンポーネントＤ１０４は、データ置き場コンポーネント１００とデータをやり取りするための命名規則に従ったＩ／Ｆによって通信する。Ｉ／Ｆは、例えば、関数呼び出しや変数の参照である。
【００２０】
例えば、コンポーネントＡ１０１からコンポーネントＢ１０２にデータの送信を行う場合、ＡＵＴＯＳＡＲ  ＲＴＥでは、ＥＣＵ（Electronic Control Unit）を跨いだデータのやり取りを簡略化するためにデータ置き場コンポーネント１００を経由する規約を設けている。つまり、コンポーネントＡ１０１は、送信するデータを書き込み関数を用いて一旦データ置き場コンポーネント１００に書き込む。コンポーネントＢ１０２は、データ置き場コンポーネント１００に書き込まれたデータを読み込み関数によって読み込む。これにより、コンポーネントＡ１０１とコンポーネントＢ１０２は、例えば異なったソフトウェアベンダーによって作成される場合でも共通化されたＩ／Ｆによりデータの授受が可能となる。
【００２１】
ソースコードには、データをやり取りするコンポーネント間のＩ／Ｆが記述される。上記の例では、コンポーネントＡ１０１は書き込み関数でデータ置き場コンポーネント１００と繋がり、コンポーネントＢ１０２は読み込み関数でデータ置き場コンポーネント１００と繋がる。したがって、ソースコードに記述されたＩ／Ｆからそのままソフトウェア構造を可視化する従来の技術では、図３に示すとおり、コンポーネントＡ１０１乃至コンポーネントＤ１０４は、データ置き場コンポーネント１００と繋がることは判っても、コンポーネントＡ１０１乃至コンポーネントＤ１０４の間のやり取りは可視化されない。また、図３に示すソフトウェア構造図は、データ置き場コンポーネントなどのソフトウェアプラットフォームに依存した構造図となる。
【００２２】
再び図１および図２に戻り、Ｉ／Ｆ関連付け部１３は、ソフトウェア構造情報に記述されたＩ／Ｆである書き込み関数と読み込み関数を解析して、同じデータ置き場コンポーネントを経由してデータをやり取りするＩ／Ｆとして上記二つの関数同士を関連付ける。
【００２３】
次に構造変換部１４は、ソフトウェア構造認識部１２から入力されたソフトウェア構造情報を、Ｉ／Ｆ関連付け部１３から入力された関連付けられたＩ／Ｆの集合に従い、ソフトウェア構造情報を変換する（Ｓ４）。構造変換部１４は、関連付けられた複数のＩ／Ｆを、データの授受等を行うソフトウェアコンポーネントが直接通信する１つのＩ／Ｆに置き換え、ソフトウェア構造情報を変換する。構造変換部１４は、変換したソフトウェア構造情報を構造情報提示部１５に出力する。
【００２４】
ここで、ソフトウェア構造情報の変換の詳細を、図４および図５を用いて説明する。図４は、図３で説明したコンポーネント間のソースコード上のデータの授受の一例を示す図である。図５は、図３で説明したソースコード上のコンポーネント間の関係を、ソースコード上のデータの授受を直接Ｉ／Ｆに変換した一例を示す図である。
【００２５】
図４において、コンポーネントＡ１０１は、Ｉ／Ｆとして命令規則によって定められた関数ＩＦ（Ｘ）を使用して、データαをデータ置き場コンポーネント１００に書き込む。関数ＩＦ（Ｘ）は例えば"Rte_Write_Port1_α()"と記述される。"Rte_Write_Port1_α()"は、データ置き場１００１（Port1）に対して引数としてデータαを書き込む関数である。
【００２６】
一方、コンポーネントＢ１０２は、Ｉ／Ｆとして命令規則によって定められた関数ＩＦ（Ｙ）を使用して、データαをデータ置き場コンポーネント１００から読み込む。関数ＩＦ（Ｙ）は例えば"Rte_Read_Port1_α()"と記述される。"Rte_Read_Port1_α()"は、データ置き場１００１（Port1）から引数としてデータαを読み込む関数である。関数ＩＦ（Ｘ）および関数ＩＦ（Ｙ）の２つの関数は、データ置き場１００１（Port1）を経由したデータの授受を規定しているため、Ｉ／Ｆ関連付け部１３によって関連付けられる。
【００２７】
図５において、コンポーネントＡ１０１とコンポーネントＢ１０２間の関係は、データ置き場１００１、ならびにＩ／Ｆ関連付け部１３によって関連付けられた２つの関数である関数ＩＦ（Ｘ）および関数ＩＦ（Ｙ）を用いた関係から、置き換えられた１つの関数である関数ＩＦ（Ｚ）を用いた関係に変換される。つまり、構造変換部１４は、ソフトウエアの構造を、コンポーネントＡ１０１とコンポーネントＢ１０２が関数ＩＦ（Ｚ）を用いて直接データ授受を行う構造に変換する。
【００２８】
再び図１および図２に戻り、構造情報提示部１５は、構造変換部１４から入力された変換後のソフトウエアの構造の情報であるソフトウェア構造情報からＤＳＭ（Dependency Structure Matrix）とソフトウェア構造図を出力して、ソフトウェアコンポーネントと、ソフトウェアコンポーネント間のＩ／Ｆを図示する（Ｓ５）。
【００２９】
ＤＳＭは、ソフトウェアコンポーネント間の依存関係をマトリックスで表したものである。ＤＳＭによって、例えば、コンポーネントＡ１０１乃至コンポーネントＤ１０４の間の依存関係を可視化することができる。ソフトウェアコンポーネント間の依存関係の可視化により、ソフトウェア設計者は、ソフトウェアコンポーネントの構造の理解と保守とを容易に行うことが可能となる。
【００３０】
次に、図６を用いて、ソフトウェア構造図の詳細を説明する。図６は、構造情報提示部１５によって図示されるコンポーネント間の関係の一例を示す図である。
【００３１】
図６において、コンポーネントＡ１０１とコンポーネントＣ１０３は、コンポーネントＢ１０２のみと直接データのやり取り行うことが図示される。また、コンポーネントＤ１０４は、コンポーネントＢ１０２のみと直接データのやり取りを行うことが図示される。図６で図示するソフトウェア構造図は、データ置き場となるコンポーネント等が省略されたソフトウェア構造図となるため、ソフトウェアプラットフォームに依存しない構造図となる。従って、ソフトウェア設計者がソフトウェアを設計した際に考えたコンポーネント間のデータの授受を可視化することができる。ソフトウェア設計者は、可視化されたソフトウェア構造図によって、コンポーネントの構造の理解と保守とを容易に行うことが可能となる。
【００３２】
ソフトウェア構造図の図示は、例えば、図示しない液晶ディスプレイ等の表示装置に表示して図示することができる。また、図示しない印字装置に印字して図示することができる。
【００３３】
なお、ソフトウェア構造可視化装置１の、構文解析部１１、ソフトウェア構造認識部１２、Ｉ／Ｆ関連付け部１３、構造変換部１４、および構造情報提示部１５の一または複数の各機能は、例えば図示しないコンピュータの記憶部に記憶されてＣＰＵによって実行されるプログラムによって実現することができる。また、ソフトウェア構造可視化装置１の一または複数の各機能は、ハードウェアまたはミドルウエアによって実現することもできる。
【００３４】
以上、本発明を実施するための形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００３５】
１  ソフトウェア構造可視化装置
１１  構文解析部
１２  ソフトウェア構造認識部
１３  Ｉ／Ｆ関連付け部
１４  構造変換部
１５  構造情報提示部
１００  データ置き場コンポーネント
１０１  コンポーネントＡ
１０２  コンポーネントＢ
１０３  コンポーネントＣ
１０４  コンポーネントＤ
１００１  データ置き場
【図１】
2015138356.tif 000003
【図２】
2015138356.tif 000004
【図３】
2015138356.tif 000005
【図４】
2015138356.tif 000006
【図５】
2015138356.tif 000007
【図６】
2015138356.tif 000008