日本ソフトウェア科学会第 39 回大会 (2022 年度) 講演論文集

サイバーフィジカルシステムのシミュレーションテス
トの属性を用いた defect-prone モジュール予測
塚本 悠乃

森崎 修司

サイバーフィジカルシステムのテストではシミュレーションテストが用いられる．通常，シミュレーションテストは「障害物回避」「目標地点での停止」といったフィジカル面での属性を持つ．これまでの defect-prone モジュール予測手法はソースコードメトリクスや更新履歴のようなプロダクトコードの属性やプロダクトの開発プロセスの履歴を入力として使っているが，シミュレーションテストの属性をを使うことで予測精度が高まる可能性がある．
．しかし，シミュレーションテストのフィジカル面での属性をプロダクトコードの属性とするためにはシミュレーションテストによって実行されるプロダクトコード (モジュール) を対応づけする必要がある．本研究では，シミュレーションテストから得られる属性もプロダクトコードの defect-prone 予測手法の入力として使うことを目的として，手法を提案する．具体的には，シミュレーションテストの実行時の動的プロファイリングの結果を使ってモジュールの属性とする．

トから実行するべきである．シミュレーションテスト

1 はじめにがより早い段階で欠陥を検出できれば，実行するテスサイバーフィジカルシステムの検証はシミュレートの数を減らすことが可能である [2]．

ションテストによって行われる．サイバーフィジカル

Defect-prone モジュール予測 [1]， [3]， [4]， [5]， [6]システムは，現実世界から得られるデータを入力としは欠陥を含む可能性が高いモジュールを予測できるて動作する．そのため，シミュレーションテストはセため，欠陥を含む可能性が高いモジュールからテスンシングから得られる膨大な情報量を模擬的に生成トすることにより，テストの数を減らせる可能性があして複雑な計算を行うことから，時間を始め多くのる．しかし，Defect-prone モジュール予測ではソーコストがかかる．また，さまざまな環境下でサイバースコードから計測できるソースコードメトリクスやフィジカルシステムの検証を行うため，たくさんの異ソースコードの編集履歴から得られる情報を使ってなるシミュレーションテストに合格する必要がある．

いるため，シミュレーションテストの属性をそのまさらに，リグレッションテストを行うシステムであれま使うことはできない．シミュレーションテストのば，コストのかかるシミュレーションテストを何度も属性とモジュールを結びつける情報がないからであ実行しなければならない．シミュレーションテストのる．そこで，本研究では，欠陥を含む可能性が高いコストを削減するには，システムのソフトウェアに含Defect-prone モジュールをテストするシミュレーショ

まれている欠陥を検出しやすいシミュレーションテスンテストを選ぶ手法を提案する．

∗ Defect-prone module prediction using attributes ofsimulation tests for Cyber Physical Systems
This is an unrefereed paper. Copyrights belong tothe Authors.
Yuno Tsukamoto Shuji Morisaki, 名古屋大学 大学院情報学研究科, Graduate School of Informatics, Nagoya
University.

2 背景
2. 1 サイバーフィジカルシステム (Cyber Physical Systems)
サイバーフィジカルシステムとは現実世界から得られるデータを収集・処理・活用するものであり，あらゆる社会システムの効率化，新産業の創出，知的して出力する．

生産性の向上に寄与するものである [cite1]．例えば，自動車の無人運転がサイバーフィジカルシステムに

3 提案手法あたる．無人運転では，LiDAR と呼ばれるレーザー

3. 1 前提

光を使用したセンサーで対象物までの距離やその形

3. 1. 1 シミュレーションテストのフォーマット

状を認識したり，カメラから周りの環境を認識したり実行するシミュレーションテストの属性は，テストして，その情報から自車の次の行動・軌道を決定し，コードから知ることができる．テストコードの記述かその通りに自車が動作するようにアクチュエータに制らわかる属性として以下のようなものがある．

御の指示を出す．

1. 登場する物体の種類や数
2. 物体の位置，初期ステータス

2. 2 シミュレーションテスト

3. シミュレーションテスト中の物体の動き

サイバーフィジカルシステムの検証ではハードウェ

4. シミュレーションテスト中の全体の環境

アでテストを行う前にソフトウェア単体でのシミュ

3. 1. 2 プロファイラの対象レーションテストが用いられることが多い．自動車プログラム全体がプロファイラの対象となる．プロの無人運転を例に取ると，実車を用いたテストでは，ファイラは，ハードウェアの割り込みを利用したり，人が危険に晒されたり，使用する車やセンサーのためコードに命令を埋め込んだりしてプログラムの実行に莫大な費用がかかったり，特別な環境の再現が困難を監視する．

であり，システムの検証を現実世界で完結させることは難しい．サイバーフィジカルシステムのシミュレー

3. 2 手順

ションテストとは，システムへの入力となるセンサー

手順を実施する作業者は，開発者，テスト作成者，の値などの現実世界から得られる情報を擬似的に生テスターである．テスターの作業の一部はインテグ成し，対象システムのソフトウェアに与え挙動を確認

レーションツールを使えば、自動化できる場合があするシステムの検証手法である．

る．開発者はプロダクトコードを開発し，コードを変更した際はすべてのシミュレーションテストに合格

2. 3 Defect-prone モジュール予測

し，デグレードしていないことを確かめる必要があ

Defect-prone モジュール予測はソフトウェアを構る．テスト作成者はシミュレーションテストのテスト成するモジュールのうち，欠陥を含んでいる可能性のコードを書く．テスト作成者は対象のソフトウェアが高いモジュールを予測する技術である [1]．欠陥が含利用される状況を考え，作成・実行すべきシミュレーまれている可能性が高いモジュールをメトリクスをはションテストを準備する．テスターはテスト作成者がじめとするソースコードの属性や更新履歴の属性を作成したテストコードを実行し，シミュレーションテ用いて予測する．用いられるメトリクスにはプロダクストでのソフトウェアの振る舞いが意図したものであトコードメトリクスや，変更にかかった工数や日数のることを確認する．シミュレーションテストに合格しようなプロセスメトリクスなどがある．

なかった場合，コードを変更した開発者はコードを修正する必要がある．

2. 4 プロファイラ

1. 対象のソフトウェア，シミュレーションテスト

プロファイラは，対象ソフトウェアを実行しその様に使用するテストコード，プロファイラ，シミュ子を監視・記録するソフトウェアである．対象ソフト

レーターを用意する．開発者は対象のソフトウェウェアの起動から終了までを計測し，呼び出された関アを用意し，テスト作成者はテストコードを用意数やメソッド，モジュールなどを記録する．関数やモする．テスターがプロファイラとシミュレーター

ジュールの呼び出し回数や所要時間をプロファイルとを用意する．

? ? ? 1? ? ? 2

? ? 1? ? ?
? ? 2? ? ?
? ? 3? ? ?

? ? 1? ? ?
? ? 2? ? ?
? ? 3? ? ?
....
? ? ? ? ? ?

? ? ? ? ?
? ? ? ? ?

? ? ? ? ?
? ? ? ? ?

? ? ? ? ? 1? ? ? ? ? 2? ? ? ? ? 1? ? ? ? ? 2? ? ? ? ? 3

....

....
? ? ? ? ? ?

? ? ?

....

? ? ? ? ? 1? ? 1? ? ? 2? ...

? ? ? ? ? 2? ? 2? ...

? ? ? ? ? 3? ? 3? ...
...

...

図1

シミュレーションテストに対してプロファイラを実行し，実行されているモジュールを特定する

2. プロファイラでモニタリングしながらシミュ

コード tj を用いたシミュレーションテストに対レーションテストを実行する．

してプロファイラを実行する．各モジュールにつ対 象 の ソ フ ト ウェア に 含 ま れ る モ ジュー ル をいて関数の実行時間，呼び出し回数の情報やモmi (i = 1, 2, 3, · · · , m), 実行するテストコード

ジュール間の通信に関する情報がプロファイルとを tj (j = 1, 2, 3, · · ·)，テストコードの属性をして出力される（図 1）．

ajk (k = 1, 2, 3, · · ·) とする．テスターはテスト

3. 実行結果の集計と分析

? ? 1? ? ? ? ? 1? ? 2? ? 3

図2? ? ? ? ? 2? ? ? ? ? 3

モジュールの実行とテストコードに含まれる属性の関連性を予測

開発者は，プロファイルからシミュレーションテファイルが出力される．下記の例はシミュレー

ストで実行されたモジュールを特定し，そのモションテスト t1 を実行しているとする．またシジュールの集合を Mj とする．モジュール集合

ミュレーションテスト t1 の属性を a1 とする．

Mj を比較してモジュール mi の実行に関連して$ ./main test1

いるテストコードの属性 ajk を予測する（図 2）．

4. 属性に応じたシミュレーションテストの実行順

3. プロファイルの解析

序の決定

gmon.out がプロファイルである．呼び出されたテスターはシミュレーションテストを行う際に，関数のリスト，呼び出し回数，時間，また呼び出

コードが書き換えられたモジュール mk を実行さし関係が見られる．

せるようなテストコードの属性 ajk を含むテス$ gprof ./main gmon.out

トコード tj から優先的に実行する（図 3）．
実行結果 1 は出力の例である．シミュレーション

3. 3 実装

テスト t1 では関数 func1，func2 が実行されるDefect-prone を予測するモジュールは対象とする

ことがわかる．シミュレーションテスト t1 で実システムにより異なる．サイバーフィジカルシステム

行されたモジュール M1 は func1，func2 であるであるロボットの自律運転や自動車の無人運転では，ことがわかる．

ROS がよく用いられる．ROS が用いられる場合は，4. モジュールとの対応付けノードを Defect-prone モジュール予測の対象である

す べ て の シ ミュレ ー ション テ ス ト tj (jモジュールの代わりとすることもできる．また，ROS

1, 2, 3, · · ·) を実行し，実行したシミュレーショ

では開発した言語に対するプロファイラを用いること

ンテストの属性 ajk とモジュール mi の関連を集もできるが，ノード間の通信を記録する rosbag を活計する．この情報からモジュール func1，func2用することもできる．の属性 a1 が対応することがわかる．

=

3. 3. 1 実現方法の例
C 言語を用いたプログラムに対して，関数をモジュールとしてプロファイラ gprof を用いた際の手順を例に示す．

1. プログラムのビルド

4 まとめと今後の課題
サイバーフィジカルシステムで用いられるシミュレーションテストは莫大なコストがかかる．シミュ
レーションテストの多くは合格となり，一部が不合格

オプション-pg オプションをつけ，gcc でビルドであることが多いため，欠陥を検出する可能性が高する．

いシミュレーションテストから先に実行することで$ gcc main.c -pg -o main

シミュレーションテストのコストを低減できる．そこで，シミュレーションテストの欠陥を検出する可2. 実行シミュレーションテストを実行する．プロ能性を予測するメトリクスとして，Defect-prone モ

? ? ?
? ? ? ?

? ? ? ? ? 3? ? ?

? ?? ? ?
? ? ? ? ? 3...

...

図3...

...

? ??
3 ? 3? ? ? ?

書き換えたモジュールに関連する属性を含むテストの優先的な実行

実行結果 1

プロファイル gmon.out の一例

1

Flat profile:2
3
4

Each sample counts as 0.01 seconds.

5%

6

time seconds

seconds calls s/call s/call name733.86 15.52
33.29 46.27
0.07 46.30

15.52
15.26
0.03

8
9

cumulative self

self

11

15.52
15.26

total

15.52
30.75

func1
func2
main

1011

ジュール予測を提案した．具体的には，シミュレー

参 考 文 献ションテストの実行に対してプロファイラを実行し，[1] Denaro, G., Morasca, S., and Pezze, M.: Deriving
models of software fault-proneness, Proceedings ofthe 14th international conference on Software engineering and knowledge engineering, 2002, pp. 361–368.
[2] Elsner, D., Wuersching, R., Schnappinger, M.,
Pretschner, A., Graber, M., Dammer, R., andReimer, S.: Build System Aware Multi-languageRegression Test Selection in Continuous Integration, 2022.
[3] Fenton, N. E. and Ohlsson, N.: Quantitative analysis of faults and failures in a complex software system, IEEE Transactions on Software engineering,Vol. 26, No. 8(2000), pp. 797–814.
[4] Kalaichelvan, K. S., Allen, E. B., Goel, N., andKhoshgoftaar, T. M.: Early Quality Prediction: A
Case Study in Telecommunications, IEEE Software,Vol. 13, No. 01(1996), pp. 65–71.
[5] Menzies, T., Greenwald, J., and Frank, A.: Datamining static code attributes to learn defect pre-

実行されたソフトウェア内のモジュールを特定する．
リグレッションテストにおいて，コードが書き換えられたモジュールとシミュレーションテストで実行されるモジュールが対応するようなテストから実行する．
提案したメトリクスを用いて，シミュレーションテストの実行に優先順位を付ける最適な手法の検討，実際のサイバーフィジカルシステムのプログラムを対象としてプロファイラの結果を分析し，どのような属性に対してどのようなモジュールが対応するか調査することが今後の課題である．

dictors, IEEE transactions on software engineering,Vol. 33, No. 1(2006), pp. 2–13.
[6] Porter, A. A. and Selby, R. W.: Empiri-cally guided software development using metricbased classiﬁcation trees, IEEE software, Vol. 7,
No. 2(1990), pp. 46–54.