(57)【特許請求の範囲】
【請求項１】
所定のプログラムの実行ログに統計解析を実行して前記プログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、前記指標を前記関数の組み合わせと関連づけた解析情報を作成する計算部と、
前記解析情報を記憶する記憶部と、
設計対象のプログラムに含まれるソースコードのうち、前記記憶部に記憶されている前記解析情報が備える関数の組み合わせを含むソースコードを検索する検索部と、
前記検索部の検索により得られたソースコードを他のソースコードと区別し得る態様で表示する表示部と、
を有することを特徴とする設計支援装置。
【請求項２】
前記計算部は、前記設計対象のプログラムのソースコードの変更に応じて、変更されたソースコードに対応する関数の組み合わせを前記記憶部に記憶されている解析情報から抽出し、抽出した関数の組み合わせについて再度統計解析を実行し、前記表示部は、変更されたソースコードに対応する関数の組み合わせで関数を実行した場合に消費する電力量の増減を示す値を表示することを特徴とする請求項１記載の設計支援装置。
【請求項３】
前記指標は、前記関数の組み合わせを実行することにより前記プログラムに記載された関数それぞれを単独で実行した場合に消費する電力量を超える確率の大きさを識別する情報であり、前記検索部は、前記確率が一定以上の関数の組み合わせを含むソースコードを検索することを特徴とする請求項１または２に記載の設計支援装置。
【請求項４】
前記計算部は、複数の電力量について前記解析情報を作成し、
前記検索部は、電力量の入力を受け付けると、受け付けた電力量の前記解析情報を用いてソースコードを検索することを特徴とする請求項１ないし３のいずれかに記載の設計支援装置。
【請求項５】
前記計算部は、複数の電力量が設定された場合、設定された電力量毎に、少なくとも最も電力量が減少する関数の組み合わせを抽出した解析情報を作成することを特徴とする請求項１ないし４のいずれかに記載の設計支援装置。
【請求項６】
ソースコードが変更される度に変更されたソースコードと、変更されたソースコードに対応する関数の組み合わせの指標と、前記関数の組み合わせを実行した場合に消費する電力量とを関連づけて記憶した相関情報を作成する相関情報作成部と、
前記相関情報を記憶する記憶部と、
その後に変更されたソースコードの電力量を、記憶されている前記相関情報を用いて取得し、最も電力量が小さくなる関数の組み合わせを選択する選択部をさらに有し、
前記表示部は、前記選択部の選択により得られた関数の組み合わせを表示することを特徴とする請求項１ないし５のいずれかに記載の設計支援装置。
【請求項７】
ソースコードの変更に伴い電力量の低下を示す指標を、変更されたソースコードに含まれる関数の組み合わせと関連づけたコード改善情報を生成する生成部をさらに有し、
前記コード改善情報と前記解析情報とを用いて前記相関情報を作成することを特徴とする請求項６記載の設計支援装置。
【請求項８】
コンピュータが、
所定のプログラムの実行ログに統計解析を実行して前記プログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、
計算した前記指標を前記関数の組み合わせと関連づけた解析情報を作成し、
設計対象のプログラムに含まれるソースコードのうち、記憶部に記憶された前記解析情報が備える関数の組み合わせを含むソースコードを検索し、
検索により得られたソースコードを他のソースコードと区別し得る態様で表示する、
ことを特徴とする設計支援方法。
【請求項９】
コンピュータに、
所定のプログラムの実行ログに統計解析を実行して前記プログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、
計算した前記指標を前記関数の組み合わせと関連づけた解析情報を作成し、
設計対象のプログラムに含まれるソースコードのうち、記憶部に記憶された前記解析情報が備える関数の組み合わせを含むソースコードを検索し、
検索により得られたソースコードを他のソースコードと区別し得る態様で表示する、
処理を実行させることを特徴とする設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は設計支援装置、設計支援方法および設計支援プログラムに関する。
【背景技術】
【０００２】
無線通信端末装置等のハードウェアに搭載されるアプリケーションプログラムの開発時に、アプリケーションプログラムの実行に伴う消費電力を推定し、評価する技術が知られている。
【０００３】
例えば、ＣＰＵ（Central Processing Unit）の負荷率等をパラメータとして重回帰分析を行うことにより消費電力を評価する線型近似式を作成し、アプリケーションプログラムの消費電力を推定する方法が知られている。
【０００４】
また、他の方法として、開発中のアプリケーションの処理単位毎の消費電力を測定し、処理単位毎の消費電力を収集して、アプリケーションプログラムの消費電力を推定する方法が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２２５１３３号公報
【特許文献２】特開２００３−３４５４７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
アプリケーションプログラムの消費電力は、アプリケーションの実行負荷に応じて変化する。このため、線型近似式を作成してアプリケーションプログラムの消費電力を推定する方法では、負荷を変えたアプリケーションプログラムを何度か実行し、その結果に基づき線型近似式の生成に用いるパラメータを決定する。このため、パラメータの決定に時間がかかり、その結果、消費電力に関する情報の取得に時間がかかるという問題がある。
【０００７】
１つの側面では、本発明は、プログラムの消費電力に関する情報を迅速に取得することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、開示の設計支援装置が提供される。この設計支援装置は、計算部と、記憶部と、検索部と、表示部とを有している。
計算部は、所定のプログラムの実行ログに統計解析を実行してプログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、指標を関数の組み合わせと関連づけた解析情報を作成する。
【０００９】
記憶部は、解析情報を記憶する。
検索部は、設計対象のプログラムに含まれるソースコードのうち、記憶部に記憶されている解析情報が備える関数の組み合わせを含むソースコードを検索する。
【００１０】
表示部は、検索部の検索により得られたソースコードを他のソースコードと区別し得る態様で表示する。
【発明の効果】
【００１１】
一態様では、プログラムの消費電力に関する情報を迅速に取得することができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の設計支援装置を示す図である。
【図２】第２の実施の形態の設計支援装置のハードウェア構成を示す図である。
【図３】第２の実施の形態の設計支援装置の機能を示すブロック図である。
【図４】実機トレースログの一例を示す図である。
【図５】実機電流ログの一例を示す図である。
【図６】マトリックス生成部が生成するマトリックスの一例を示す図である。
【図７】ソースコード・メソッド対応情報の一例を示す図である。
【図８】アソシエーション解析の解析結果の一例を示す図である。
【図９】アソシエーション解析の解析結果をまとめた例を示す図である。
【図１０】アソシエーション解析情報の一例を示す図である。
【図１１】電力傾向情報の一例を示す図である。
【図１２】ソフトウェア改善情報の一例を示す図である。
【図１３】第２の実施の形態のアプリケーション開発部が表示する画面の一例を示す図である。
【図１４】第２の実施の形態のアプリケーション開発部が表示する画面の一例を示す図である。
【図１５】設計支援装置の全体処理を示すフローチャートである。
【図１６】設計支援装置の全体処理を示すフローチャートである。
【図１７】電力傾向テーブル生成処理を示すフローチャートである。
【図１８】ソースコード書き換え処理を示すフローチャートである。
【図１９】第３の実施の形態の設計支援装置を示す機能ブロック図である。
【図２０】コード電力相関情報の一例を示す図である。
【図２１】第３の実施の形態のアプリケーション開発部が表示する画面の一例を示す図である。
【図２２】コード電力相関テーブル生成処理を示すフローチャートである。
【図２３】コード電力相関テーブル生成処理の具体例を説明する図である。
【図２４】コード電力相関テーブルの更新処理を示すフローチャートである。
【図２５】最適ソースコード選定処理を示すフローチャートである。
【図２６】最適ソースコード選定処理を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、実施の形態の設計支援装置を、図面を参照して詳細に説明する。
＜第１の実施の形態＞
図１は、第１の実施の形態の設計支援装置を示す図である。
【００１４】
第１の実施の形態の設計支援装置（コンピュータ）１は、計算部１ａと記憶部１ｂと検索部１ｃと表示部１ｄとを有している。なお、計算部１ａ、検索部１ｃ、および表示部１ｄは、設計支援装置１が有するＣＰＵが備える機能により実現することができる。また、記憶部１ｂは、設計支援装置１が有するＲＡＭ（Random Access Memory）やハードディスクドライブ（ＨＤＤ:Hard Disk Drive）等が備えるデータ記憶領域により実現することができる。
【００１５】
計算部１ａは、統計解析を実行する対象である解析対象プログラムの実行ログ２を用いて解析対象プログラムに記載された関数それぞれを単独で実行した場合に消費する電力量を計算する。解析対象プログラムとしては、例えば、設計対象のアプリケーションプログラム等、任意のプログラムを用いることができる。また、解析対象プログラムの言語は、本実施の形態では、Ｊａｖａ（登録商標）を一例に説明する。実行ログ２には、時刻（例えば１ｍｓｅｃ）毎に実行されたＪａｖａのメソッド（method）に関するアクション（Action）が記載されている。メソッドは、プログラムに記載された関数の一例である。アクションがｓｔａｒｔである場合には、１ｍｓｅｃ毎に消費するメソッドの電流値が記載されている。
【００１６】
例えば、解析対象プログラムを実行した実機の電源電圧が３．７［Ｖ］である場合、計算部１ａは、例えば、実行ログ２を参照し、実行ログ２に記載されたメソッドＡについての電力量を１２０［ｍＡ］×３．７［Ｖ］×１［ｍｓｅｃ］＝４４４［μＷｓ］と計算する。
【００１７】
計算部１ａは、計算した電力量を用いて解析対象プログラムの各メソッドにアソシエーション解析を実行する。アソシエーション解析は、統計解析の一例である。アソシエーション解析を実行することにより、解析対象プログラムに記載されたメソッドそれぞれを単独で実行した場合に比べ、所定の組み合わせでメソッドを実行した場合に消費電力量が改善する可能性があることを示す指標を計算することができる。例えば、計算した電力量が９６２［μＷｓ］である場合、メソッドＡ、Ｂ単独の記述に伴い実機が動作した場合に比べ、メソッドＡ、Ｂがシーケンシャルに動作した場合に９６２［μＷｓ］を超える確率（confidence）が５５％であり、改善率（lift）が１．２であることをアソシエーション解析により求めることができる。求めた確率および改善率は、指標の一例である。
【００１８】
計算部１ａは、求めた確率および改善率を、解析対象プログラムの各メソッドの組み合わせと関連づけたテーブル１ｂ１を作成する。そして、作成したテーブル１ｂ１を記憶部１ｂに記憶する。なお、図１では、電力量が９６２［μＷｓ］に関するテーブル１ｂ１を示しているが、設計者は、任意の電力量を指定し、指定した電力量に関するテーブル１ｂ１を設計支援装置１に作成させることができる。
【００１９】
検索部１ｃは、設計対象のアプリケーションのプログラム３および設計者がポップアップの表示を希望する電力量９６２［μＷｓ］の指定を受け付けると、プログラム３に記述されているソースコードのうち、テーブル１ｂ１に記載されているメソッドの組み合わせを含み、かつ、確率の欄が５０％以上のソースコードを検索する。なお、電力量９６２［μＷｓ］および確率５０％は一例である。以下、１行目のレコードおよび４行目のレコードのメソッドを含むソースコードが検索により得られたものとする。
【００２０】
表示部１ｄは、検索部１ｃの検索により得られた、１行目のレコードおよび４行目のレコードのメソッドの組み合わせを含むプログラム３のソースコード３ａ、３ｂに、ポップアップ「高」を表示する。このポップアップ「高」は、当該メソッドの組み合わせが、電力量９６２［μＷｓ］を超える確率が一定値以上であることを示している。
【００２１】
これにより、設計者は、ポップアップ「高」が表示されたソースコード３ａ、３ｂが、電力量９６２［μＷｓ］を超える確率が高いメソッドを含んでいることを容易に把握することができる。なお、ポップアップは、設計者への報知方法の一例であり、他の方法を用いることができる。設計者が、ポップアップ「高」が表示されたソースコード３ａ、３ｂを書き換えることにより、計算部１ａは、再度アソシエーション解析を実行し、書き換えたソースコードに含まれるメソッドの組み合わせに対するテーブル１ｂ１を作成することができる。また、表示部１ｄは、テーブル１ｂ１を参照し、設計者が書き換えたソースコードに含まれるメソッドの組み合わせの改善率の値が１より大きい場合には、書き換えたソースコードが、消費電力の低減に効果がある旨を表示装置４の表示画面上に表示することができる。例えば、表示部１ｄは、書き換えたソースコードに含まれるメソッドの組み合わせによる改善率を表示画面上に表示する。
【００２２】
この設計支援装置１によれば、計算部１ａが、各メソッドに対して、統計的手法を用いて電力量の増加に関する確率および改善率を計算した。これにより、設計段階で、電力量に関する情報をソースコード単位で取得することができる。また、例えば、重回帰分析等により電力量の増加に関する近似式を生成する場合等に比べ、ソースコード単位での電力量の増減を迅速に把握することができる。
【００２３】
なお、本実施の形態では、統計解析の手法としてアソシエーション解析を用いたが、相関ルール抽出、クラスタ分析等の他の統計解析手法を用いることができる。
以下、第２の実施の形態において、開示の設計支援装置をより具体的に説明する。
【００２４】
＜第２の実施の形態＞
図２は、第２の実施の形態の設計支援装置のハードウェア構成を示す図である。
設計支援装置１０は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ１０２と複数の周辺機器が接続されている。
【００２５】
ＲＡＭ１０２は、設計支援装置１０の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に使用する各種データが格納される。
【００２６】
バス１０８には、ハードディスクドライブ１０３、グラフィック処理装置１０４、入力インタフェース１０５、ドライブ装置１０６、および通信インタフェース１０７が接続されている。
【００２７】
ハードディスクドライブ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ハードディスクドライブ１０３は、設計支援装置１０の二次記憶装置として使用される。ハードディスクドライブ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリ等の半導体記憶装置を使用することもできる。
【００２８】
グラフィック処理装置１０４には、モニタ１０４ａが接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１０４ａの画面に表示させる。モニタ１０４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や、液晶表示装置等が挙げられる。
【００２９】
入力インタフェース１０５には、キーボード１０５ａとマウス１０５ｂとが接続されている。入力インタフェース１０５は、キーボード１０５ａやマウス１０５ｂから送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１０５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、例えばタッチパネル、ペンタブレット、タッチパッド、トラックボール等が挙げられる。
【００３０】
ドライブ装置１０６は、例えば、光の反射によって読み取り可能なようにデータが記録された光ディスクや、ＵＳＢ（Universal Serial Bus）メモリ等の持ち運び可能な記録媒体に記録されたデータの読み取りを行う。例えば、ドライブ装置１０６が光学ドライブ装置である場合、レーザ光等を利用して、光ディスク２００に記録されたデータの読み取りを行う。光ディスク２００には、Ｂｌｕ−ｒａｙ（登録商標）、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。
【００３１】
通信インタフェース１０７は、ネットワーク５０に接続されている。通信インタフェース１０７は、ネットワーク５０を介して、他のコンピュータまたは通信機器との間でデータを送受信する。
【００３２】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
図２に示すようなハードウェア構成の設計支援装置１０内には、以下のような機能が設けられる。
【００３３】
図３は、第２の実施の形態の設計支援装置の機能を示すブロック図である。
設計支援装置１０は、解析部１１と、電力傾向情報生成部１２と、電力傾向情報記憶部１３と、ソフトウェア改善情報生成部１４と、ソフトウェア改善情報記憶部１５と、アプリケーション開発部１６とを有している。解析部１１と電力傾向情報生成部１２は、計算部の一例である。アプリケーション開発部１６は、検索部および表示部の一例である。
【００３４】
解析部１１は、マトリックス（Matrix）生成部１１１と、マトリックス記憶部１１２と、ソースコード・メソッド対応情報生成部１１３と、ソースコード・メソッド対応情報記憶部１１４と、アソシエーション解析部１１５と、アソシエーション解析情報記憶部１１６とを有している。
【００３５】
マトリックス生成部１１１は、実機にてアプリケーションを実行した結果得られる電力波形およびトレースログに記憶されている情報を用いてアソシエーション解析の入力に用いるマトリックスを生成する。以下、本実施の形態では、開発言語としてＪａｖａを用いた場合を一例に説明する。実機にて実行するアプリケーションは、例えばｇｒａｐｈｉｃｓやｖｉｅｗ等、Ｊａｖａの標準ライブラリの特徴的なものを選ぶことができる。
【００３６】
マトリックス生成部１１１は、生成したマトリックスをマトリックス記憶部１１２に記憶する。
図４は、実機トレースログの一例を示す図である。
【００３７】
実機トレースログ２０１には、時刻、アクション、およびメソッドの欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
時刻の欄には、プログラムを開始してから経過した時刻（ｍｓｅｃ）が記憶されている。
【００３８】
アクションの欄には、メソッドの開始（ｓｔａｒｔ）および終了（ｅｎｄ）を識別する情報が記憶されている。
メソッドの欄には、実行されたメソッドを識別する情報が記憶されている。
【００３９】
図５は、実機電流ログの一例を示す図である。
実機電流ログ２０２には、プログラムを開始してから経過した時刻（秒）に対応する電流値が記憶されている。
【００４０】
図６は、マトリックス生成部が生成するマトリックスの一例を示す図である。
マトリックス１１２ａは、ＣＳＶ形式のデータである。マトリックス１１２ａの各列は、ｔｉｍｅ（時刻）、Ｐｔ（電力量）、メソッドの列挙の順にデータが並んでいる。１列分のデータは、各時刻に呼ばれているメソッドおよびそのメソッドの実行に伴う電力量を示している。
【００４１】
ここで、Ｐｔの値は、電力量を超えたか否かを閾値で判定した値である。図６では、Ｐｔの値を枠で囲って示している。例えば、設計者が閾値を８８８［μＷｓ］に設定し、閾値を超えると「１」に設定される。
【００４２】
なお、電力量は、実機トレースログ２０１および実機電流ログ２０２から演算することができる。例えば図４に示す実機トレースログ２０１を見ると、１０［ｍｓｅｃ］目にメソッドＡが開始し、１１［ｍｓｅｃ］目にメソッドＡが終了していることが分かる。仮に電源電圧を３．７［Ｖ］とすると、１［ｍｓｅｃ］の電流値が１２０［ｍＡ］であるため、図６におけるメソッドＡのＰｔの値は、１２０［ｍＡ］×３．７［Ｖ］×１［ｍｓｅｃ］＝４４４［μＷｓ］となる。また、他の例として、図６におけるメソッドＢのＰｔの値は、１３０［ｍＡ］×３．７［Ｖ］×３［ｍｓｅｃ］＝１４４３［μＷｓ］となる。
【００４３】
ソースコード・メソッド対応情報生成部１１３は、マトリックス１１２ａを用いてソースコードとメソッドとの対応関係を示すソースコード・メソッド対応情報を生成する。ソースコード・メソッド対応情報生成部１１３は、生成したソースコード・メソッド対応情報をソースコード・メソッド対応情報記憶部１１４に記憶する。
【００４４】
図７は、ソースコード・メソッド対応情報の一例を示す図である。
ソースコード・メソッド対応テーブル１１４ａは、１つのソースコードに対し１つまたは複数のメソッドが記憶されている。
【００４５】
アソシエーション解析部１１５は、設計者が設定した電力量についてマトリックス１１２ａを用いてアソシエーション解析を実行し、メソッド単体またはメソッドの組み合わせに対して電流との相関を抽出したアソシエーション解析情報を生成する。なお、アソシエーション解析は、従来公知の方法で実現することができるため、詳細な説明を省略する。
【００４６】
図８は、アソシエーション解析の解析結果の一例を示す図である。
アソシエーション解析結果１１５ａは、ｌｈｓ、ｒｈｓ、ｓｕｐｐｏｒｔ、ｃｏｎｆｉｄｅｎｃｅ、ｌｉｆｔの項目が設定されている。
【００４７】
ｌｈｓは相関ルールの条件部である。ｒｈｓは相関ルールの結論部である。ｓｕｐｐｏｒｔは相関ルールが出現する確率である。ｃｏｎｆｉｄｅｎｃｅはルールが出現した場合に成立する確率である。ｌｉｆｔはもともとの確率からの改善率である。この改善率は、電力量の増加に関係するファクターとなる。
【００４８】
次に、解析結果の評価方法の一例を、図９を用いて説明する。
図９は、アソシエーション解析の解析結果をまとめた例を示す図である。
テーブルＴ１は、ある時間内に動作が記録されたメソッド（以下、メソッド［Ａ］→［Ｂ］とする）の組み合わせに対し、電力量値を超えるケースを取得した場合の例を示している。ここでメソッド［Ａ］→［Ｂ］は、メソッドＡの実行と、メソッドＢの実行との間にアソシエーションルールがあることを示している。
【００４９】
例えば、テーブルＴ１の１行目のレコードは、アソシエーション解析を実行した際、メソッド［Ａ］→［Ｂ］の組み合わせに対し、電力量１０３６［μＷｓ］を超える確率が４０％であり、メソッドＡ、Ｂをそれぞれ単独で実行した場合に比べ、改善率が１．１になったことを示している。メソッドＡ、Ｂをそれぞれ単独で実行した場合の改善率は１．０であり、改善率が１．０より高ければ、省電力に効果があるメソッドの組み合わせであることを示している。
【００５０】
図１０は、アソシエーション解析情報の一例を示す図である。
アソシエーション解析情報は、ターゲットとする電力量毎に改善率が高いメソッドの組み合わせを順に並べた情報である。ターゲットとする電力量は、設計者が任意に決定することができる。
【００５１】
アソシエーション解析情報１１５ｂは、電力量８８８［μＷｓ］についての情報であり、アソシエーション解析情報１１５ｃは、電力量９６２［μＷｓ］についての情報であり、アソシエーション解析情報１１５ｄは、電力量１０３６［μＷｓ］についての情報である。例えば、アソシエーション解析情報１１５ｂは、メソッド［android.graphics.CanvassetDensity..I.V］→［android.graphics.CanvasisOpaque...Z］の組み合わせは、それぞれのメソッドを単独で実行した場合に比べ、改善率が１．４であることを示している。
【００５２】
アソシエーション解析部１１５は、アソシエーション解析情報を例えば数万〜数十万通り作成する。
電力傾向情報生成部１２は、アソシエーション解析情報記憶部１１６に記憶されている各電力量のアソシエーション解析情報を用いて各電力量について改善率が最も高いレコードを抽出した電力傾向情報を生成する。電力傾向情報生成部１２は、生成した電力傾向情報を電力傾向情報記憶部１３に記憶する。なお、電力傾向情報は、解析情報の一例である。
【００５３】
図１１は、電力傾向情報の一例を示す図である。
電力傾向テーブル１３ａには、インデックス、メソッドパターン、電力量、電力傾向および改善率の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
【００５４】
インデックスの欄には、当該電力傾向テーブル内でのレコードを識別する番号が設定されている。
メソッドパターン、電力傾向、および改善率の欄の内容は、アソシエーション解析情報と同じ内容である。
【００５５】
電力量の欄には、当該レコードの抽出元の電力量が記憶される。
再び図３に戻って説明する。
ソフトウェア改善情報生成部１４は、設計者によるソースコードの書き換え（変更）箇所について、改善率が上がったソースコードを集めたソフトウェア改善情報を生成する。ソースコードの書き換えによって改善率が上がる場合には、そのソースコードは省電力に有効であることを意味する。このソフトウェア改善情報を設計者に提示することで、設計者は、ソフトウェアを改善するヒントとすることができる。
【００５６】
ソフトウェア改善情報生成部１４は、生成したソフトウェア改善情報をソフトウェア改善情報記憶部１５に記憶する。
図１２は、ソフトウェア改善情報の一例を示す図である。
【００５７】
ソフトウェア改善テーブル１５ａは、ソースコード、メソッド、改善率の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。ソースコードおよびメソッドの欄は、ソースコード・メソッド対応テーブル１１４ａの内容と同じである。
【００５８】
改善率の欄には、メソッドの電力傾向テーブル１３ａから取得した、メソッドの欄に設定されているメソッドを実行したときの改善率が記憶されている。
アプリケーション開発部１６は、設計者が例えばＡｎｄｒｏｉｄ（登録商標）向けアプリケーション等の設計ツールのアプリケーションを起動することで実現される機能である。
【００５９】
アプリケーション開発部１６は、設計中のプログラムの開発環境画面をモニタ１０４ａに表示する。表示の際、設計者が指定した電力量（以下、「ターゲット電力量」という）の入力を受け付けると、アプリケーション開発部１６は、電力傾向テーブル１３ａの電力量の欄を参照し、受け付けたターゲット電力量に一致する電力量を特定する。そして、アプリケーション開発部１６は、特定した電力量に関連づけられた電力傾向の欄を参照する。そして、電力傾向が一定以上の大きさ（例えば０．８以上）のレコードのメソッドが、設計中のプログラムに含まれているか否かを判断する。そして、アプリケーション開発部１６は、設計中のプログラムに含まれるターゲット電力量を超える電力量となる確率が高いメソッドの組み合わせを含むプログラムのソースコードを、他のソースコードと区別して表示する。また、アプリケーション開発部１６は、区別して表示するソースコードに、ポップアップを付加する。
【００６０】
また、アプリケーション開発部１６は、電力傾向テーブル１３ａを参照し、ソースコードに対応したメソッド毎に電力傾向を表示するようにしてもよい。
図１３は、第２の実施の形態のアプリケーション開発部が表示する画面の一例を示す図である。
【００６１】
モニタ１０４ａに表示された開発環境画面１６１は、設計中の開発環境の一例を示している。アプリケーション開発部１６は、ターゲット電力量を超える電力量となる確率が高いメソッドを含む部位１６２を他のソースコードと区別して表示する。図１３では、一例として、部位１６２を点線で囲み、ポップアップ「高」が付加されている。
【００６２】
ポップアップを目安に設計者がソースコードを書き換えると、解析部１１は、書き換えたソースコードに対するメソッドにアソシエーション解析を再度行う。電力傾向情報生成部１２は、再度実行されたアソシエーション解析の結果を電力傾向テーブル１３ａに反映する。また、ソフトウェア改善情報生成部１４は、再度実行されたアソシエーション解析の結果をソフトウェア改善テーブル１５ａに反映する。そして、アプリケーション開発部１６は、上書きされたソフトウェア改善テーブル１５ａを用いて書き換えたコードの改善率を識別する情報を開発環境画面１６１に表示する。
【００６３】
図１４は、第２の実施の形態のアプリケーション開発部が表示する画面の一例を示す図である。
図１４中点線で示す部位１６２上にマウスカーソル１６３が位置すると、アプリケーション開発部１６は、ソフトウェア改善テーブル１５ａに記憶されている改善率１．２をポップアップとしてソースコードに付加する。これにより、設計者は、書き換えたソースコードにより、電力量が小さくなる可能性があることを認識することができる。なお、ポップアップの内容は図示のものに限定されず、例えば、書き換え前と書き換え後の改善率の差分をポップアップするようにしてもよいし、改善率の増減を示す他の指標をポップアップとして付加するようにしてもよい。
【００６４】
また、設計者は、ソフトウェア改善テーブル１５ａに記載されたメソッドの組み合わせを見てソースコードを改善する際のヒントとして用いることにより、書き換えたソースコードにより、電力量が小さくなる可能性を高めることができる。
【００６５】
設計者は、ソースコードを１回または複数回書き換えた後に、できあがったアプリケーションのソフトウェアを実際の製品に搭載し、製品上でアプリケーションを動作させることによって実機トレースログ２０１および実機電流ログ２０２を取得することができる。設計者は、取得した実機トレースログ２０１および実機電流ログ２０２を設計支援装置１０に読み込み、解析部１１および電力傾向情報生成部１２に処理を実行させることにより、電力傾向テーブル１３ａを更新することができる。設計者は、ソースコードの書き換えとアソシエーション解析を繰り返し実行することにより、アプリケーションに特化した電力傾向テーブル１３ａを作成することができる。
【００６６】
次に、設計支援装置１０の全体処理を説明する。
図１５および図１６は、設計支援装置の全体処理を示すフローチャートである。
［ステップＳ１］  マトリックス生成部１１１は、設計者が選択したアプリケーションを実行した結果得られる実機トレースログ２０１および実機電流ログ２０２を取得する。その後、ステップＳ２に遷移する。
【００６７】
［ステップＳ２］  マトリックス生成部１１１は、マトリックス１１２ａを生成する。その後、ステップＳ３に遷移する。
［ステップＳ３］  ソースコード・メソッド対応情報生成部１１３は、ソースコード・メソッド対応テーブル１１４ａがソースコード・メソッド対応情報記憶部１１４に存在するか否かを判断する。ソースコード・メソッド対応テーブル１１４ａがソースコード・メソッド対応情報記憶部１１４に存在する場合（ステップＳ３のＹｅｓ）、ステップＳ５に遷移する。ソースコード・メソッド対応テーブル１１４ａがソースコード・メソッド対応情報記憶部１１４に存在しない場合（ステップＳ３のＮｏ）、ステップＳ４に遷移する。
【００６８】
［ステップＳ４］  ソースコード・メソッド対応情報生成部１１３は、ステップＳ１にて取得した実機トレースログ２０１に記載されたソースコードとメソッドの組み合わせを記載したソースコード・メソッド対応テーブル１１４ａを生成する。そして、ソースコード・メソッド対応情報記憶部１１４に記憶する。その後、図１６のステップＳ６に遷移する。
【００６９】
［ステップＳ５］  ソースコード・メソッド対応情報生成部１１３は、ステップＳ３にて取得した実機トレースログ２０１に記載されたソースコードとメソッドの組み合わせを、ソースコード・メソッド対応テーブル１１４ａに追記する。その後、図１６のステップＳ６に遷移する。
【００７０】
［ステップＳ６］  解析部１１は、アソシエーション解析を実行する電力量の個数を示すＮ（Ｎ≧０）を設定する。例えば、電力量８８８［μＷｓ］、９６２［μＷｓ］、１０３６［μＷｓ］についてアソシエーション解析を実行する場合は、Ｎ＝３に設定する。そして、ステップＳ７に遷移する。
【００７１】
［ステップＳ７］  解析部１１は、Ｎが０以下か否かを判断する。Ｎが０以下である場合（ステップＳ７のＹｅｓ）、ステップＳ１３に遷移する。Ｎが０より大きい場合（ステップＳ７のＮｏ）、ステップＳ８に遷移する。
【００７２】
［ステップＳ８］  アソシエーション解析部１１５は、アソシエーション解析を実行する電力量に調査対象の電力量の１つ（図１６中、Ｐｏｗｅｒ［Ｎ］と表記）を設定する。その後、ステップＳ９に遷移する。
【００７３】
［ステップＳ９］  アソシエーション解析部１１５は、ステップＳ８にて設定された調査対象の電力量についてアソシエーション解析を実行し、アソシエーション解析情報を生成する。アソシエーション解析部１１５は、生成したアソシエーション解析情報をアソシエーション解析情報記憶部１１６に記憶する。その後、ステップＳ１０に遷移する。
【００７４】
［ステップＳ１０］  電力傾向情報生成部１２は、アソシエーション解析情報記憶部１１６に記憶されているアソシエーション解析情報を用いて電力傾向テーブル１３ａを生成する。そして、電力傾向情報生成部１２は、生成した電力傾向テーブル１３ａを電力傾向情報記憶部１３に記憶する。その後、ステップＳ１１に遷移する。なお、当該ステップＳ１０の処理は後に詳述する。
【００７５】
［ステップＳ１１］  ソフトウェア改善情報生成部１４は、電力傾向情報記憶部１３に記憶されている電力傾向テーブル１３ａを用いてソフトウェア改善テーブル１５ａを生成する。具体的には、ソフトウェア改善情報生成部１４は、電力傾向テーブル１３ａの１つのレコードを取得する。そして、ソフトウェア改善情報生成部１４は、取得したレコードのメソッドに対応するソースコードをソースコード・メソッド対応テーブル１１４ａから取得する。そして、取得したソースコードと、取得したレコードのメソッドおよび改善率とを関連づけることによりソフトウェア改善テーブル１５ａの１つのレコードを生成する。ソフトウェア改善情報生成部１４は、電力傾向テーブル１３ａのレコード数だけソフトウェア改善テーブル１５ａのレコードの生成を繰り返し行うことにより、ソフトウェア改善テーブル１５ａを生成する。その後、ステップＳ１２に遷移する。
【００７６】
［ステップＳ１２］  解析部１１は、Ｎを１デクリメントする。その後、ステップＳ７に遷移する。
［ステップＳ１３］  アプリケーション開発部１６は、電力傾向テーブル１３ａの電力量の欄を参照し、受け付けたターゲット電力量に一致する電力量を特定する。そして、アプリケーション開発部１６は、特定した電力量に関連づけられた電力傾向の欄を参照する。そして、電力傾向が一定以上の大きさ（例えば０．８以上）のレコードのメソッドが、設計中のプログラムに含まれているか否かを判断する。そして、アプリケーション開発部１６は、設計中のプログラムに含まれるターゲット電力量を超える電力量となる確率が高いメソッドの組み合わせを含むプログラムのソースコードを、他のソースコードと区別して表示する。また、アプリケーション開発部１６は、区別して表示するソースコードに、ポップアップを付加する。その後、全体処理を終了する。
【００７７】
次に、図１６のステップＳ１０の電力傾向テーブル１３ａを生成する処理（電力傾向テーブル生成処理）を説明する。
図１７は、電力傾向テーブル生成処理を示すフローチャートである。
【００７８】
［ステップＳ２１］  電力傾向情報生成部１２は、ステップＳ９にて生成したアソシエーション解析情報の中から処理対象のアソシエーション解析情報を識別するＰＯＷＥＲ＿ＮＵＭを０に設定する。その後、ステップＳ２２に遷移する。
【００７９】
［ステップＳ２２］  電力傾向情報生成部１２は、ＰＯＷＥＲ＿ＮＵＭが、処理対象電力量の数Ｎ以上か否かを判断する。ＰＯＷＥＲ＿ＮＵＭがＮ以上である場合（ステップＳ２２のＹｅｓ）、図１７の処理を終了する。ＰＯＷＥＲ＿ＮＵＭがＮ未満である場合（ステップＳ２２のＮｏ）、ステップＳ２３に遷移する。
【００８０】
［ステップＳ２３］  電力傾向情報生成部１２は、ＰＯＷＥＲ＿ＮＵＭの電力量値を備えるアソシエーション解析情報を指定する。その後、ステップＳ２４に遷移する。
［ステップＳ２４］  電力傾向情報生成部１２は、ステップＳ２３にて指定したアソシエーション解析情報のインデックスを指定するパラメータＩｎｄｅｘを０に設定する。その後、ステップＳ２５に遷移する。
【００８１】
［ステップＳ２５］  電力傾向情報生成部１２は、パラメータＩｎｄｅｘの値が、ステップＳ２３にて指定したアソシエーション解析情報のインデックスの最大値ＩＮＤＥＸ＿ＭＡＸよりも大きいか否かを判断する。パラメータＩｎｄｅｘの値が最大値ＩＮＤＥＸ＿ＭＡＸよりも大きい場合（ステップＳ２５のＹｅｓ）、ステップＳ２８に遷移する。パラメータＩｎｄｅｘの値が最大値ＩＮＤＥＸ＿ＭＡＸ以下である場合（ステップＳ２５のＮｏ）、ステップＳ２６に遷移する。
【００８２】
［ステップＳ２６］  電力傾向情報生成部１２は、現在の電力傾向テーブル１３ａに記憶されている改善率と、パラメータＩｎｄｅｘの値に該当するｉｎｄｅｘの改善率を比較する。そして、パラメータＩｎｄｅｘの値に該当するｉｎｄｅｘの改善率の方が高ければ、パラメータＩｎｄｅｘの値に該当するｉｎｄｅｘのレコードに記載された情報を電力傾向テーブル１３ａに上書きする。その後、ステップＳ２７に遷移する。
【００８３】
［ステップＳ２７］  電力傾向情報生成部１２は、パラメータＩｎｄｅｘをインクリメントする。その後、ステップＳ２５に遷移し、ステップＳ２５以降の処理を引き続き実行する。
【００８４】
［ステップＳ２８］  電力傾向情報生成部１２は、ＰＯＷＥＲ＿ＮＵＭをインクリメントする。その後、ステップＳ２２に遷移し、ステップＳ２２以降の処理を引き続き実行する。以上で電力傾向テーブル生成処理の説明を終了する。
【００８５】
次に、設計者によりソースコードが書き換えられたときの処理（ソースコード書き換え処理）を説明する。
図１８は、ソースコード書き換え処理を示すフローチャートである。
【００８６】
［ステップＳ３１］  ソフトウェア改善情報生成部１４は、設計者が書き換えたソースコードの入力を受け付ける。その後、ステップＳ３２に遷移する。
［ステップＳ３２］  ソフトウェア改善情報生成部１４は、ソースコード・メソッド対応テーブル１１４ａを参照し、ステップＳ３１にて受け付けたソースコードに関連づけられているメソッドを抽出する。その後、ステップＳ３３に遷移する。
【００８７】
［ステップＳ３３］  ソフトウェア改善情報生成部１４は、ステップＳ３２にて抽出したメソッドに対するアソシエーション解析の再実行をアソシエーション解析部１１５に依頼する。また、アソシエーション解析の再実行に基づいた電力傾向テーブル１３ａの生成を電力傾向情報生成部１２に依頼する。その後、ステップＳ３４に遷移する。
【００８８】
［ステップＳ３４］  ソフトウェア改善情報生成部１４は、電力傾向テーブル１３ａに追加されたメソッドパターンの欄のメソッドの組み合わせがソフトウェア改善テーブル１５ａに記憶されているか否かを判断する。電力傾向テーブル１３ａに追加されたメソッドパターンの欄のメソッドの組み合わせがソフトウェア改善テーブル１５ａに記憶されている場合（ステップＳ３４のＹｅｓ）、ステップＳ３５に遷移する。電力傾向テーブル１３ａに追加されたメソッドパターンの欄のメソッドの組み合わせがソフトウェア改善テーブル１５ａに記憶されていない場合（ステップＳ３４のＮｏ）、ステップＳ３７に遷移する。
【００８９】
［ステップＳ３５］  ソフトウェア改善情報生成部１４は、電力傾向テーブル１３ａに追加されたメソッドパターンの欄のメソッドの組み合わせの改善率と、電力傾向テーブル１３ａに追加されたメソッドの組み合わせに対応するソフトウェア改善テーブル１５ａのメソッドの改善率とを比較する。そして、電力傾向テーブル１３ａに追加されたメソッドの改善率が、ソフトウェア改善テーブル１５ａに記憶されているメソッドの改善率よりも高いか否かを判断する。電力傾向テーブル１３ａに追加されたメソッドの改善率が、ソフトウェア改善テーブル１５ａに記憶されているメソッドの改善率よりも高い場合（ステップＳ３５のＹｅｓ）、ステップＳ３６に遷移する。電力傾向テーブル１３ａに追加されたメソッドの改善率が、ソフトウェア改善テーブル１５ａに記憶されているメソッドの改善率以下である場合（ステップＳ３５のＮｏ）、図１８の処理を終了する。
【００９０】
［ステップＳ３６］  ソフトウェア改善情報生成部１４は、電力傾向テーブル１３ａに追加されたメソッドの組み合わせに対応するソフトウェア改善テーブル１５ａのメソッドの改善率を、電力傾向テーブル１３ａに追加されたメソッドの組み合わせの改善率で上書きする。その後、ステップＳ３９に遷移する。
【００９１】
［ステップＳ３７］  ソフトウェア改善情報生成部１４は、電力傾向テーブル１３ａに追加されたメソッドの組み合わせおよび改善率と、ステップＳ３１にて受け付けたソースコードとを関連づけてソフトウェア改善テーブル１５ａに記憶する。
【００９２】
［ステップＳ３８］  ソフトウェア改善情報生成部１４は、ステップＳ３７にて追加したレコードの改善率と、ステップＳ３７にて追加したレコードのソースコードと同じソースコードを持つソフトウェア改善テーブル１５ａのメソッドの改善率とを比較する。そして、電力傾向テーブル１３ａに追加されたメソッドの改善率が、ソフトウェア改善テーブル１５ａに記憶されているメソッドの改善率よりも高いか否かを判断する。電力傾向テーブル１３ａに追加されたメソッドの改善率が、ソフトウェア改善テーブル１５ａに記憶されているメソッドの改善率よりも高い場合（ステップＳ３８のＹｅｓ）、ステップＳ３９に遷移する。電力傾向テーブル１３ａに追加されたメソッドの改善率が、ソフトウェア改善テーブル１５ａに記憶されているメソッドの改善率以下である場合（ステップＳ３８のＮｏ）、図１８の処理を終了する。
【００９３】
［ステップＳ３９］  アプリケーション開発部１６は、ソースコードの書き換え部分の処理結果を示すポップアップを書き換え部分に付加する。その後、ソースコード書き換え処理を終了する。
【００９４】
以上述べたように、設計支援装置１０によれば、メソッドの組み合わせにアソシエーション解析を行ってメソッド毎の電力量増加への寄与を確率で計算し、電力傾向テーブル１３ａを生成した。これにより、線型近似を行って電力モデルを作成する場合等に比べ、複数のアプリケーションを何度も実行しなくてよいので、アプリケーションを実装した部分について迅速に電力量を見積もることができる。このため、設計者はソースコードを書き換えながらリアルタイムに消費電力に関連する改善率を確認することができる。設計者は改善率を確認することで、メソッドの組み合わせによる電力量増加の影響を判断することができる。
【００９５】
また、設計支援装置１０によれば、実機トレースログ２０１および実機電流ログ２０２を用いて電力傾向テーブル１３ａを生成するので、プログラムの処理単位毎の消費電力を測定する場合等に比べ、簡易に電力量を見積もることができる。
【００９６】
ところで、設計者は、どのようなソースコードを書くとアプリケーションの消費電力量を下げることができるのかを判断することが難しい場合がある。以下、第３の実施の形態にて、アプリケーションの消費電力量を下げる手助けとなるソースコードの組み合わせを検索することができる設計支援装置の一例を説明する。
【００９７】
＜第３の実施の形態＞
次に、第３の実施の形態の設計支援装置について説明する。
以下、第３の実施の形態の設計支援装置について、前述した第２の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【００９８】
図１９は、第３の実施の形態の設計支援装置を示す機能ブロック図である。
図１９に示す第３の実施の形態の設計支援装置１０ａは、組み合わせ選択部１７およびコード電力相関情報記憶部１８をさらに有する。
【００９９】
組み合わせ選択部１７は、ソフトウェア改善テーブル１５ａを用いて、アプリケーションの消費電力量を下げる手助けとなるソースコードの組み合わせを検索する。具体的には、組み合わせ選択部１７は、消費電力とソフトウェア改善テーブル１５ａを関連づけ、ソースコードと電力量と改善率とをまとめたコード電力相関情報を生成する。組み合わせ選択部１７は、生成したコード電力関連情報をコード電力相関情報記憶部１８に記憶する。
【０１００】
図２０は、コード電力相関情報の一例を示す図である。
図２０に示すコード電力相関テーブル１８ａには、設計者により書き換えられたソースコードに対応するメソッド（図２０中、「書き換えコード対応メソッド」と表記）と電力量と改善率とが関連づけられている。例えば、コード電力相関テーブル１８ａの１行目および２行目のレコードは、電力量８８８［μＷｓ］のソフトウェア改善テーブル１５ａを用いて作成されたレコードであり、４行目のレコードは、電力量９６２［μＷｓ］のソフトウェア改善テーブル１５ａを用いて作成されたレコードである。５行目のレコードは、３行目のレコードに記憶されたソースコードの書き換えと４行目のレコードに記憶されたレコードの書き換えを行った場合の電力量および改善率を示している。
【０１０１】
組み合わせ選択部１７は、各行のレコードの内容を比較する。例えば、３、４行目のレコードと５行目のレコードとを比較する。組み合わせ選択部１７は、比較により、５行目のレコードの書き換えコード対応メソッドを含むプログラムを設計者が作成することにより、３行目のレコードだけを用いたプログラムに比べ改善率は下がる（１．８→１．５）が、電力量は低くなる（９６２→８８８）ので、消費電力の観点から有効であると判断する。
【０１０２】
アプリケーション開発部１６ａは、検索したソースコードの組み合わせをモニタ１０４ａに表示する。
図２１は、第３の実施の形態のアプリケーション開発部が表示する画面の一例を示す図である。モニタ１０４ａに表示された開発環境画面１６４は、設計中の開発環境の一例を示している。アプリケーション開発部１６ａは、ターゲット電力量を超える電力量となる確率が高いメソッドを含む部位１６５をポップアップする。図２１では、一例として、部位１６５を点線で囲み、「高」がポップアップされている。また、部位１６５に含まれるメソッド１６５ａを拡大して示している。
【０１０３】
組み合わせ選択部１７は、設計者が部位１６５のソースコードを書き換えると、書き換えたソースコードの電力量の再計算をアソシエーション解析部１１５および電力傾向情報生成部１２に依頼する。組み合わせ選択部１７は、依頼によって得られた電力量を用いてコード電力相関テーブル１８ａを更新する。
【０１０４】
そして、組み合わせ選択部１７は、設計者による部位１６５のソースコードの書き換えに対し、コード電力相関テーブル１８ａを用いて電力量が小さくなる可能性の高いソースコードに対応するメソッドの候補を選択する。アプリケーション開発部１６ａは、組み合わせ選択部１７により選択されたメソッドの候補を示す吹き出し１６６を、部位１６５と関連づけてモニタ１０４ａに表示する。これにより、設計者は、電力量が小さくなる可能性の高いソースコードに対応するメソッドの候補を把握することができる。
【０１０５】
次に、組み合わせ選択部１７の処理を、フローチャートを用いて説明する。まず、組み合わせ選択部１７がコード電力相関テーブル１８ａを生成する処理（コード電力相関テーブル生成処理）を説明する。
【０１０６】
図２２は、コード電力相関テーブル生成処理を示すフローチャートである。
［ステップＳ４１］  組み合わせ選択部１７は、設計者が書き換えたソースコードを電力抽出対象のソースコードに設定する。その後、ステップＳ４２に遷移する。
【０１０７】
［ステップＳ４２］  組み合わせ選択部１７は、ソフトウェア改善テーブル１５ａを参照し、ステップＳ４１にて選択した電力抽出対象のソースコードに対応するメソッドの組み合わせを特定する。その後、ステップＳ４３に遷移する。
【０１０８】
［ステップＳ４３］  組み合わせ選択部１７は、電力傾向テーブル１３ａのメソッドパターンの欄を参照し、ステップＳ４２にて特定したメソッドの組み合わせに一致する組み合わせが電力傾向テーブル１３ａに存在するか否かを判断する。ステップＳ４２にて特定したメソッドの組み合わせに一致する組み合わせが電力傾向テーブル１３ａに存在する場合（ステップＳ４３のＹｅｓ）、ステップＳ４９に遷移する。ステップＳ４２にて特定したメソッドの組み合わせに一致する組み合わせが電力傾向テーブル１３ａに存在しない場合（ステップＳ４３のＮｏ）、ステップＳ４４に遷移する。
【０１０９】
［ステップＳ４４］  組み合わせ選択部１７は、ステップＳ４２にて特定したメソッドの組み合わせのうち１つのメソッドを選択し、選択したメソッドを電力傾向テーブル１３ａから検索する。その後、ステップＳ４５に遷移する。
【０１１０】
［ステップＳ４５］  組み合わせ選択部１７は、ステップＳ４４にて選択したメソッドに一致するメソッドが、電力傾向テーブル１３ａに記憶されているか否かを判断する。ステップＳ４４にて選択したメソッドに一致するメソッドが、電力傾向テーブル１３ａに記憶されている場合（ステップＳ４５のＹｅｓ）、ステップＳ４６に遷移する。ステップＳ４４にて選択したメソッドに一致するメソッドが、電力傾向テーブル１３ａに記憶されていない場合（ステップＳ４５のＮｏ）、コード電力相関テーブル生成処理を終了する。
【０１１１】
［ステップＳ４６］  組み合わせ選択部１７は、一致したメソッドの電力量ＰＮを電力傾向テーブル１３ａから取得する。その後、ステップＳ４７に遷移する。
［ステップＳ４７］  組み合わせ選択部１７は、取得した電力量ＰＮを電力量Ｐに加算した電力量を新たな電力量Ｐとする。その後、ステップＳ４８に遷移する。
【０１１２】
［ステップＳ４８］  組み合わせ選択部１７は、未処理の（ステップＳ４５〜Ｓ４７の処理を行っていない）メソッドが電力傾向テーブル１３ａに存在するか否かを判断する。未処理のメソッドが電力傾向テーブル１３ａに存在する場合（ステップＳ４８のＹｅｓ）、ステップＳ４５に遷移し、ステップＳ４５以降の処理を引き続き実行する。未処理のメソッドが電力傾向テーブル１３ａに存在しない場合（ステップＳ４８のＮｏ）、コード電力相関テーブル生成処理を終了する。
【０１１３】
［ステップＳ４９］  組み合わせ選択部１７は、一致したメソッドパターンに対応する電力量Ｐを取得する。その後、コード電力相関テーブル生成処理を終了する。
図２２にて説明したように、電力傾向テーブル１３ａは、アソシエーション解析の結果生成されるテーブルであるため、メソッドの組み合わせまたはメソッド単体での電流値が得られる。
【０１１４】
また、ソフトウェア改善テーブル１５ａのメソッドは、ソースコードに対応している。このため、メソッドの組み合わせが電力傾向テーブル１３ａのメソッドパターンに一致した場合、電力傾向テーブル１３ａに記憶されている電力量を取り出す。また、メソッドの組み合わせが電力傾向テーブル１３ａのメソッドパターンに一致しない場合は、単体のメソッド毎に電力量を取得して加算する。
【０１１５】
図２３は、コード電力相関テーブル生成処理の具体例を説明する図である。
図２３に示すソフトウェア改善テーブル１５ａの１行目のレコードに記憶されているメソッドの組み合わせが、図２３に示す電力傾向テーブル１３ａの１行目のレコードのメソッドパターンに一致する。この場合、組み合わせ選択部１７は、電力傾向テーブル１３ａの１行目のレコードの電力量９６２［μＷｓ］を、コード電力相関テーブル１８ａの電力量の欄に設定する。
【０１１６】
また、ソフトウェア改善テーブル１５ａの３行目のレコードに記憶されているメソッドの組み合わせは、電力傾向テーブル１３ａのメソッドパターンに一致するものが存在しない。このため、電力傾向テーブル１３ａの２行目のメソッドの電力量５０［μＷｓ］および４行目のメソッドそれぞれの電力量８０［μＷｓ］を加算することで、コード電力相関テーブル１８ａの電力量を取得する。
【０１１７】
次に、設計者がソースコードを書き換えたときの組み合わせ選択部１７が実行するコード電力相関テーブル１８ａの更新処理を説明する。
図２４は、コード電力相関テーブルの更新処理を示すフローチャートである。
【０１１８】
［ステップＳ５１］  組み合わせ選択部１７は、設計者により書き換えられたソースコードの入力を受け付ける。その後、ステップＳ５２に遷移する。
［ステップＳ５２］  組み合わせ選択部１７は、ステップＳ５１にて受け付けたソースコードを使用コードテーブル１８ｂに記憶する。その後、ステップＳ５３に遷移する。
【０１１９】
［ステップＳ５３］  組み合わせ選択部１７は、ステップＳ５１にて受け付けたソースコードのアソシエーション解析の実行をアソシエーション解析部１１５に依頼する。アソシエーション解析部１１５から解析結果を受け取ると、ステップＳ５４に遷移する。
【０１２０】
［ステップＳ５４］  組み合わせ選択部１７は、アソシエーション解析部１１５により解析された電力量を、ステップＳ５１にて受け付けたソースコードと関連づけてコード電力相関テーブル１８ａに追加する。その後、図２４に示す処理を終了する。
【０１２１】
次に、組み合わせ選択部１７が、電力量が小さくなる可能性の高いソースコードの候補を生成する処理（最適ソースコード選定処理）を説明する。
図２５、および図２６は、最適ソースコード選定処理を示すフローチャートである。
【０１２２】
［ステップＳ６１］  組み合わせ選択部１７は、使用コードテーブル１８ｂに記憶されている全てのソースコードを取得する。その後、ステップＳ６２に遷移する。
［ステップＳ６２］  組み合わせ選択部１７は、コード電力相関テーブル１８ａを参照し、１つの書き換えコードの電力量Ｐを取得する。その後、ステップＳ６３に遷移する。
【０１２３】
［ステップＳ６３］  組み合わせ選択部１７は、ステップＳ６２にて取得した電力量Ｐを、使用コードテーブル１８ｂに記憶されているソースコードの電力量の累計を示すパラメータＰ＿ｂａｓｅに追加する。その後、ステップＳ６４に遷移する。
【０１２４】
［ステップＳ６４］  組み合わせ選択部１７は、パラメータＰ＿ｂａｓｅに電力量Ｐを追加していない（未処理の）ソースコードが存在するか否かを判断する。未処理のソースコードが存在する場合（ステップＳ６４のＹｅｓ）、ステップＳ６２に遷移し、ステップＳ６２以降の処理を引き続き実行する。未処理のソースコードが存在しない場合（ステップＳ６４のＮｏ）、ステップＳ６５に遷移する。
【０１２５】
［ステップＳ６５］  組み合わせ選択部１７は、コード電力相関テーブル１８ａを参照し、ソースコードの組み合わせを作成する。その後、ステップＳ６６に遷移する。
［ステップＳ６６］  組み合わせ選択部１７は、ステップＳ６５にて作成したソースコードの組み合わせの電力量を加算した電力量Ｐ＿ｃｏｍｂを計算する。その後、ステップＳ６７に遷移する。
【０１２６】
［ステップＳ６７］  組み合わせ選択部１７は、ステップＳ６６にて計算した電力量Ｐ＿ｃｏｍｂがステップＳ６３にて求めたパラメータＰ＿ｂａｓｅより小さいか否かを判断する。電力量Ｐ＿ｃｏｍｂがパラメータＰ＿ｂａｓｅより小さい場合（ステップＳ６７のＹｅｓ）、ステップＳ６８に遷移する。電力量Ｐ＿ｃｏｍｂがパラメータＰ＿ｂａｓｅ以上である場合（ステップＳ６７のＮｏ）、ステップＳ６６に遷移する。
【０１２７】
［ステップＳ６８］  組み合わせ選択部１７は、パラメータＰ＿ｂａｓｅの値を電力量Ｐ＿ｃｏｍｂの値に設定する。その後、ステップＳ６９に遷移する。
［ステップＳ６９］  組み合わせ選択部１７は、電力量Ｐ＿ｃｏｍｂを作成していない（未処理の）ソースコードの組み合わせがコード電力相関テーブル１８ａに存在するか否かを判断する。未処理のソースコードの組み合わせがコード電力相関テーブル１８ａに存在する場合（ステップＳ６９のＹｅｓ）、ステップＳ６６に遷移し、ステップＳ６６以降の処理を引き続き実行する。未処理のソースコードの組み合わせがコード電力相関テーブル１８ａに存在しない場合（ステップＳ６９のＮｏ）、図２６のステップＳ７０に遷移する。
【０１２８】
［ステップＳ７０］  組み合わせ選択部１７は、コード電力相関テーブル１８ａの電力量の欄を参照し、同じ電力量を備える複数のソースコードの組み合わせが存在するか否かを判断する。同じ電力量を備える複数のソースコードの組み合わせが存在する場合（ステップＳ７０のＹｅｓ）、ステップＳ７１に遷移する。同じ電力量を備える複数のソースコードの組み合わせが存在しない場合（ステップＳ７０のＮｏ）、最適ソースコード選定処理を終了する。
【０１２９】
［ステップＳ７１］  組み合わせ選択部１７は、コード電力相関テーブル１８ａの書き換えコードの欄を参照し、パラメータＰ＿ｂａｓｅに該当するソースコードの組み合わせを１つ選択する。その後、ステップＳ７２に遷移する。
【０１３０】
［ステップＳ７２］  組み合わせ選択部１７は、ステップＳ７１にて選択したソースコードのメソッド数ｃｎｕｍを取得する。その後、ステップＳ７３に遷移する。
［ステップＳ７３］  組み合わせ選択部１７は、最小メソッド数を算出するために用意したパラメータｃｏｄｅ＿ｎｕｍがメソッド数ｃｎｕｍ以下であるか否かを判断する。パラメータｃｏｄｅ＿ｎｕｍがメソッド数ｃｎｕｍ以下である場合（ステップＳ７３のＹｅｓ）、ステップＳ７６に遷移する。パラメータｃｏｄｅ＿ｎｕｍがメソッド数ｃｎｕｍより大きい場合（ステップＳ７３のＮｏ）、ステップＳ７４に遷移し、次のメソッド数ｃｎｕｍを取得する。
【０１３１】
［ステップＳ７４］  組み合わせ選択部１７は、メソッド数ｃｎｕｍをパラメータｃｏｄｅ＿ｎｕｍとする。その後、ステップＳ７５に遷移する。
［ステップＳ７５］  組み合わせ選択部１７は、パラメータｃｏｄｅ＿ｎｕｍに対応するメソッドの組み合わせを選択する。その後、ステップＳ７６に遷移する。
【０１３２】
［ステップＳ７６］  組み合わせ選択部１７は、未処理の（ステップＳ７１〜Ｓ７５の処理を行っていない）パラメータの組み合わせが、コード電力相関テーブル１８ａに存在するか否かを判断する。未処理のパラメータの組み合わせが、コード電力相関テーブル１８ａに存在する場合（ステップＳ７６のＹｅｓ）、ステップＳ７１に遷移し、ステップＳ７１以降の処理を引き続き実行する。未処理のパラメータの組み合わせが、コード電力相関テーブル１８ａに存在しない場合（ステップＳ７６のＮｏ）、最適ソースコード選定処理を終了する。
【０１３３】
最終的に得られるパラメータＰ＿ｂａｓｅを満たすステップＳ７５にて選択したソースコードの組み合わせが、最小の電力量のソースコードとなる。アプリケーション開発部１６ａは、最小の電力量のソースコードをモニタ１０４ａに表示する。
【０１３４】
最適ソースコード選定処理では、書き換えられたソースコードだけの電力量を計算し、書き換え前のソースコードの電力量と比較することで、電力量を計算する手間を削減することができる。また、書き換え前のソースコードの電力量と書き換えられたソースコードの電力量とを比較するため、設計者は、目標電力の設定を省略することができる。
【０１３５】
第３の実施の形態の設計支援装置１０ａによれば、第２の実施の形態の設計支援装置と同様の効果が得られる。
そして、第３の実施の形態の設計支援装置１０ａによれば、設計者がソースコードを複数回書き換えた場合の履歴を記憶するコード電力相関テーブル１８ａを設けるようにした。そして、組み合わせ選択部１７が最適ソースコード選定処理を実行することにより、最小の電力量のソースコードを取得した。アプリケーション開発部１６ａが、取得された最小の電力量のソースコードに対するメソッドの候補を示す吹き出し１６６をモニタ１０４ａに表示するようにした。設計者は、モニタ１０４ａに表示された吹き出し１６６に記述されたメソッドを用いてプログラムを書き換えることで、プログラム全体を考慮した電力量の低減を図ることができる。
【０１３６】
また、組み合わせ選択部１７が使用コードテーブル１８ｂを生成し、最適ソースコード選定処理にて用いるようにした。これにより、設計者は、ソースコードを複数回書き換えた場合においても、どのソースコードを書き換えることにより、現在の改善率や電力量が、目標としている改善率や電力量に近づくかを評価することができる。
【０１３７】
なお、設計支援装置１０、１０ａが行った処理が、複数の装置によって分散処理されるようにしてもよい。例えば、１つの装置が、アソシエーション解析処理までを行ってアソシエーション解析情報１１５ｂ〜１１５ｄを生成しておき、他の装置が、そのアソシエーション解析情報１１５ｂ〜１１５ｄを用いて電力傾向テーブル１３ａを生成するようにしてもよい。
【０１３８】
以上、本発明の設計支援装置、設計支援方法および設計支援プログラムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０１３９】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、設計支援装置１、１０、１０ａが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷ等が挙げられる。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）等が挙げられる。
【０１４０】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４１】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１４２】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）等の電子回路で実現することもできる。
【０１４３】
以上の第１〜第３の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  所定のプログラムに記載された関数に統計解析を実行して前記プログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、前記指標を前記関数の組み合わせと関連づけた解析情報を作成する計算部と、
前記解析情報を記憶する記憶部と、
設計対象のプログラムに含まれるソースコードのうち、前記記憶部に記憶されている前記解析情報が備える関数の組み合わせを含むソースコードを検索する検索部と、
前記検索部の検索により得られたソースコードを他のソースコードと区別し得る態様で表示する表示部と、
を有することを特徴とする設計支援装置。
【０１４４】
（付記２）  前記計算部は、前記設計対象のプログラムのソースコードの変更に応じて、変更されたソースコードに対応する関数の組み合わせを前記記憶部に記憶されている解析情報から抽出し、抽出した関数の組み合わせについて再度統計解析を実行し、前記表示部は、変更されたソースコードに対応する関数の組み合わせで関数を実行した場合に消費する電力量の増減を示す値を表示することを特徴とする付記１記載の設計支援装置。
【０１４５】
（付記３）  前記指標は、前記関数の組み合わせを実行することにより前記プログラムに記載された関数それぞれを単独で実行した場合に消費する電力量を超える確率の大きさを識別する情報であり、前記検索部は、前記確率が一定以上の関数の組み合わせを含むソースコードを検索することを特徴とする付記１または２に記載の設計支援装置。
【０１４６】
（付記４）  前記計算部は、複数の電力量について前記解析情報を作成し、
前記検索部は、電力量の入力を受け付けると、受け付けた電力量の前記解析情報を用いてソースコードを検索することを特徴とする付記１ないし３のいずれかに記載の設計支援装置。
【０１４７】
（付記５）  前記計算部は、複数の電力量が設定された場合、設定された電力量毎に、少なくとも最も電力量が減少する関数の組み合わせを抽出した解析情報を作成することを特徴とする付記１ないし４のいずれかに記載の設計支援装置。
【０１４８】
（付記６）  ソースコードが変更される度に変更されたソースコードと、変更されたソースコードに対応する関数の組み合わせの指標と、前記関数の組み合わせを実行した場合に消費する電力量とを関連づけて記憶した相関情報を作成する相関情報作成部と、
前記相関情報を記憶する記憶部と、
その後に変更されたソースコードの電力量を、記憶されている前記相関情報を用いて取得し、最も電力量が小さくなる関数の組み合わせを選択する選択部をさらに有し、
前記表示部は、前記選択部の選択により得られた関数の組み合わせを表示することを特徴とする付記１ないし５のいずれかに記載の設計支援装置。
【０１４９】
（付記７）  ソースコードの変更に伴い電力量の低下を示す指標を、変更されたソースコードに含まれる関数の組み合わせと関連づけたコード改善情報を生成する生成部をさらに有し、
前記コード改善情報と前記解析情報とを用いて前記相関情報を作成することを特徴とする付記６記載の設計支援装置。
【０１５０】
（付記８）  前記選択部は、同じ電力量の関数の組み合わせが複数存在する場合、最も組み合わせの数が少ない関数の組み合わせを検索することを特徴とする付記６記載の設計支援装置。
【０１５１】
（付記９）  ソースコードの変更に伴い電力量の低下を示す指標を、変更されたソースコードに含まれる関数の組み合わせと関連づけたコード改善情報を生成する生成部をさらに有することを特徴とする付記１記載の設計支援装置。
【０１５２】
（付記１０）  前記統計解析はアソシエーション解析であることを特徴とする付記１ないし９のいずれかに記載の設計支援装置。
（付記１１）  前記計算部は、プログラムの実行ログを用いて前記所定のプログラムに記載された関数それぞれを実行した場合に消費する電力量を計算することを特徴とする付記１ないし１０のいずれかに記載の設計支援装置。
【０１５３】
（付記１２）  コンピュータが、
所定のプログラムに記載された関数に統計解析を実行して前記プログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、
計算した前記指標を前記関数の組み合わせと関連づけた解析情報を作成し、
設計対象のプログラムに含まれるソースコードのうち、記憶部に記憶された前記解析情報が備える関数の組み合わせを含むソースコードを検索し、
検索により得られたソースコードを他のソースコードと区別し得る態様で表示する、
ことを特徴とする設計支援方法。
【０１５４】
（付記１３）  コンピュータに、
所定のプログラムに記載された関数に統計解析を実行して前記プログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、
計算した前記指標を前記関数の組み合わせと関連づけた解析情報を作成し、
設計対象のプログラムに含まれるソースコードのうち、記憶部に記憶された前記解析情報が備える関数の組み合わせを含むソースコードを検索し、
検索により得られたソースコードを他のソースコードと区別し得る態様で表示する、
処理を実行させることを特徴とする設計支援プログラム。
【符号の説明】
【０１５５】
１、１０、１０ａ  設計支援装置
１ａ  計算部
１ｂ  記憶部
１ｃ  検索部
１ｂ１  テーブル
１ｄ  表示部
２  実行ログ
３  プログラム
３ａ、３ｂ  ソースコード
４  表示装置
１１  解析部
１１１  マトリックス生成部
１１２  マトリックス記憶部
１１２ａ  マトリックス
１１３  ソースコード・メソッド対応情報生成部
１１４  ソースコード・メソッド対応情報記憶部
１１４ａ  ソースコード・メソッド対応テーブル
１１５  アソシエーション解析部
１１５ａ  アソシエーション解析結果
１１５ｂ〜１１５ｄ  アソシエーション解析情報
１１６  アソシエーション解析情報記憶部
１２  電力傾向情報生成部
１３  電力傾向情報記憶部
１３ａ  電力傾向テーブル
１４  ソフトウェア改善情報生成部
１５  ソフトウェア改善情報記憶部
１５ａ  ソフトウェア改善テーブル
１６、１６ａ  アプリケーション開発部
１７  組み合わせ選択部
１８  コード電力相関情報記憶部
１８ａ  コード電力相関テーブル
１８ｂ  使用コードテーブル
２０１  実機トレースログ
２０２  実機電流ログ
Ｔ１  テーブル
【図１】
0005790431.tif 000002
【図２】
0005790431.tif 000003
【図３】
0005790431.tif 000004
【図４】
0005790431.tif 000005
【図５】
0005790431.tif 000006
【図６】
0005790431.tif 000007
【図７】
0005790431.tif 000008
【図８】
0005790431.tif 000009
【図９】
0005790431.tif 000010
【図１０】
0005790431.tif 000011
【図１１】
0005790431.tif 000012
【図１２】
0005790431.tif 000013
【図１３】
0005790431.tif 000014
【図１４】
0005790431.tif 000015
【図１５】
0005790431.tif 000016
【図１６】
0005790431.tif 000017
【図１７】
0005790431.tif 000018
【図１８】
0005790431.tif 000019
【図１９】
0005790431.tif 000020
【図２０】
0005790431.tif 000021
【図２１】
0005790431.tif 000022
【図２２】
0005790431.tif 000023
【図２３】
0005790431.tif 000024
【図２４】
0005790431.tif 000025
【図２５】
0005790431.tif 000026
【図２６】
0005790431.tif 000027