Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7514785B2 - ソフトウェア性能検証システム、およびソフトウェア性能検証方法 - Google Patents
[go: Go Back, main page]

JP7514785B2 - ソフトウェア性能検証システム、およびソフトウェア性能検証方法 - Google Patents

ソフトウェア性能検証システム、およびソフトウェア性能検証方法 Download PDF

Info

Publication number
JP7514785B2
JP7514785B2 JP2021038744A JP2021038744A JP7514785B2 JP 7514785 B2 JP7514785 B2 JP 7514785B2 JP 2021038744 A JP2021038744 A JP 2021038744A JP 2021038744 A JP2021038744 A JP 2021038744A JP 7514785 B2 JP7514785 B2 JP 7514785B2
Authority
JP
Japan
Prior art keywords
code
performance verification
performance
partial code
software
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.)
Active
Application number
JP2021038744A
Other languages
English (en)
Other versions
JP2022138708A (ja
Inventor
夢龍 楊
恭平 小山
敦介 新原
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 JP2021038744A priority Critical patent/JP7514785B2/ja
Priority to CN202280019451.2A priority patent/CN116940932A/zh
Priority to PCT/JP2022/005632 priority patent/WO2022190772A1/ja
Priority to US18/549,179 priority patent/US20240168859A1/en
Priority to EP22766737.5A priority patent/EP4307120B1/en
Publication of JP2022138708A publication Critical patent/JP2022138708A/ja
Application granted granted Critical
Publication of JP7514785B2 publication Critical patent/JP7514785B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • G06F11/3616Analysis of software for verifying properties of programs using software metrics
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、ソフトウェア性能検証システム、およびソフトウェア性能検証方法に関する。
特許文献1には、ソフトウェアの性能を予測するソフトウェア性能予測システムに関して記載されている。ソフトウェア性能予測システムは、複数の端末からソフトウェアの開発に伴う初期ソースコードもしくは変更ソースコードの入力を受け付け、受け付けたソースコードをソースコード情報としてデータベースに登録し、変更ソースコードによるソフトウェアの性能を登録済のソースコード情報に含まれる旧ソースコードによるソフトウェアの性能と比較することにより新旧ソースコードの性能の低減比率を算出し、性能の低減比率が所定の値を超えるか否かを判定し、性能低減比率が所定の値を超えると外部に判定結果を通知する。
特許文献2には、システム開発における性能ボトルネックを予測するシステム分析装置に関して記載されている。システム分析装置は、開発システム設計情報に類似した過去システム設計情報を類似システム検出結果として検出し、開発システム設計情報に含まれる開発システム機能部品と類似する過去システム機能部品を類似機能検索結果として検索し、開発システム要件、過去システム要件、開発システム機能部品、過去システム機能部品、および過去のシステムの過去システム測定結果を用いて、開発システム機能部品および過去システム機能部品が性能情報と結びついたシステム部品性能情報を取得し、類似システム検出結果とシステム部品性能情報から性能ボトルネックとなるシステム機能部品を検出する。
特開2012-234448号公報 特開2020-149681号公報
ソフトウェアの開発に際しては、ソフトウェアに実装されるべき機能に関する要件(以下、「機能要件」と称する。)と、ソフトウェアが満たすべき性能に関する要件(以下、「性能要件」と称する。)とを満たす必要がある。このうち機能要件を満たすか否かについては、ソフトウェア開発の各段階において開発者がソースコードに基づき確認することが可能であるが、性能要件についてはソースコードのレベルでは判断することが難しい。また、いわゆる性能解析ツール(プロファイラ)を用いて行われるソフトウェアの性能検証は、開発工程の後期において、実行コードの生成(コンパイル(compile)、ビルド(build)等)に必要なソースコードやデータが出揃わなければ行うことができないため、当該検証により性能要件を満たさないことが発覚した場合は手戻り工数が大きく、生産効率に与える影響が大きい。また、ソフトウェアの性能検証に際しては、様々な実行状況を想定したテストケースを設定し、各テストケースについて多量のテストデータを用意する必要があるため準備工数が大きい。
特許文献1では、変更ソースコードによるソフトウェアの性能を、登録済のソースコード情報に含まれる旧ソースコードによるソフトウェアの性能と比較している。しかし、上記比較を行うために変更ソースコードをコンパイルしビルドする必要があり、そのために
必要なソースコードやデータが出揃うまで性能を検証することができない。また、同文献に記載の技術は、インタプリタ型の言語のように、コンパイルが不要なプログラム言語については想定していない。また、同文献では、新旧ソースコードの性能の低減比率を求めているが、そのためには、変更前後の夫々についてテストデータを準備する必要がある。
特許文献2は、開発システムの設計情報と過去システム設計情報とを比較、即ち設計情報のレベルで比較することにより、システム設計の効率化を図るものであり、具体的なコードレベルでの性能問題の検証については想定しておらず、同文献に記載の技術はソフトウェアの開発時における性能の検証にかかる負荷軽減を目的とするものではない。
本発明は、このような背景に鑑みてなされたものであり、ソフトウェアの性能の検証を効率よく行うことが可能な、ソフトウェア性能検証システム、およびソフトウェア性能検証方法を提供することを目的とする。
上記目的を達成するための本発明の一つは、ソフトウェア性能検証システムであって、情報処理装置を用いて構成され、ソフトウェアを構成するプログラムのコードを記憶する記憶部と、前記コードの一部である部分コードを抽出する部分コード抽出部と、前記部分コードに基づく特徴量ベクトルを生成する特徴量ベクトル生成部と、学習用の前記部分コードの前記特徴量ベクトルと当該部分コードに基づき実現されるソフトウェアを実行することにより取得される、スループット、レスポンスタイム、及びリソース使用量のうちの少なくともいずれかの指標により表された前記ソフトウェアの性能を示す情報である性能情報と、を含む学習データにより学習した機械学習モデルである性能検証モデルを生成する学習処理部と、前記性能検証モデルに、検証対象の前記部分コードを入力することにより得られる出力に基づく情報を当該部分コードの検証結果として生成する性能検証処理部と、を備える。
その他、本願が開示する課題、およびその解決方法は、発明を実施するための形態の欄、および図面により明らかにされる。
本発明によれば、ソフトウェアの性能の検証を効率よく行うことができる。
性能検証システムの概略的な構成を示すシステムフロー図である。 部分コード抽出処理の例を説明する図である。 部分コード抽出処理の例を説明するフローチャートである。 部分コード抽出処理の他の例を説明する図である。 部分コード抽出処理の他の例を説明するフローチャートである。 特徴量ベクトル生成処理の例を説明する図である。 特徴量ベクトル生成処理の例を説明するフローチャートである。 特徴量ベクトル生成処理の他の例を説明する図である。 単語辞書生成処理を説明するフローチャートである。 特徴量ベクトル化処理を説明するフローチャートである。 性能検証モデルの学習方法の例を説明する図である。 性能検証モデルの学習方法の例を説明するフローチャートである。 性能検証モデルの学習方法の他の例を説明する図である。 性能検証モデルの学習方法の他の例を説明するフローチャートである。 性能検証システムの適用例を説明する図である。 性能検証システムの適用例における処理を説明するフローチャートである。 性能検証システムの他の適用例を説明する図である。 性能検証システムの他の適用例における処理を説明するフローチャートである。 性能検証システム等の構成に用いる情報処理装置の一例である。
以下、実施形態について図面を参照しつつ説明する。尚、以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略もしくは簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。とくに限定しない限り、各構成要素は単数でも複数でも構わない。また、以下の説明において、同一または類似の構成について同一の符号を付して重複した説明を省略することがある。また、以下の説明において、符号の前に付した「S」の文字は処理ステップを意味する。
図1は、一実施形態として説明する情報処理システムであるソフトウェア性能検証システム(以下、「性能検証システム1」と略記する。)の概略的な構成を示すシステムフロー図である。性能検証システム1は、ソフトウェアの開発や保守に際して生成される、所定のプログラミング言語によって記述されているソースコード等のプログラムコード(以下、「コード」と称する。)を機械学習モデル(以下、「性能検証モデル216」と称する。)に入力することによりソフトウェアの性能を検証する。上記性能を表す指標として、例えば、スループット(throughput)、レスポンスタイム(response time)、リソース使
用量(resource usage)がある。
性能検証モデル216は、例えば、既存のコードの記述に当該コードの性能を示す情報(以下、「性能情報」と称する。)をラベル(正解データ)として対応づけた学習データ(訓練データ)を用いて学習(訓練)される。
検証対象のコードの記述言語は必ずしも限定されず、標準的な能力を有するプログラマが解釈可能な言語であればよい。また、上記コードに基づく実行コードの生成方式は必ずしも限定されず、例えば、実行コードの生成に際しコンパイル(compile)やビルド(build)(リンク(link)、メイク(make)等という場合もある。)が要求されるコンパイラ言語でもよいし、逐次実行型のインタプリタ言語のいずれでもよい。
また、上記コードの種類は必ずしも限定されず、例えば、Webページ記述言語、スクリプト言語、サーバサイドで動作するアプリケーションの記述言語、オペレーシングシステム等のシステム記述言語、組み込み(Embeded)ソフトウェアの記述言語、バッチ処理
の記述言語のいずれでもよい。
また、検証対象のコードは、開発時に新規に作成されたコードでもよいし、保守時に更新もしくは追加されたコードでもよい。また、上記コードは、ソフトウェア開発技術者等のユーザがスタンドアロン型の開発環境で記述するものでもよいし、複数の情報処理装置が通信ネットワークを介して接続するリポジトリ環境を用いて行われる共同開発環境において生成されるものでもよい。
尚、以下では、一例として、検証の対象となるコードがコンパイラ言語のソースコードである場合を例として説明する。
性能検証モデル216の種類は必ずしも限定されないが、例えば、二値分類(Binary classification)や多クラス分類(Multi-class classification)を行うモデルが想定さ
れる。性能検証モデル216の実現に用いる機械学習の仕組みとして、例えば、DNN(Deep Neural Network)、サポートベクターマシン(SVM:Support Vector Machine)、決
定木(decision tree)、k近傍法(k-means)がある。性能検証モデル216は、例えば
、特徴量と各特徴量の重みの情報(パラメータ)を含んだ行列により表現される。
学習データの生成に用いる既存のコードは、例えば、検証対象のコードによって実現される情報処理システム(以下、「検証対象システム」と称する。)と機能や構成が類似する既存の他の情報処理システム(以下、「既存類似システム」と称する。)に用いられているコード(以下、「既存コード」と称する。)である。尚、検証対象システムと既存類似システムの機能や構成の類似性は、例えば、各システムの適用分野、各システムの実現方式、各システムを構成するソフトウェアの実行環境、各システムを利用するユーザの種類、開発に用いたプログラム言語の共通性等に基づき判断する。
学習データの生成に用いる既存コードに対応づけるラベルとしては、例えば、既存コードに基づく実行コードについて本番環境やテスト環境で取得される実行ログから取得される情報、上記実行コードについて行われた実行テストやシミュレーションの結果から取得される情報を用いる。また、例えば、既存類似システムに精通する者等が設定した性能情報をラベルとして用いてもよい。
図1に示すように、性能検証システム1は、性能検証部100およびモデル学習部200の各機能を備える。このうち性能検証部100は、検証対象のソースコードについて、性能検証モデル216を用いて性能検証を行う。また、性能検証部100は、既存コードに基づく学習データの生成と、生成した学習データを用いた性能検証モデル216の学習を行う。
同図に示すように、性能検証部100は、部分コード抽出部120、特徴量ベクトル生成部130、および性能検証処理部140を有する。
このうち部分コード抽出部120は、ソースコード群(検証対象)111から、検証対象メソッドリスト112の各メソッドに対応する記述(以下、「部分コード(検証対象)」と称する。)を抽出し、抽出した各部分コード(検証対象)を部分コード群(検証対象)113として出力する。検証対象メソッドリスト112は、検証対象とするメソッド名の一覧であり、例えば、ユーザによってその内容が設定される。
特徴量ベクトル生成部130は、部分コード群(検証対象)113の各部分コード(検証対象)を特徴量ベクトルに変換し、変換した特徴量ベクトルを特徴量ベクトル群(検証対象)114として出力する。
性能検証処理部140は、特徴量ベクトル群(検証対象)114の各特徴量ベクトルを性能検証モデル216に入力し、当該入力について性能検証モデル216が出力する性能情報に基づく情報を検証結果115として生成する。性能検証処理部140は、検証結果115を、例えば、ユーザインタフェースを介してユーザに提供する。
同図に示すように、モデル学習部200は、部分コード抽出部220、特徴量ベクトル生成部230、学習データ生成部240、および学習処理部250を有する。
このうち部分コード抽出部220は、性能検証モデル216の学習に用いるソースコード(以下、「ソースコード群(学習用)211」と称する。)からコード(以下、「部分コード(学習用)」と称する。)を抽出し、抽出した部分コード(学習用)を部分コード群(学習用)213として出力する。
特徴量ベクトル生成部230は、部分コード群(学習用)213の部分コード(学習用)を特徴量ベクトルに変換し、変換した特徴量ベクトルを特徴量ベクトル群(学習用)2
14として出力する。
学習データ生成部240は、特徴量ベクトル群(検証対象)114の各特徴量ベクトルに性能ラベル212の対応するラベルを付与することにより1つ以上の学習データ(特徴量ベクトルとラベルの組)を生成し、生成した各学習データを学習データ群215として出力する。
学習処理部250は、学習データ群215の各学習データの特徴量ベクトルを性能検証モデル216に入力し、入力した特徴量ベクトルについての性能検証モデル216の出力と、入力した特徴量ベクトルに対応づけられているラベルとの差分を用いて性能検証モデル216のパラメータを調節することにより、性能検証モデル216を学習する。
続いて、図1に示した各機能について詳述する。
図2Aは、図1に示した部分コード抽出部120または部分コード抽出部220以下、これらを「部分コード抽出部」と総称する。)が、ソースコード群(検証対象)111またはソースコード群(学習用)211(以下、これらを「ソースコード群」と総称する。)から、部分コード(検証対象)または部分コード(学習用)(以下、これらを「部分コード」と総称する。)を抽出する処理の一例(以下、「部分コード抽出処理S300」と称する。)である。本例では、部分コード抽出部は、ソースコード群から、メソッドを単位として部分コードを抽出する。
尚、部分コード抽出部120は、ソースコード群(検証対象)111から、例えば、検証対象メソッドリスト112の各メソッドに対応するメソッドの記述を部分コード(検証対象)として抽出する。また、部分コード抽出部220は、例えば、ソースコード群(学習用)211に含まれている各メソッドの記述を部分コード(学習用)として抽出する。
図2Bは、部分コード抽出処理S300を説明するフローチャートである。部分コード抽出部は、まず、ソースコード群からソースコードを取得する(S311)。続いて、部分コード抽出部は、取得したソースコードから部分コードを抽出する(S312)。
図3Aは、部分コード抽出処理S300の他の例(以下、「部分コード抽出処理S400」と称する。)を説明する図である。この例では、部分コード抽出部は、ソースコード群(例えば、1つのアプリケーションシステムのようにある1つの情報処理システムを構成しているソースコード群)から、あるメソッドの記述と当該メソッドと呼び出し関係を有するメソッド群(以下、「関連メソッド群」と称する。)の記述とを含むコードを部分コードとして抽出する。
同図に示すように、部分コード抽出部は、まず、ソースコード群から各メソッドの呼び出し関係を表すグラフを生成し、生成したグラフに基づきあるメソッドの記述と当該メソッドの関連メソッド群の記述とを含むコードを部分コードとして抽出する。
尚、部分コード抽出部120は、ソースコード群(検証対象)111から、検証対象メソッドリスト112のメソッドについて、当該メソッドの記述と当該メソッドの関連メソッド群の記述とを含むコードを部分コード(検証対象)として抽出する。また、部分コード抽出部220は、例えば、ソースコード群(学習用)211に含まれているメソッドについて、当該メソッドの記述と当該メソッドの関連メソッド群の記述とを含むコードを部分コード(学習用)として抽出する。
図3Bは、部分コード抽出処理S400を説明するフローチャートである。同図に示す
ように、まず、部分コード抽出部は、ソースコード群からソースコードを取得する(S411)。続いて、部分コード抽出部は、取得したソースコードに基づきメソッド間の呼び出し関係を表すグラフを生成する(S412)。続いて、部分コード抽出部は、ソースコードに含まれているメソッドについて、当該メソッドの記述と当該メソッドの関連メソッド群の記述とを含むコードを部分コードとして抽出する(S413)。
図4Aは、図1に示した特徴量ベクトル生成部130または特徴量ベクトル生成部230(以下、これらを「特徴量ベクトル生成部」と総称する。)が、部分コード(検証対象)または部分コード(学習用)(以下、これらを「部分コード」と総称する。)を特徴量ベクトルに変換する処理の一例(以下、「特徴量ベクトル生成処理S500」と称する。)を説明する図である。この例では、特徴量ベクトル生成部は、部分コードの特徴を表すメトリクス値に基づき特徴量ベクトルを生成する。メトリクス値は、例えば、部分コードにおける、行数、ループ文の出現回数、ループ文の最大階層数、条件分岐文の出現回数、条件分岐文の最大階層数、用いられている変数の数、呼び出しメソッドの数、呼び出しメソッドの行数、呼び出しメソッドのループ文の出現回数、呼び出しメソッドのループ文の最大階層数、呼び出しメソッドの条件分岐文の出現回数、呼び出しメソッドの条件分岐文の最大階層数、呼び出しメソッドの変数数である。特徴量ベクトル生成部は、これらのメトリクス値を要素とするベクトルを特徴量ベクトルとして生成する。
このように部分コードのメトリクス値を用いて特徴量ベクトルを生成することで、部分コードのメトリクス値を特徴として捉えた特徴量ベクトルを生成することができ、部分コードのメトリクス値の違いに基づく性能検証を行うことができる。
図4Bは、特徴量ベクトル生成処理S500を説明するフローチャートである。特徴量ベクトル生成部は、まず、部分コード群から部分コードを取得する(S511)。続いて、特徴量ベクトル生成部は、取得した各部分コードのメトリクス値を求める(S512)。続いて、特徴量ベクトル生成部は、各部分コードについて、夫々のメトリクス値を要素とするベクトルを特徴量ベクトルとして生成する(S513)。
図5Aは、特徴量ベクトル生成処理S500の他の例(以下、「特徴量ベクトル生成処理S600」と称する。)を説明する図である。この例では、特徴量ベクトル生成部は、共通形式で表記された単語に符号を対応づけた情報からなる単語辞書に基づき特徴量ベクトルを生成する。
具体的には、特徴量ベクトル生成部は、ソースコード群(例えば、1つのアプリケーションシステムのようにある1つの情報処理システムを構成しているソースコード群)から抽出された部分コード群に記述されている単語(メソッド名(関数名)、変数型、変数名、データ型、記憶クラス指定子等)を共通形式の表記に変換し、各表記に異なる符号を対応づけたものを単語辞書として生成する。同図の例では、特徴量ベクトル生成部は、部分コード群に記述されている、記憶クラス指定子「static」を「Static」に、データ型「void」を「Void」に、メソッド名「loadData」を「mth#A」に変換し、各表記に夫々、符号
「1」、「2」、「3」、「4」を対応づけた単語辞書を生成している。
続いて、特徴量ベクトル生成部は、特徴量ベクトルへの変換対象の部分コードについて、当該部分コードに含まれている単語を共通形式の表記に変換し、変換した表記に対応する符号を単語辞書から取得し、取得した各符号を要素とするベクトルを特徴量ベクトルとして生成する。同図では、変換対象の部分コードに含まれている各単語の共通形式の表記「Static」、「Void」、「mth#A」に対応する符号「1」、「2」、「3」の各要素を当
該部分コードにおける夫々の出現順に並べて得られるベクトルを特徴量ベクトルとして生成している。
このように部分コードに記述されている単語の組み合わせに基づき特徴量ベクトルを生成することで、例えば、部分コードの構造を特徴として捉えた特徴量ベクトルを生成することができ、部分コードの構造の違いに基づく性能検証を行うことができる。
図5Bは、特徴量ベクトル生成処理S600において、特徴量ベクトル生成部が、部分コード群から単語辞書を生成する処理(以下、「単語辞書生成処理S610」と称する。)を説明するフローチャートである。まず、特徴量ベクトル生成部は、部分コード群の部分コードについて前処理(コメント文等の不要な記述の削除等)を行う(S611)。続いて、特徴量ベクトル生成部は、前処理後の部分コードに記述されている単語を共通形式の表記に変換する(S612)。続いて、特徴量ベクトル生成部は、変換後の部分コードから共通形式で表記された単語を抽出し(S613)、抽出した共通形式の各単語に符号を対応づけて単語辞書を生成する(S614)。
図5Cは、特徴量ベクトル生成処理S600において、特徴量ベクトル生成部が、変換対象の部分コードを、単語辞書を参照して特徴量ベクトルに変換する処理(以下、「特徴量ベクトル化処理」と称する。)を説明するフローチャートである。まず、特徴量ベクトル生成部は、変換対象の部分コードを取得し、取得した部分コードについて前処理(コメント文等の不要な記述の削除等)を行う(S621)。続いて、特徴量ベクトル生成部は、取得した部分コードに記述されている単語を共通形式の表記に変換する(S622)。続いて、特徴量ベクトル生成部は、変換後の部分コードから共通形式で表記された単語を抽出し(S623)、単語辞書を参照して抽出した各単語を符号に変換し、変換した各符号を出現順に並べて得られるベクトルを特徴量ベクトルとして生成する(S624)。
図6Aは、図1に示した学習処理部250が、学習データ群215の学習データを用いて性能検証モデル216を学習する処理の一例(以下、「学習処理S700」と称する。)を説明する図である。この例は、性能検証モデル216が2値分類モデルであり、性能検証モデル216が部分コードの性能を示す単一の指標を出力する場合である。性能検証モデル216として2値分類モデルを用いることで、例えば、性能が基準を満たしているか否かを検証することができる。尚、本例では、上記指標が、部分コードに基づき実現される処理の性能に問題がある確率を示す値である場合を例として説明する。
この例では、学習処理部250は、学習データ(特徴量ベクトルとラベルの組)における特徴量ベクトルを性能検証モデル216に入力し、当該入力について性能検証モデル216が出力する値(本例では「0.3」)と当該学習データのラベル(本例では「0.0」)との差分に基づき性能検証モデル216のパラメータを調整する。
図6Bは、学習処理S700を説明するフローチャートである。学習処理部250は、まず、学習データ群215からが学習データを取得し、取得した学習データの特徴量ベクトルを性能検証モデル216に入力する(S711)。続いて、学習処理部250は、性能検証モデル216の出力と当該学習データのラベルとの差分を求める(S712)。続いて、学習処理部250は、求めた差分に基づき性能検証モデル216のパラメータを更新する(S713)。
図7Aは、図1に示した学習処理部250が、学習データ群215を用いて性能検証モデル216を学習する処理の他の例(以下、「学習処理S800」と称する。)を説明する図である。この例は、性能検証モデル216が多クラス分類モデルであり、性能検証モデル216が部分コードの性能を示す複数の指標(夫々異なる観点に基づく複数の指標)を出力する場合である。性能検証モデル216として多クラス分類モデルを用いることで、例えば、異なる複数の観点(例えば、ループ数やメモリ操作回数等)から性能が基準を
満たしているか否かを検証することができる。
この例では、学習処理部250は、学習データ(特徴量ベクトルとラベルの組)における特徴量ベクトルを性能検証モデル216に入力し、当該入力について性能検証モデル216が出力する観点ごとの値(本例では「ループ多数:0.3」、「メモリ操作多数:0.3」)と当該学習データのラベル(本例では「ループ多数発生:1」、「メモリ操作多数発生:0))との差分に基づき性能検証モデル216のパラメータを調整する。
図7Bは、学習処理S800の一例を説明するフローチャートである。学習処理部250は、まず、学習データ群215からが学習データを取得し、取得した学習データの特徴量ベクトルを性能検証モデル216に入力する(S811)。続いて、学習処理部250は、観点ごとに、性能検証モデル216の出力と当該学習データのラベルとの差分を求める(S812)。続いて、学習処理部250は、求めた差分に基づき性能検証モデル216のパラメータを更新する(S813)。
以上に説明したように、本実施形態の性能検証システム1は、ソースコードから部分コードを抽出し、抽出した部分コードを特徴量ベクトルに変換し、変換した特徴量ベクトルを性能検証モデル216に入力することによりソースコードの性能(部分コードを含むソースコードの実行コードの性能)を検証する。このように、性能検証システム1は、ソースコードに基づき性能を検証するので、例えば、実行コードを生成する前であってもソースコードの性能を検証することができる。そのため、例えば、開発者等のユーザは、ソースコードを記述しつつ、当該ソースコードの実行コードが実行された場合における性能を随時検証することができ、実行コードを生成した後に検証する場合に比べて手戻りの発生が少なくなる。また、ソースコードに潜在する、性能のボトルネックとなるようなコードを早期に発見することができる。また、性能検証システム1は、ソースコードに基づき性能を検証するので、テストケースの設定やテストデータを準備する必要がない。また、性能検証システム1は、インタプリタ型の言語のように、コンパイルが不要なプログラム言語についても適用することができる。このように、本実施形態の性能検証システム1によれば、ソフトウェアの開発時や保守時におけるソフトウェアの性能の検証にかかる負荷を大きく軽減することができ、システムの開発や保守を効率よく行うことができる。
続いて、性能検証システム1の適用例(応用例)について説明する。
図8Aは、性能検証システム1の適用例を示す図である。この例では、ソフトウェアの開発や保守を行うユーザが、ユーザ装置2(情報処理装置)を利用してソースコードを作成し、ユーザ装置2は、性能検証部100に対してユーザが作成したソースコードの検証要求を送信する。性能検証部100は、上記検証要求を受信し、上記ソースコードについて検証結果115を生成し、生成した検証結果115をユーザ装置2に送信する。
性能検証システム1をこのような態様で利用することで、ユーザは、例えば、ユーザ装置2において動作する統合開発環境(IDE :Integrated Development Environment)を利
用して開発や保守の対象となるソースコードを記述しつつ、当該ソースコードの性能検証を簡便かつ迅速に行うことができる。そのため、ユーザは、ソースコードの性能を随時確認しつつ開発作業や保守作業を進めることができ、性能要求を満たした質の高いソフトウェアを効率よく作成することができる。
図8Bは、図8Aに示した適用例においてユーザ装置2と性能検証部100が行う処理を説明するフローチャートである。まず、ユーザ装置2から、ソースコード(ソースコード群(検証対象)111と検証対象メソッドリスト112)が付帯する検証要求が性能検証部100に送信される(S911)。性能検証部100は、受信したソースコードに基
づき検証結果115を生成し(S912)、生成した検証結果115をユーザ装置2に送信する(S913)。ユーザ装置2は、検証結果115を受信すると、その内容をユーザに提示する(S914)。
図9Aは、性能検証システム1の他の適用例を示す図である。この例は、共同開発環境60を利用し複数のユーザが共同してソフトウェアの開発や保守を行う場合である。共同開発環境60は、夫々異なるユーザが操作する複数のユーザ装置2と通信可能に接続し、開発や保守の対象となるソースコード群62をリポジトリ61に管理している。
共同開発環境60は、性能検証部100と通信可能に接続している。共同開発環境60は、ユーザ装置2からソースコードおよび当該ソースコードの登録要求を受信すると、受信したソースコードとともにその検証要求を性能検証部100に送信する。性能検証部100は、上記検証要求を受信し、上記ソースコードについて検証結果115を生成し、生成した検証結果115を共同開発環境60に送信する。
共同開発環境60は、受信した検証結果115が示す性能が予め設定された性能要件を満たしていれば、当該更新済のソースコードをリポジトリ61に登録する。一方、共同開発環境60は、受信した検証結果115が示す性能が予め設定された性能要件を満たしていなければ、当該更新済のソースコードのリポジトリ61への登録は行わず、当該ソースコードが性能要件を満たしていない旨の通知をユーザ装置2に送信する。
性能検証システム1をこのような態様で利用した場合、共同開発環境60のリポジトリ61には性能要件を満たしたソースコード群62のみが管理され、ソフトウェアの品質を恒常的に確保することができる。
図9Bは、図9Aに示した適用例においてユーザ装置2、共同開発環境60、および性能検証部100が行う処理を説明するフローチャートである。共同開発環境60は、ユーザ装置2からソースコード(ソースコード群(検証対象)111と検証対象メソッドリスト112)が付帯する登録要求の受信を監視しており(S1011:NO)、登録要求を受信すると(S1011:YES)、受信したソースコードとともに当該ソースコードの検証要求を性能検証部100に送信する(S1012)。性能検証部100は、ソースコードおよび検証要求を受信すると、受信したソースコードについて検証結果115を生成し、生成した検証結果115を共同開発環境60に送信する(S1013)。共同開発環境60は、検証結果115を受信すると(S1014)、検証結果115が示す性能が予め設定された性能要件を満たしているか否かを判定する(S1015)。検証結果115が示す性能が予め設定された性能要件を満たしていない場合(S1015:NO)、共同開発環境60は、S1011で受信したソースコードが性能要件を満たしておらずリポジトリに登録できない旨の通知(登録不許可通知)をユーザ装置2に送信し(S1021)、その後、処理はS1011に戻る。一方、検証結果115が示す性能が予め設定された性能要件を満たしている場合(S1015:YES)、共同開発環境60は、S1011で受信したソースコードをリポジトリに登録するとともに、当該ソースコードの登録完了通知をユーザ装置2に送信する(S1016)。その後、処理はS1011に戻る。
図10は、以上に説明した性能検証システム1、ユーザ装置2、および共同開発環境60の実現に用いる情報処理装置(コンピュータ)の一例である。例示する情報処理装置10は、プロセッサ101、主記憶装置102、補助記憶装置103、入力装置104、出力装置105、および通信装置106を備える。
尚、例示する情報処理装置10は、その全部または一部が、例えば、クラウドシステムによって提供される仮想サーバのように、仮想化技術やプロセス空間分離技術等を用いて
提供される仮想的な情報処理資源を用いて実現されるものであってもよい。また、情報処理装置10によって提供される機能の全部または一部は、例えば、クラウドシステムがAPI(Application Program Interface)等を介して提供するサービスによって実現して
もよい。また、1つの情報処理装置10を、例えば、性能検証システム1、ユーザ装置2、および共同開発環境60のうちの2つ以上が共用する構成としてもよい。
同図において、プロセッサ101は、例えば、CPU(Central Processing Unit)、
MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、AI(Artificial Intelligence)チップ等を用いて構成されている。
主記憶装置102は、プログラムやデータを記憶する装置であり、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、不揮発性メモリ(NVRAM(Non Volatile RAM))等である。
補助記憶装置103は、例えば、SSD(Solid State Drive)、ハードディスクドラ
イブ、光学式記憶装置(CD(Compact Disc)、DVD(Digital Versatile Disc)等)、ストレージシステム、ICカード、SDカードや光学式記録媒体等の記録媒体の読取/書込装置、クラウドサーバの記憶領域等である。補助記憶装置103には、記録媒体の読取装置や通信装置106を介してプログラムやデータを読み込むことができる。補助記憶装置103に格納(記憶)されているプログラムやデータは主記憶装置102に随時読み込まれる。
入力装置104は、外部からの入力を受け付けるインタフェースであり、例えば、キーボード、マウス、タッチパネル、カードリーダ、ペン入力方式のタブレット、音声入力装置等である。
出力装置105は、処理経過や処理結果等の各種情報を出力するインタフェースである。出力装置105は、例えば、上記の各種情報を可視化する表示装置(液晶モニタ、LCD(Liquid Crystal Display)、グラフィックカード等)、上記の各種情報を音声化する装置(音声出力装置(スピーカ等))、上記の各種情報を文字化する装置(印字装置等)である。尚、例えば、情報処理装置10が通信装置106を介して他の装置との間で情報の入力や出力を行う構成としてもよい。
入力装置104および出力装置105は、ユーザとの間で情報の受け付けや情報の提示を行うユーザインタフェースを構成する。
通信装置106(通信部)は、他の装置との間の通信を実現する装置である。通信装置106は、通信ネットワーク(制御系ネットワーク50、情報/制御系ネットワーク51、情報系ネットワーク52)を介して他の装置との間の通信を実現する、有線方式または無線方式の通信インタフェースであり、例えば、NIC(Network Interface Card)、無線通信モジュール、USBモジュール等である。
情報処理装置10には、例えば、オペレーティングシステム、ファイルシステム、DBMS(DataBase Management System)(リレーショナルデータベース、NoSQL等)、KVS(Key-Value Store)、その他の各種のソフトウェア(入力装置104と出力装置
105によりGUI(Graphical User Interface)等によるユーザインタフェースを実現するソフトウェア、ミドルウェア、各種のアプリケーション等)が導入されていてもよい。
性能検証システム1、ユーザ装置2、および共同開発環境60が備える機能は、例えば、プロセッサ101が、主記憶装置102に格納されているプログラムを読み出して実行することにより、もしくは、情報処理装置10のハードウェア(FPGA、ASIC、AIチップ等)によって実現される。また、性能検証システム1、ユーザ装置2、および共同開発環境60が記憶する各種のデータは、主記憶装置102や補助記憶装置103(記憶部)に記憶される。
また、性能検証システム1の各種の機能の全部又は一部は、例えば、テキストデータマイニング等の公知の各種データマイニング手法、公知の各種処理手法(形態素解析、構文解析、意味解析、文脈解析、特徴量抽出、単語分散表現、固有表現抽出、テキスト分類、系列ラベリング)、公知の各種機械学習手法(深層学習(DNN(Deep Neural Network
)、RNN(Recurrent Neural Network)等)を用いて実現してもよい。
以上、本発明の一実施形態について説明したが、本発明は上記の実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記の実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、上記実施形態の構成の一部について、他の構成の追加や削除、置換をすることが可能である。
例えば、前述した部分コードの抽出方法のバリエーション(図2A,図3A)、前述した特徴量ベクトルの生成方法のバリエーション(図4A,図5A)、モデルの学習方法のバリエーション(図6A,図7A)を多様に組み合わせることにより、様々な実施形態を想定することができる。
また、以上の実施形態では、「メソッド」と単位としてコードから部分コードを抽出する場合を例示したが、例えば、「関数」や「クラス」等の他の種類の処理ブロックを単位としてコードから部分コードを抽出するようにしてもよい。また、例えば、ユーザが設定した抽出方法に従ってコードから部分コードを抽出するようにしてもよい。
また、上記の各構成、機能部、処理部、処理手段等は、それらの一部または全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD(Solid State Drive)等の記録装置、
ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、以上に説明した各情報処理装置の各種機能部、各種処理部、各種データベースの配置形態は一例に過ぎない。各種機能部、各種処理部、各種データベースの配置形態は、これらの装置が備えるハードウェアやソフトウェアの性能、処理効率、通信効率等の観点から最適な配置形態に変更し得る。
また、前述した各種のデータを格納するデータベースの構成(スキーマ(Schema)等)は、リソースの効率的な利用、処理効率向上、アクセス効率向上、検索効率向上等の観点から柔軟に変更し得る。
1 性能検証システム、2 ユーザ装置、60 共同開発環境、61 リポジトリ、62
ソースコード群、100 性能検証部、111 ソースコード群(検証対象)、112
検証対象メソッドリスト、113 部分コード群(検証対象)、114 特徴量ベクトル群(検証対象)、115 検証結果、120 部分コード抽出部、130 特徴量ベク
トル生成部、140 性能検証処理部、200 モデル学習部、211 ソースコード群(学習用)、212 性能ラベル、213 部分コード群(学習用)、214 特徴量ベクトル群(学習用)、215 学習データ群、216 性能検証モデル、220 部分コード抽出部、230 特徴量ベクトル生成部、240 学習データ生成部、250 学習処理部、S300 部分コード抽出処理、S400 部分コード抽出処理、S500 特徴量ベクトル生成処理、S610 単語辞書生成処理、S620 特徴量ベクトル化処理、S710 学習処理、S810 学習処理

Claims (10)

  1. 情報処理装置を用いて構成され、
    ソフトウェアを構成するプログラムのコードを記憶する記憶部と、
    前記コードの一部である部分コードを抽出する部分コード抽出部と、
    前記部分コードに基づく特徴量ベクトルを生成する特徴量ベクトル生成部と、
    学習用の前記部分コードの前記特徴量ベクトルと当該部分コードに基づき実現されるソフトウェアを実行することにより取得される、スループット、レスポンスタイム、及びリソース使用量のうちの少なくともいずれかの指標により表された前記ソフトウェアの性能を示す情報である性能情報と、を含む学習データにより学習した機械学習モデルである性能検証モデルを生成する学習処理部と、
    前記性能検証モデルに、検証対象の前記部分コードを入力することにより得られる出力に基づく情報を当該部分コードの検証結果として生成する性能検証処理部と、
    を備える、ソフトウェア性能検証システム。
  2. 請求項1に記載のソフトウェア性能検証システムであって、
    前記コードはメソッドの記述を含み、
    前記部分コード抽出部は、前記コードからメソッドを単位として前記部分コードを抽出する、
    ソフトウェア性能検証システム。
  3. 請求項1に記載のソフトウェア性能検証システムであって、
    前記コードはメソッドの記述を含み、
    前記部分コード抽出部は、一のメソッドの記述と、当該メソッドと呼び出し関係を有する他のメソッドの記述とを含む記述を、前記部分コードとして抽出する、
    ソフトウェア性能検証システム。
  4. 請求項1に記載のソフトウェア性能検証システムであって、
    前記特徴量ベクトル生成部は、前記部分コードから取得されるメトリクス値を要素とするベクトルを前記特徴量ベクトルとして生成する、
    ソフトウェア性能検証システム。
  5. 請求項1に記載のソフトウェア性能検証システムであって、
    前記記憶部は、前記ソフトウェアを記述しているコードに用いられている単語を共通形式に変換して得られる表記と、前記表記の夫々について設定された値とを対応づけた情報を含む単語辞書を記憶し、
    前記特徴量ベクトル生成部は、前記部分コードに含まれている単語を共通形式の表記に変換し、前記単語辞書から前記単語の前記表記に対応する値を取得し、取得した値を要素とするベクトルを前記特徴量ベクトルとして生成する、
    ソフトウェア性能検証システム。
  6. 請求項1に記載のソフトウェア性能検証システムであって、
    前記性能検証モデルは、前記部分コードに基づき実現される処理の性能に問題がある確率を出力する、
    ソフトウェア性能検証システム。
  7. 請求項1に記載のソフトウェア性能検証システムであって、
    前記性能検証モデルは、前記部分コードに基づき実現される処理の性能を示す、夫々異なる観点に基づく複数の指標を出力する、
    ソフトウェア性能検証システム。
  8. 請求項2に記載のソフトウェア性能検証システムであって、
    前記コードの指定と前記コードに記述されている所定のメソッドの指定をユーザから受け付けるユーザインタフェースを備え、
    前記部分コード抽出部は、ユーザが指定した前記コードの前記所定のメソッドの記述を前記部分コードとして抽出する、
    ソフトウェア性能検証システム。
  9. 請求項1に記載のソフトウェア性能検証システムであって、
    複数のユーザによって共同開発されている前記コードをリポジトリに管理し、前記コードの前記リポジトリへの登録可否を前記検証結果に応じて判定する、共同開発環境と通信する通信部を更に備え、
    前記通信部が前記共同開発環境から前記コードの検証要求を受信すると、
    前記部分コード抽出部が、前記コードから前記部分コードを抽出し、
    前記特徴量ベクトル生成部が、前記部分コードに基づく特徴量ベクトルを生成し、
    前記性能検証処理部は、前記部分コードの前記特徴量ベクトルを前記性能検証モデルに入力して前記検証結果を生成し、前記検証結果を前記共同開発環境に送信する、
    ソフトウェア性能検証システム。
  10. 情報処理装置が、
    ソフトウェアを構成するプログラムのコードを記憶するステップと、
    前記コードの一部である部分コードを抽出するステップと、
    前記部分コードに基づく特徴量ベクトルを生成するステップと、
    学習用の前記部分コードの前記特徴量ベクトルと当該部分コードに基づき実現されるソフトウェアを実行することにより取得される、スループット、レスポンスタイム、及びリソース使用量のうちの少なくともいずれかの指標により表された前記ソフトウェアの性能を示す情報である性能情報と、を含む学習データにより学習した機械学習モデルである性能検証モデルを生成するステップと
    前記性能検証モデルに、検証対象の前記部分コードを入力することにより得られる出力に基づく情報を当該部分コードの検証結果として生成するステップと、
    を実行する、ソフトウェア性能検証方法。
JP2021038744A 2021-03-10 2021-03-10 ソフトウェア性能検証システム、およびソフトウェア性能検証方法 Active JP7514785B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2021038744A JP7514785B2 (ja) 2021-03-10 2021-03-10 ソフトウェア性能検証システム、およびソフトウェア性能検証方法
CN202280019451.2A CN116940932A (zh) 2021-03-10 2022-02-14 软件性能验证系统及软件性能验证方法
PCT/JP2022/005632 WO2022190772A1 (ja) 2021-03-10 2022-02-14 ソフトウェア性能検証システム、およびソフトウェア性能検証方法
US18/549,179 US20240168859A1 (en) 2021-03-10 2022-02-14 Software performance verification system and software performance verification method
EP22766737.5A EP4307120B1 (en) 2021-03-10 2022-02-14 Software performance verification system and software performance verification method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021038744A JP7514785B2 (ja) 2021-03-10 2021-03-10 ソフトウェア性能検証システム、およびソフトウェア性能検証方法

Publications (2)

Publication Number Publication Date
JP2022138708A JP2022138708A (ja) 2022-09-26
JP7514785B2 true JP7514785B2 (ja) 2024-07-11

Family

ID=83227599

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021038744A Active JP7514785B2 (ja) 2021-03-10 2021-03-10 ソフトウェア性能検証システム、およびソフトウェア性能検証方法

Country Status (5)

Country Link
US (1) US20240168859A1 (ja)
EP (1) EP4307120B1 (ja)
JP (1) JP7514785B2 (ja)
CN (1) CN116940932A (ja)
WO (1) WO2022190772A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12380015B1 (en) * 2021-06-22 2025-08-05 Synopsys, Inc. Predicting tests based on change-list descriptions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016016975A1 (ja) 2014-07-30 2016-02-04 株式会社日立製作所 開発支援システム
US20180276562A1 (en) 2017-03-24 2018-09-27 Microsoft Technology Licensing, Llc Bug categorization and team boundary inference via automated bug detection
JP2019191929A (ja) 2018-04-25 2019-10-31 株式会社日立製作所 性能分析方法および管理計算機

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374369B1 (en) * 1999-05-21 2002-04-16 Philips Electronics North America Corporation Stochastic performance analysis method and apparatus therefor
US7269824B2 (en) * 2003-02-13 2007-09-11 Path Reliability, Inc. Software behavior pattern recognition and analysis
US7644397B2 (en) * 2004-06-19 2010-01-05 Apple Inc. Software performance analysis using data mining
US7653893B2 (en) * 2005-03-04 2010-01-26 Microsoft Corporation Methods and apparatus for implementing checkin policies in source code control systems
US7937690B2 (en) * 2006-05-23 2011-05-03 Hewlett-Packard Development Company, L.P. Evaluating performance of software application
US8078556B2 (en) * 2008-02-20 2011-12-13 International Business Machines Corporation Generating complex event processing rules utilizing machine learning from multiple events
US8972940B2 (en) * 2010-09-23 2015-03-03 International Business Machines Corporation Systems and methods for identifying software performance influencers
JP2012234448A (ja) 2011-05-07 2012-11-29 Hitachi Ltd ソフトウェア性能逐次予測方法及び予測システム
US10318400B2 (en) * 2014-02-13 2019-06-11 Infosys Limited Methods of software performance evaluation by run-time assembly code execution and devices thereof
JP6378128B2 (ja) * 2015-04-28 2018-08-22 ルネサスエレクトロニクス株式会社 性能検証装置、システム、方法、およびコンピュータに当該方法を実行させるためのプログラム
US10657253B2 (en) * 2016-05-18 2020-05-19 The Governing Council Of The University Of Toronto System and method for determining correspondence and accountability between binary code and source code
US20180150742A1 (en) * 2016-11-28 2018-05-31 Microsoft Technology Licensing, Llc. Source code bug prediction
US10680908B2 (en) * 2017-05-23 2020-06-09 International Business Machines Corporation User interface with expected response times of commands
JP7433085B2 (ja) 2019-03-06 2024-02-19 三菱電機株式会社 システム分析装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016016975A1 (ja) 2014-07-30 2016-02-04 株式会社日立製作所 開発支援システム
US20180276562A1 (en) 2017-03-24 2018-09-27 Microsoft Technology Licensing, Llc Bug categorization and team boundary inference via automated bug detection
JP2019191929A (ja) 2018-04-25 2019-10-31 株式会社日立製作所 性能分析方法および管理計算機

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
小堀 一雄 Kazuo KOBORI,メソッド間の依存関係を利用した再利用支援システムの実装 Implementation of Software Reuse Support System Using Dependency of Method Call,電子情報通信学会技術研究報告 Vol.104 No.722 IEICE Technical Report,日本,社団法人電子情報通信学会 The Institute of Electronics,Information and Communication Engineers,第104巻

Also Published As

Publication number Publication date
WO2022190772A1 (ja) 2022-09-15
CN116940932A (zh) 2023-10-24
EP4307120A4 (en) 2025-03-19
EP4307120A1 (en) 2024-01-17
US20240168859A1 (en) 2024-05-23
JP2022138708A (ja) 2022-09-26
EP4307120B1 (en) 2025-12-17

Similar Documents

Publication Publication Date Title
US11960867B1 (en) Using natural language latent representation in automated conversion of source code from base programming language to target programming language
US10656927B2 (en) Methods, systems, and computer program products for automating releases and deployment of a softawre application along the pipeline in continuous release and deployment of software application delivery models
US7493596B2 (en) Method, system and program product for determining java software code plagiarism and infringement
Yu et al. Terminator: Better automated ui test case prioritization
US20190129712A1 (en) Methods, systems, and computer program products for an integrated platform for continuous deployment of software application delivery models
US20210241273A1 (en) Smart contract platform
CN120255895A (zh) 一种代码生成方法及相关设备
Auffarth Artificial Intelligence with Python Cookbook: Proven recipes for applying AI algorithms and deep learning techniques using TensorFlow 2. x and PyTorch 1.6
CN118647968A (zh) 用于控制工业软件程序的执行的基于用户行为的帮助推荐
US20230315399A1 (en) Instinctive Cipher Compilation and Implementation
Wang et al. Synergy between machine/deep learning and software engineering: How far are we?
JP7514785B2 (ja) ソフトウェア性能検証システム、およびソフトウェア性能検証方法
Zhou et al. Prime: A multi-agent environment for orchestrating dynamic computational workflows in protein engineerings
US11954458B2 (en) Decision logic translation system and method
US20230409956A1 (en) Machine learning prediction of additional steps of a computerized workflow
US12079689B1 (en) Systems and methods for low-code utilization of a computing system
JP7614500B2 (ja) 解析プログラム、解析方法、および情報処理装置
CN120029604A (zh) 训练数据生成方法、装置、设备和介质
Gliozzo et al. Transduction is All You Need for Structured Data Workflows
JP2024165175A (ja) テキスト生成システム
RU2839253C1 (ru) Способ автоматизации сквозного (end-to-end) тестирования с помощью модели машинного обучения
US20260030361A1 (en) Auditing and remediating identified security vulnerability in source code using llm
US20250390279A1 (en) Specification generation device, specification generation method, and recording medium
JP7738208B1 (ja) ソースコード分析装置、及びソースコード分析方法
US12493463B1 (en) System and method for machine learning development

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240409

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240625

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240701

R150 Certificate of patent or registration of utility model

Ref document number: 7514785

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150