JP2012145987A - ソフトウェア性能問題指摘方法 - Google Patents

ソフトウェア性能問題指摘方法 Download PDF

Info

Publication number
JP2012145987A
JP2012145987A JP2011001604A JP2011001604A JP2012145987A JP 2012145987 A JP2012145987 A JP 2012145987A JP 2011001604 A JP2011001604 A JP 2011001604A JP 2011001604 A JP2011001604 A JP 2011001604A JP 2012145987 A JP2012145987 A JP 2012145987A
Authority
JP
Japan
Prior art keywords
source code
unit
indication method
software
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2011001604A
Other languages
English (en)
Inventor
Hiroaki Nakatani
浩晃 中谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2011001604A priority Critical patent/JP2012145987A/ja
Publication of JP2012145987A publication Critical patent/JP2012145987A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】 ソフトウェア開発において、コード作成者は、機能実装を優先しコーディングした後、性能目標達成に向けて性能最適化を実施するため、設計プロセスの後工程での手戻りが多くなる傾向がある。
【解決手段】 ソフトウェア性能問題指摘方法において、ソフトウェア開発時に、裏で走っているバックグラウンドソフトウェアであって、入力されたソースコードの実行時間等を算出し、その算出実行時間が所定の時間(目標時間)以上の場合、警告する。
【選択図】図1

Description

本発明は、ソフトウェア開発における性能問題を、コードを記述する際に作成者に通知することで、性能向上と品質向上を可能にする技術に関する。
今日の組込プロセッサを始めとする組込システム機器の高機能化、多機能化、複雑化に伴い、組込ソフトウェア開発は、急激に肥大化し複雑化している。組込みソフトウェアの肥大化・複雑化が進む状況の中、解決すべき課題もより複雑化しており、組込ソフトウェアの高性能化、高品質化、開発の短期間化は、組込みソフトウェア開発者の共通の課題となっている。特に高性能化に関して、現状のソフトウェア開発の現場では、品質を確保するために、複雑な機能実装を優先して行うため、性能対策は機能実装後に実施される傾向がある。そのため、性能対策のための十分な時間の確保が出来ずに、性能未達問題が発生してしまう。
従来、ソフトウェア開発支援を目的に、作成したソフトウェアの計算時間予測を、テストデータを用いて、ソフトウェアを実際に実行して調べる方法が提案されている。ところが、この方法では、実際にソフトウェアを動作させる必要があるため、少なくとも動作する状態までソフトウェアを作りこむ必要がある。ソフトウェア完成後に、実際に動作させ、計算時間を調べ、性能予測をする方法では、ソフトウェアの肥大化・複雑化が急激に進んでいる今、工数ばかりが膨らむ。一方、実際にソフトウェアを実行するのではなく、ソフトウェアの計算時間、あるいは計算に必要な記憶容量等の性能をソースコードの状態で評価する方法も提案されている。例えば、特許文献1のプログラム自動評価方法では、ソースコードを解析してソフトウェアの計算時間を予測することで、ソフトウェア開発工数削減を実現しようとしている。
特許文献1のソフトウェア自動評価方法は、ソフトウェアのソースコードの構造解析を実施し、ソースコード中の繰り返し構造を抽出し、データ量に対する計算時間あるいはその計算に必要な記憶容量を予測している。ところが、一通りソースコードを作成後に構造解析し、性能を予測する方法では、機能実装を優先し、性能対策は機能実装後に実施する、従来のやり方となる可能性が高く、最終的に性能未達となりかねず、ソフトウェア開発工数短縮への十分な対策とは言えず、更なる改善が必要であると言える。
特開平05−150975号公報
前述のように、ソフトウェア開発において、開発者は機能実装を優先しコーディングした後、性能目標達成に向けて性能最適化を実施するため、設計プロセスの後工程での手戻りが多くなる傾向がある。
本発明が解決しようとする第1の課題は、ソフトウェア開発のやり方は既存と変更せず、開発者は性能を意識せずに機能実装しつつも、性能問題となり得るコードを記述した場合は、開発者に何が原因で性能問題を引き起こしたのか、コード量なのか、記述の仕方なのか等、性能問題が発生する可能性を警告することである。
本発明が解決しようとする第2の課題は、開発者が作成した新規のコードと、開発中の他のコードとを比較し、より高い性能が実現可能なコード、或は、よりメンテナンス性に優れるコードがある場合には、開発者に作成した新規のコードよりも、他のコードの方が性能・メンテナンス性に優れることを通知し、コードを置換えるか否かの判断を促し、自動で置換えるか、手動で置換えるか、置換えないかを判断させることである。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
第1の課題を解決するために、本発明では、ソフトウェア開発者が、性能劣化させずにコード作成できるように、コード作成中に裏で走るソフトウェア、バックグラウンドソフトウェアを構成する。バックグラウンドソフトウェアは、開発者が作成中のソースコードと、ソフトウェア開発における制約条件(行数、命令数、時間情報等)を比較し、性能劣化の有無を判断する機能を有し、結果を開発者に伝達する機能を有する。性能劣化有無の判断機能を有する比較部は、作成中のソースコードから各種情報を抽出する、行数抽出部、命令数抽出部、実行時間抽出部を備える。行数抽出部は、ソースコードの行数を計測する機能を有する。命令数抽出部は、ソースコードをコンパイルし実際の命令数を計測する機能と、既存のコンパイル結果を用いて作成中のソースコードの命令数を推定する機能を有する。実行時間抽出部は、時間情報を持つ関数のモデルから作成中のソースコードを実行した時の実行時間を推定する機能と、既存ソースの実行時間結果を用いて作成中のソースコードの実行時間を推定する機能を有する。
上記手段によれば、例えば、コード作成時、冗長なコード記述をした場合において、制約条件との比較で、行数超過、命令数超過、実行時間超過等の情報を開発者がコード作成中に知ることができ、コード作成中に性能劣化させることを無くせる。また、コード記述時に性能劣化情報をディスプレイ装置に表示することが可能であるので、開発者が、随時、性能劣化を発生させずにコード修正することが可能となり、手戻りを減らすことができ、結果、開発工数を削減できる。そして、ソフトウェア開発の早期の段階で、性能問題の解決ができるため、実機を用いた検証工数も削減でき、製品開発期間の短縮が可能となる。
第2の課題を解決するために、バックグラウンドソフトウェアは、開発者が作成中のソースコードと、その他のソースコードを比較し、開発者が作成した新規のコードが他のソースコード内のコードを置換え可能か、若しくは、開発者が作成した新規のコードを他のソースコード内のコードで置換え可能かを判断する機能を有し、結果を開発者に伝達する機能を有する。置換え可能か否かを判断する機能を有する関数評価部は、2つの機能抽出部と機能照合部、2つの実行時間抽出部と性能照合部を備える。機能抽出部は、ソースコードから関数情報を抽出する機能を有する。機能照合部は、機能抽出部が抽出した関数情報の一覧を作成し、その一覧を比較することで、同じ機能か否かを判定する機能、または、機能照合部内のコンパイラ部で、ソースコードをコンパイルした後の命令列を比較することで、同じ機能か否かを判定する機能を有する。更に、性能照合部からの情報を用いて、同一機能のコードの性能も比較して判定することも可能となる。性能照合部は、実行時間抽出部が抽出した性能情報の一覧を作成し、その一覧を比較することで、新規に作成したコードの性能が他のコードに比べて向上したか否かを判定する機能を有する。更に機能照合部からの情報を用いて、同一機能の他のコードでより高性能を実現可能だと判定することも可能となる。
上記手段によれば、例えば、コード作成時、新たな関数等、コード記述をした場合において、同じ機能を持つ重複コードの作成を防ぐことが可能となる。また、開発者が作成した新規コードにより既存コードの一括置き換えが可能となる場合、修正漏れを防ぎ、ソースコードの品質向上が可能となる。更に、開発者が新規に作成したコードに比べ、他のコードを利用した性能の方がより高い場合、既存コードに置き換えが可能となる。また更に、新規に作成したコードが、同じ機能を有する既存コードに比べメンテナンス性に優れる場合、既存コードを置換えることが可能になる。逆に、新規に作成したコードより、同じ機能を有する既存コードの方がメンテナンス性に優れる場合には、既存コードに置換えることも可能になる。
第1の発明の特徴は、(1)ソフトウェア開発時に、裏で走っているバックグラウンドソフトウェアであって、入力されたソースコードの実行時間を算出し、該実行時間が所定の時間(目標時間)以上の場合、警告するソフトウェア性能問題指摘方法にある。
(1)において、(2)各種制約条件(ソースコードの行数、命令数、時間情報等)と開発中のソースコードを比較し、比較結果を入出力装置に表示することが好ましい。
(1)において、(3)各種制約条件(ソースコードの行数、命令数、時間情報等)を比較するための行数比較部、命令数比較部、実行時間比較部を持ち、ソースコードから各種制約条件と比較する為の情報を抽出する行数抽出部、命令数抽出部、実行時間抽出部を持つことが好ましい。
(1)において、(4)ソースコードから各種制約条件と比較する為の情報を抽出する行数抽出部内に、複数のソースコードの行数を計測する行数計測部をソース毎に持ち、計測結果を纏める計測結果集計部を持つことが好ましい。
(1)において、(5)ソースコードから各種制約条件と比較する為の情報を抽出する命令数抽出部内に、複数のソースコードの命令数を計測する命令数計測部をソース毎に持ち、計測結果を纏める計測結果集計部を持つことが好ましい。
(1)において、(6)複数のソースコードの命令数を計測する命令数計測部内に、ソースコードをコンパイルするコンパイラ部を持つことが好ましい。
(1)において、(7)複数のソースコードの命令数を計測する命令数計測部内に、既存コンパイル結果からソースコードの命令数を推定する照合部を持つことが好ましい。
(1)において、(8)ソースコードから各種制約条件と比較する為の情報を抽出する実行時間抽出部内に、複数のソースコードの実行時間を計測する実行時間計測部をソース毎に持ち、計測結果を纏める計測結果集計部を持つことが好ましい。
(1)において、(9)複数のソースコードの実行時間を計測する実行時間計測部内に、関数の実行時間情報を持つ関数モデルを持ち、関数モデルからソースコードの実行時間を推定する照合部を持つことが好ましい。
(1)において、(10)複数のソースコードの実行時間を計測する実行時間計測部内に、既存の実行時間結果データベースを持ち、該実行時間結果データベースからソースコードの実行時間を推定する照合部を持つことが好ましい。
第2の発明の特徴は、(11)ソフトウェア開発時に、裏で走っているバックグラウンドソフトウェアであって、入力されたソースコードと他のソースコードとを関数評価部で比較し、前記他のソースコードを入力されたソースコードで置換えること、あるいは、前記入力されたソースコードを前記他のソースコードで置換えることが可能であることを、提示するソフトウェア性能問題指摘方法にある。
(11)において、(12)入力されたソースコードと他のソースコードとを比較するために、前記関数評価部に、ソースコードの機能抽出部と実行時間抽出部、機能照合部、性能照合部を持つことが好ましい。
(11)において、(13)ソースコードの機能抽出部内に、複数のソースコードの関数情報を抽出する関数抽出部をソース毎に持ち、抽出結果を纏める結果集計部を持つことが好ましい。
(11)において、(14)ソースコードの機能照合部内に、ソースコードの機能抽出部からの機能情報を基に機能一覧を作成し、入力されたソースコードの機能一覧と、他のソースコードの機能一覧を比較する比較部を持つことが好ましい。
(14)において、(15)前記比較部にソースコードの性能照合部からの性能情報も入力することが好ましい。
(11)において、(16)ソースコードの機能照合部内に、入力されたソースコードをコンパイルするコンパイラ部と、他のソースコードをコンパイルするコンパイラ部を持ち、それぞれのコンパイル結果を比較する比較部を持つことが好ましい。
(11)において、(17)ソースコードの性能照合部内に、ソースコードの実行時間抽出部からの性能情報を基に性能一覧を作成し、入力されたソースコードの性能一覧と、他のソースコードの性能一覧を比較する比較部を持つことが好ましい。
(17)において、(18)前記比較部に機能照合部からの機能情報も入力することが好ましい。
(1)及び(11)において、(19)バックグラウンドソフトウェアがサーバーに搭載され、ネットワークを介して各端末がソフトウェア開発時にバックグラウンドソフトウェアを利用することが好ましい。
(1)及び(11)において、(20)バックグラウンドソフトウェアがデータセンタ内のサーバーに搭載され、ネットワークを介して各端末がソフトウェア開発時にバックグラウンドソフトウェアを利用することが好ましい。
(1)及び(11)において、(21)バックグラウンドソフトウェアがクラウド上のデータセンタ内のサーバー等に搭載され、ネットワークを介して各端末がソフトウェア開発時にバックグラウンドソフトウェアを利用することが好ましい。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
前記第1の課題を解決するための手段により、ソフトウェア開発者は、従来のコーディングのやり方を変えることなく、性能劣化問題を発生させずに、且つ開発期間の短縮が可能となり、更に、ソフトウェアの高品質化も可能となる。
前記第2の課題を解決するための手段により、同じ機能を持ちながら複数の冗長コードが作成されるのを防ぎ、どの開発者がコード作成した場合においても、最良の性能を出せるコード、または、最もメンテナンス性に優れるコードの作成が可能となる。
本発明の第1の基本概念を示す図である。 本発明の第1の基本概念の動作フローを示す図である。 本発明の比較部の構成図である。 本発明の比較部内の行数抽出部の構成図である。 本発明の比較部内の命令数抽出部の構成図である。 本発明の命令数抽出部内の命令数計測部の構成図である。 本発明の比較部内の実行時間抽出部の構成図である。 本発明の実行時間抽出部内の実行時間計測部の構成図である。 本発明の第2の基本概念を示す図である。 本発明の第2の基本概念の動作フローを示す図である。 本発明の関数評価部の構成図である。 本発明の関数評価部内の機能抽出部の構成図である。 本発明の関数評価部内の機能照合部の構成図である。 本発明の関数評価部内の性能照合部の構成図である。 本発明の第3の実施例の開発環境を示す図である。 本発明の第4の実施例の開発環境を示す図である。 本発明の第5の実施例の開発環境を示す図である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号は、それが付された構成要素の概念に含まれるものを例示するに過ぎない。
以下、図1から図8を用いて、本発明の一実施例となるソフトウェアの性能問題指摘方法について説明する。
本提案方式は、ソフトウェア開発時、バックグラウンドで開発者が作成するコードを監視することで、制約条件に違反する記述を開発者がした場合に、入出力装置(例えばディスプレイ装置)に違反内容を通知し、性能劣化問題を発生させないソフトウェア開発を可能とするものである。これにより、ソフトウェア開発者は、従来のやり方でコーディングしつつ、ソフトウェアの性能の評価も可能となり、目標性能未達問題を発生することなく、ソースコード作成が可能となることで、システム設計のトータル工数の削減と、ソフトウェア品質の高品質化が可能となる。
図1は、性能問題指摘ソフトウェアと入出力装置に映し出されている編集中のソースコードの関係を示したものである。本方式では、先述のとおり、開発者がコード作成中に性能劣化問題を発生させた場合に、その問題を指摘するために、バックグラウンドで性能問題指摘ソフトウェアが動作し、常に編集中のソースコードを監視している。性能問題指摘ソフトウェアは、大きく2つ、制約条件である各種情報と、制約条件と開発者が編集しているソースコードの比較を行う比較部を持つ。比較部には、制約条件(行数、命令数、時間情報等)が与えられる。また、開発者が編集しているソースコードの情報が、比較部に入力される。比較部は、この制約条件とソースコードの情報を比較し、その結果を開発者が編集しているソースコードが映し出されている入出力装置上に表示させる。入出力装置上では、性能劣化問題を発生させている編集箇所近辺(例えば編集したコード記述の下の部分)に、違反情報が表示される。具体的には、制約条件毎に、行数の場合は、何行違反あるいは何行超過、命令数の場合は、何命令違反あるいは何命令超過、時間情報の場合は、何時間(s, ms, μs, ns等)違反あるいは何時間超過、等の違反情報が入出力装置上に表示される。
図2は、性能問題指摘ソフトウェアの動作フローを示したものである。先述した図1の説明にもあるように、このソフトウェアは、開発者がコード作成中にバックグラウンドで常に動作しているものである。フローの説明では、1つ1つ順を追って説明するが、このソフトウェアの比較部は常に動作しているものである。フローの説明をすると、まず、開発者がソースコードを編集する。ソースコードの編集と同時に、性能問題指摘ソフトウェアの比較部では、開発中のソースコードと制約条件(行数、命令数、時間情報等)の比較を実施する。その後、比較結果を判定し、制約条件を違反していた場合は、制約条件違反結果(行数・命令数・実行時間等)を入出力装置上に表示する。制約条件を違反していなかった場合は、開発完了か否かを判定する。開発完了であれば、終了し、開発完了でなければ、再びソースコード編集を実行する。
図3は、性能問題指摘ソフトウェアの比較部の構成を示したものである。比較部は、制約条件と、編集中のソースコードとの比較を行うために、各制約条件毎に比較部と編集中のソースコードから情報を抽出する抽出部を持つ。行数比較部は、制約条件の行数と、編集中のソースコードから抽出した行数情報を比較し、制約条件を満たさない場合に、違反情報として、何行違反しているのかを入出力装置上に表示する。表示する項目は、2種類あり、全てのソースコードの行数の合計で何行違反しているのか、若しくは、編集中のソースコードのみで何行違反しているのか、をそれぞれ表示する。行数抽出部は、編集中のソースコードの行数を抽出する。命令数比較部は、制約条件の命令数と、編集中のソースコードから抽出した命令数情報を比較し、制約条件を満たさない場合に、違反情報として、何命令違反しているのかを入出力装置上に表示する。表示する項目は、2種類あり、全てのソースコードの命令数の合計で何命令違反しているのか、若しくは、編集中のソースコードのみで何命令違反しているのか、をそれぞれ表示する。命令数抽出部は、編集中のソースコードの命令数を抽出する。実行時間比較部は、制約条件の時間情報と、編集中のソースコードから抽出した時間情報を比較し、制約条件を満たさない場合に、違反情報として、制約条件に対して違反している実行時間(例えば、10us超過等)を入出力装置上に表示する。表示する項目は、2種類あり、全てのソースコードの実行時間の合計し、制約条件に対する超過分の実行時間、若しくは、編集中のソースコードのみで、制約条件に対する超過分の実行時間、をそれぞれ表示する。
図4は、行数抽出部の構成を示したものである。図4(a)の場合は、行数抽出部は、各ソースコード(A, B, C, …, N)の行数計測部と計測結果集計部とで構成される。この構成は、先述の図3で説明した、全てのソースコードの行数の合計で何行違反しているのか判定する場合のものである。各行数計測部は、対応するソースコードの行数をそれぞれ計測する。計測された各ソースコードの行数は、計測結果集計部で纏められ、全てのソースコードの行数の合計が結果として出力される。図4(b)の場合は、行数抽出部は、1つの行数計測部で構成される。この構成は、先述の図3で説明した、編集中のソースコードのみで何行違反しているのか判定する場合のものである。行数計測部は、対応するソースコードの行数を計測し、結果を出力する。
図5は、命令数抽出部の構成を示したものである。図5(a)の場合は、命令数抽出部は、各ソースコード(A, B, C, …, N)の命令数計測部と計測結果集計部とで構成される。この構成は、先述の図3で説明した、全てのソースコードの命令数の合計で何命令違反しているのか判定する場合のものである。各命令数計測部は、対応するソースコードの命令数をそれぞれ計測する。計測された各ソースコードの命令数は、計測結果集計部で纏められ、全てのソースコードの命令数の合計が結果として出力される。図5(b)の場合は、命令数抽出部は、1つの命令数計測部で構成される。この構成は、先述の図3で説明した、編集中のソースコードのみで何命令違反しているのか判定する場合のものである。命令数計測部は、対応するソースコードの命令数を計測し、結果を出力する。
図6は、命令数計測部の構成を示したものである。図6(a)は、1つのコンパイラ部で構成される。コンパイラ部は、編集中のソースコードをコンパイルし、コンパイル結果の命令数を結果として出力する。実際にコンパイルを実行するため、正確な命令数を計測することが可能となる。図6(b)は、既存コンパイル結果DBと、照合部で構成される。既存コンパイル結果DBは、既存のソースコードのコンパイル結果を纏めたものである。照合部は、既存コンパイル結果DBと編集中のソースコードを照合し、編集中のソースコードをコンパイルした場合、どの程度の命令数になるのかを推定し出力する。推定は、例えば、既存コンパイル結果DBと編集中のソースコードを照合する時、編集中の記述に似た記述を既存コンパイル結果DBから探索し命令数を推定する方法がある。
図7は、実行時間抽出部の構成を示したものである。図7(a)は、各ソースコード(A, B, C, …, N)の実行時間計測部と計測結果集計部とで構成される。この構成は、先述の図3で説明した、全てのソースコードの実行時間を合計し、制約条件に対する超過分の実行時間を判定する場合のものである。各実行時間計測部は、対応するソースコードの実行時間をそれぞれ計測する。計測された各ソースコードの実行時間は、計測結果集計部で纏められ、全てのソースコードの実行時間の合計が結果として出力される。図7(b)の場合は、実行時間抽出部は、1つの実行時間計測部で構成される。この構成は、先述の図3で説明した、編集中のソースコードのみで、制約条件に対する超過分の実行時間を判定する場合のものである。実行時間計測部は、対応するソースコードの実行時間を計測し、結果を出力する。
図8は、実行時間計測部の構成を示したものである。図8(a)は、時間情報を持つ関数モデルと照合部で構成される。関数モデルとは、各関数の実行時間情報を持つモデルである。照合部は、関数モデルと編集中のソースコードを照合し、関数モデルの時間情報を使って、編集中のソースコードの実行時間を推定し出力する。図8(b)は、既存実行結果DBと照合部で構成される。既存実行結果DBとは、既存のソースコードを実行させた時の結果の時間情報を纏めたものである。例えば、この既存実行結果DBと編集中のソースコードを照合し、編集中のソース記述と似た記述を既存実行結果DBで探索し、実行時間を推定する方法がある。
図9は、性能問題指摘ソフトウェアと入出力装置に映し出されている編集中のソースコードの関係を示したものである。本方式では、先述のとおり、開発者がコード作成中に性能劣化問題を指摘するために、バックグラウンドで性能問題指摘ソフトウェアが動作し、常に編集中のソースコードを監視している。性能問題指摘ソフトウェアは、編集中のソースコード以外のソースコードと編集中のソースコードとを比較し評価する関数評価部を持つ。関数評価部には、先述のとおり、編集中のソースコード以外のソースコードと、編集中のソースコードが入力される。関数評価部は、編集中のソースコードと、それ以外のソースコードを比較し、新規開発コードで既存コードを置換える、新規開発コードよりも既存コードの性能やメンテナンス性が高い等の結果を開発者が編集しているソースコードが映し出されている入出力装置上に表示させる。入出力装置上では、置換え対象となり得る編集箇所近辺(例えば編集したコード記述の下の部分)に、置換え情報が表示される。具体的には、例えば、新規に開発したコードの性能が、既存コードに比べ良い場合、編集部分のコードを既存コードにも適用するとどれだけの性能向上の可能性があり、一括で既存コードを新規開発コードに置換えるか否かの判断を開発者に仰ぐ旨の表示が入出力装置上にされる。
図10は、性能問題指摘ソフトウェアの動作フローを示したものである。先述した図9の説明にもあるように、このソフトウェアは、開発者がコード作成中にバックグラウンドで常に動作しているものである。フローの説明では、1つ1つ順を追って説明するが、このソフトウェアの比較部は常に動作しているものである。フローの説明をすると、まず、開発者がソースコードを編集する。ソースコードの編集と同時に、性能問題指摘ソフトウェアの関数評価部では、開発中のソースコードとそれ以外のソースコードの比較を実施する。その後、比較結果を判定し、既存コードを新規開発コードに置換えが可能な場合、または、新規開発コードを既存コードに置き換えが可能な場合は、コードの置換えが可能なことを入出力装置上に表示する。ソフトウェアが提示したコードに自動で置換えるか否かをコード開発者が判断し、自動で置換える場合は、一括でコードを置換える。自動で置換えない場合は、開発者が手動で置換えるか否かを判断し、手動で置換えるか、若しくは、ソフトウェアの提示を拒否し置換えないことも選択できる。自動置換え、または、手動置換えした場合は、再度開発中のソースコードと他のソースコードとの比較を行い、更に置換え可能か否かを判定する。ここで更に置換え可能なものがなく、開発完了の場合は、終了する。開発完了ではない場合は、再びソースコード編集を実行する。自動置換えも手動置換えもしない場合は、開発完了であれば終了し、開発完了ではない場合は、再びソースコード編集を実行する。
図11は、関数評価部の構成を示したものである。関数評価部は、機能を評価する部分(機能抽出部1、機能抽出部2、機能照合部)と、性能を評価する部分(実行時間抽出部1、実行時間抽出部2、性能照合部)の2つで構成される。機能抽出部1と2は、編集中のソースコード以外のソースコードと、編集中のソースコードから機能を抽出するものである。機能照合部は、機能抽出部1と機能抽出部2の結果を照合し、新規に開発したソースコードで、同じ機能を有する既存のソースコードの置換えが可能か否かを判定し、置換えが可能な場合は、どの部分のコードがどのコードに置換えが可能か入出力装置上に表示する。逆に、新規に開発したソースコードを、同じ機能を有する既存のソースコードへの置換えが可能か否かも同時に判定する。また、性能照合部からの情報を使って、新規開発コードより同じ機能を有しつつ性能の高い既存コードへの置換え、または、既存コードより性能の高い新規開発コードへの置換え、若しくは、性能はほぼ差が無いが、メンテナンス性の高い新規開発コードへの既存コードの置換え、または、既存コードへの新規開発コードの置換えを判定することも可能である。実行時間抽出部1と2は、図3で説明した実行時間抽出部と同じものである。性能照合部は、実行時間抽出部1と実行時間抽出部2の結果を照合し、既存コードよりも性能向上が見込める新規開発コードに置換え可能か否か、または、新規開発コードよりも性能向上が見込める既存コードに置換え可能か否かを判定し、置換えが可能な場合は、どの部分のコードがどのコードに置換えが可能か入出力装置上に表示する。また、機能照合部からの情報を使って、新規開発コードより同じ機能を有しつつ性能の高い既存コードへの置換え、または、既存コードより性能の高い新規開発コードへの置換え、若しくは、性能はほぼ差が無いが、メンテナンス性の高い新規開発コードへの既存コードの置換え、または、既存コードへの新規開発コードの置換えを判定することも可能である。
図12は、機能抽出部の構成を示したものである。機能抽出部は、各ソースコード(A, B, C, …, N)の関数抽出部と結果集計部とで構成される。各関数抽出部は、対応するソースコードの関数から機能情報をそれぞれ抽出する。抽出された各ソースコードの機能情報は、結果集計部で纏められ、全てのソースコードの機能情報が結果として出力される。
図13は、機能照合部の構成を示したものである。図13(a)の構成では、機能照合部は、機能抽出部から出力された機能情報から機能一覧を作成し、編集中ソースコード以外のソースコードの機能一覧1と、編集中ソースコードの機能一覧2を比較部で比較し、同じ機能を有するよりメンテナンス性の高いコードへの置換えが可能である場合は、どの部分のコードがどのコードに置換えが可能かを結果として出力する。図13(b)の構成では、機能照合部は、ソースコードをコンパイラ部に入力し、その結果を比較し、例えば、似たような命令列が出力されるコードを同じ機能と判定し、よりメンテナンス性の高いコードへの置換えが可能である場合は、どの部分のコードがどのコードに置換えが可能かを結果として出力する。また図13(a), 図13(b)どちらの場合も性能照合部からの情報を使って、同じ機能を有しつつ新規開発コードより性能の高い既存コードへの置換え、または、既存コードより性能の高い新規開発コードへの置換え、若しくは、性能はほぼ差が無いが、メンテナンス性の高い新規開発コードへの既存コードの置換え、または、既存コードへの新規開発コードの置換えを判定することも可能である。
図14は、性能照合部の構成を示したものである。性能照合部では、実行時間抽出部から出力された性能情報から性能一覧を作成し、編集中ソースコード以外のソースコードの性能一覧1と、編集中ソースコードの性能一覧2を比較部で比較し、新規開発コードが既存コードより性能向上が見込め、置換えが可能である場合は、どの部分のコードがどのコードに置換えが可能かを結果として出力する。若しくは、新規開発コードよりも既存コードの方が性能が良く、新規開発コードを既存コードに置換えた方が良い場合も同様に、どの部分のコードがどのコードに置換えが可能かを結果として出力する。また、機能照合部からの情報を使って、同じ機能を有しつつ新規開発コードより性能の高い既存コードへの置換え、または、既存コードより性能の高い新規開発コードへの置換えを判定することも可能である。
図15は、性能問題指摘ソフトウェアを導入した開発環境の一例を示す図である。例えば、1か所の開発拠点で複数の開発者が同じソフトウェアを開発している場合、サーバーと各端末がネットワークで繋がれた状態で、各開発者がソースコードの編集を行う場合がある。この場合、性能問題指摘ソフトウェアを各端末では無く、サーバーに導入することで、複数の開発者が同時にソフトウェア開発するのを常に監視し、性能劣化問題が発生するのを防ぐことができる。また、ソースコードの置換え等も常に性能問題指摘ソフトウェアがサーバー上で監視しているため、開発者が新たなコードを作成後、より品質の良いコードに置換えることで、ソフトウェアの品質向上、性能向上、また、性能問題を防ぐことによる開発工数削減も可能となる。
図16は、性能問題指摘ソフトウェアを導入した開発環境の一例を示す図である。例えば、複数箇所の開発拠点で複数の開発者が同じソフトウェアを開発している場合、サーバーが設置されているデータセンターと各拠点の端末がネットワークで繋がれた状態で、各拠点の開発者がソースコードの編集を行う場合がある。この場合、性能問題指摘ソフトウェアを各端末では無く、データセンターのサーバーに導入することで、各拠点の複数の開発者が同時にソフトウェア開発するのを常に監視し、性能劣化問題が発生するのを防ぐことができる。また、ソースコードの置換え等も常に性能問題指摘ソフトウェアがデータセンターのサーバー上で監視しているため、開発者が新たなコードを作成後、より品質の良いコードに置換えることで、ソフトウェアの品質向上、性能向上、また、性能問題を防ぐことによる開発工数削減も可能となる。
図17は、性能問題指摘ソフトウェアを導入した開発環境の一例を示す図である。例えば、複数箇所の開発拠点で複数の開発者が同じソフトウェアを開発している場合、クラウド上のサーバーやデータセンターと各拠点の端末がネットワークで繋がれた状態で、各拠点の開発者がソースコードの編集を行う場合がある。この場合、性能問題指摘ソフトウェアを各端末では無く、クラウド上のサーバーや、データセンターのサーバーに導入することで、複数の開発者が同時にソフトウェア開発するのを常に監視し、性能劣化問題が発生するのを防ぐことができる。また、ソースコードの置換え等も常に性能問題指摘ソフトウェアがクラウド上のサーバーや、データセンターのサーバー上で監視しているため、開発者が新たなコードを作成後、より品質の良いコードに置換えることで、ソフトウェアの品質向上、性能向上、また、性能問題を防ぐことによる開発工数削減も可能となる。
本発明は、ソフトウェア開発における性能問題を、コードを記述する際に作成者に通知することで、性能向上と品質向上を可能にし、設計プロセスの後工程での手戻りを少なくしたソフトウェア性能問題指摘方法技術として、組込ソフトウェア開発に利用できる。
DB:Database。

Claims (18)

  1. ソフトウェア開発時に、裏で走っているバックグラウンドソフトウェアであって、入力されたソースコードの実行時間を算出し、該実行時間が所定の時間以上の場合、警告することを特徴とするソフトウェア性能問題指摘方法。
  2. 請求項1記載のソフトウェア性能問題指摘方法において、
    各種制約条件と開発中のソースコードを比較し、比較結果を入出力装置に表示することを特徴とするソフトウェア性能問題指摘方法。
  3. 請求項1記載のソフトウェア性能問題指摘方法において、
    各種制約条件を比較するための行数比較部、命令数比較部、実行時間比較部を持ち、ソースコードから各種制約条件と比較する為の情報を抽出する行数抽出部、命令数抽出部、実行時間抽出部を持つことを特徴とするソフトウェア性能問題指摘方法。
  4. 請求項1記載のソフトウェア性能問題指摘方法において、
    ソースコードから各種制約条件と比較する為の情報を抽出する行数抽出部内に、複数のソースコードの行数を計測する行数計測部をソース毎に持ち、計測結果を纏める計測結果集計部を持つことを特徴とするソフトウェア性能問題指摘方法。
  5. 請求項1記載のソフトウェア性能問題指摘方法において、
    ソースコードから各種制約条件と比較する為の情報を抽出する命令数抽出部内に、複数のソースコードの命令数を計測する命令数計測部をソース毎に持ち、計測結果を纏める計測結果集計部を持つことを特徴とするソフトウェア性能問題指摘方法。
  6. 請求項1記載のソフトウェア性能問題指摘方法において、
    複数のソースコードの命令数を計測する命令数計測部内に、ソースコードをコンパイルするコンパイラ部を持つことを特徴とするソフトウェア性能問題指摘方法。
  7. 請求項1記載のソフトウェア性能問題指摘方法において、
    複数のソースコードの命令数を計測する命令数計測部内に、既存コンパイル結果からソースコードの命令数を推定する照合部を持つことを特徴とするソフトウェア性能問題指摘方法。
  8. 請求項1記載のソフトウェア性能問題指摘方法において、
    ソースコードから各種制約条件と比較する為の情報を抽出する実行時間抽出部内に、複数のソースコードの実行時間を計測する実行時間計測部をソース毎に持ち、計測結果を纏める計測結果集計部を持つことを特徴とするソフトウェア性能問題指摘方法。
  9. 請求項1記載のソフトウェア性能問題指摘方法において、
    複数のソースコードの実行時間を計測する実行時間計測部内に、関数の実行時間情報を持つ関数モデルを持ち、関数モデルからソースコードの実行時間を推定する照合部を持つことを特徴とするソフトウェア性能問題指摘方法。
  10. 請求項1記載のソフトウェア性能問題指摘方法において、
    複数のソースコードの実行時間を計測する実行時間計測部内に、既存の実行時間結果データベースを持ち、該実行時間結果データベースからソースコードの実行時間を推定する照合部を持つことを特徴とするソフトウェア性能問題指摘方法。
  11. ソフトウェア開発時に、裏で走っているバックグラウンドソフトウェアであって、入力されたソースコードと他のソースコードとを関数評価部で比較し、前記他のソースコードを入力されたソースコードで置換えること、あるいは、前記入力されたソースコードを前記他のソースコードで置換えることが可能であることを、提示することを特徴とするソフトウェア性能問題指摘方法。
  12. 請求項11記載のソフトウェア性能問題指摘方法において、
    入力されたソースコードと他のソースコードとを比較するために、前記関数評価部に、ソースコードの機能抽出部と実行時間抽出部、機能照合部、性能照合部を持つことを特徴とするソフトウェア性能問題指摘方法。
  13. 請求項11記載のソフトウェア性能問題指摘方法において、
    ソースコードの機能抽出部内に、複数のソースコードの関数情報を抽出する関数抽出部をソース毎に持ち、抽出結果を纏める結果集計部を持つことを特徴とするソフトウェア性能問題指摘方法。
  14. 請求項11記載のソフトウェア性能問題指摘方法において、
    ソースコードの機能照合部内に、ソースコードの機能抽出部からの機能情報を基に機能一覧を作成し、入力されたソースコードの機能一覧と、他のソースコードの機能一覧を比較する比較部を持つことを特徴とするソフトウェア性能問題指摘方法。
  15. 請求項14記載のソフトウェア性能問題指摘方法において、
    前記比較部にソースコードの性能照合部からの性能情報も入力することを特徴とするソフトウェア性能問題指摘方法。
  16. 請求項11記載のソフトウェア性能問題指摘方法において、
    ソースコードの機能照合部内に、入力されたソースコードをコンパイルするコンパイラ部と、他のソースコードをコンパイルするコンパイラ部を持ち、それぞれのコンパイル結果を比較する比較部を持つことを特徴とするソフトウェア性能問題指摘方法。
  17. 請求項11記載のソフトウェア性能問題指摘方法において、
    ソースコードの性能照合部内に、ソースコードの実行時間抽出部からの性能情報を基に性能一覧を作成し、入力されたソースコードの性能一覧と、他のソースコードの性能一覧を比較する比較部を持つことを特徴とするソフトウェア性能問題指摘方法。
  18. 請求項17記載のソフトウェア性能問題指摘方法において、
    前記比較部に機能照合部からの機能情報も入力することを特徴とするソフトウェア性能問題指摘方法。
JP2011001604A 2011-01-07 2011-01-07 ソフトウェア性能問題指摘方法 Pending JP2012145987A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011001604A JP2012145987A (ja) 2011-01-07 2011-01-07 ソフトウェア性能問題指摘方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011001604A JP2012145987A (ja) 2011-01-07 2011-01-07 ソフトウェア性能問題指摘方法

Publications (1)

Publication Number Publication Date
JP2012145987A true JP2012145987A (ja) 2012-08-02

Family

ID=46789510

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011001604A Pending JP2012145987A (ja) 2011-01-07 2011-01-07 ソフトウェア性能問題指摘方法

Country Status (1)

Country Link
JP (1) JP2012145987A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015011476A (ja) * 2013-06-27 2015-01-19 富士電機株式会社 ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム
WO2018096588A1 (ja) * 2016-11-22 2018-05-31 三菱電機株式会社 情報処理装置、情報処理方法及び情報処理プログラム
US10990073B2 (en) 2016-08-30 2021-04-27 Mitsubishi Electric Corporation Program editing device, program editing method, and computer readable medium

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015011476A (ja) * 2013-06-27 2015-01-19 富士電機株式会社 ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム
US10990073B2 (en) 2016-08-30 2021-04-27 Mitsubishi Electric Corporation Program editing device, program editing method, and computer readable medium
WO2018096588A1 (ja) * 2016-11-22 2018-05-31 三菱電機株式会社 情報処理装置、情報処理方法及び情報処理プログラム

Similar Documents

Publication Publication Date Title
US8601441B2 (en) Method and system for evaluating the testing of a software system having a plurality of components
CN107729252B (zh) 用于降低升级软件时的不稳定性的方法和系统
US8286143B2 (en) Method and system for monitoring code change impact on software performance
US6651244B1 (en) System and method for determining program complexity
US20140365990A1 (en) Software evaluation device and method
US20140123110A1 (en) Monitoring and improving software development quality
US11748072B2 (en) Apparatus and method for source code optimisation
US20140033174A1 (en) Software bug predicting
WO2007041242A2 (en) Systems and methods for monitoring software application quality
Boogerd et al. Evaluating the relation between coding standard violations and faultswithin and across software versions
Felderer et al. Integrating manual and automatic risk assessment for risk-based testing
US20230086361A1 (en) Automatic performance evaluation in continuous integration and continuous delivery pipeline
US20090327874A1 (en) Validation assisted document conversion design
JP2012145987A (ja) ソフトウェア性能問題指摘方法
CN103577882A (zh) 一种基于uml的量化项目资源控制方法
KR102066868B1 (ko) 목표 신뢰성 지수를 만족하도록 전장용 소프트웨어 안전성을 시뮬레이션하는 방법 및 장치
CN118113508A (zh) 网卡故障风险预测方法、装置、设备及介质
Silva Filho et al. Supporting concern-based regression testing and prioritization in a model-driven environment
JP2001337846A (ja) ソフトウエア品質検査支援システム及び方法
CN115983191A (zh) 测试点验证方法及相关装置
KR102426581B1 (ko) 전장용 소프트웨어 안전성 분석 방법 및 장치
CN115271277A (zh) 电力设备画像构建方法、系统、计算机设备及存储介质
CN108845945A (zh) 应用测试优化方法及装置
EP4202689A1 (en) Change correlation analysis-based test case selection method and apparatus
CN109669868A (zh) 软件测试的方法及系统

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120521