組込みソフトウェアの性能要件充足のためのコーディングパターンの考察
2009SE171 水野早也香
指導教員：野呂昌満

1

はじめに
近年，ユーザ要求の多様化などに伴い，ソフトウェアの大規模化や複雑化が著しい．組込みシステムの開発におISO9126 は，品質の評価に関する国際規格である．要求と品質特性と照らし合わせることで，網羅的に確認して性能要件を定義することができる．組込みシステムでは信頼性，機能性などの品質特性が考慮されるべきである．

いては，商品開発サイクルの短縮化により，さらなる生産

GoF デザインパターンはオブジェクト指向設計の頻出性と信頼性の向上が求められている．大規模化したソフト問題の解決方法である．性能要件に関する問題を解決するウェアの開発期間を短縮する方法としてモデル変換によるパターンも存在する．

自動生成がある．また，複雑なソフトウェアはアスペクト

Quality Map は品質特性とデザインパターンの関連を指向技術を用いて構造を整理する．組込みシステムは，状示したものである．品質特性同士のプラスとマイナスの影

態遷移機械の集合なので，オブジェクトとの親和性が高く， 響の有無が示されている．
ソフトウェア開発の，要求，仕様，設計，コード間の関係オブジェクト指向で開発することが適している．組込みシステムにおいて，性能要件を充足することは重要であるしは多対多の構造をとり，複雑に関連している．要求とコーかし，オブジェクト指向で開発した際に，性能要件を充足ドの関係が，直接的には不明瞭なので，それぞれの関係をするためのコードは複数のオブジェクトに散らばって存在整理する必要がある．

する．散在しているそれらのコードをアスペクトとして分離・モジュール化する．
一般的に前提，課題，解決策の関係を表現したものをパコーディングパターン

3

Quality Map より，品質特性と対応したデザインパター

ターンという．本研究では，組込みシステムを前提とし， ンを基に，コーディングパターンを定義する．その後，事性能要件の充足に関する課題とその解決法の場合の，コー 例検証を用いたカタログの利用方法を述べる．
ドの雛型をコーディングパターンと呼ぶ．
ソフトウェアは一般的に要求定義，仕様記述，設計，実3.1

コーディングパターンの定義

装の順で開発される．しかし，ソフトウェア開発の要求，GoF デザインパターンのサンプルコードを基にしたコー仕様，設計，コード間の関係は多対多となる．それぞれのディングパターンの定義を示す．サンプルコードとはデザ関係を整理する必要がある．

インパターンの一般例であり，デザインパターンにおい

本研究の目的は，設計のパターンととコードのパターンて主な構造となる部分が記述されている．本研究ではコー間の関係を整理することである．仕様と設計の関係からディングパターンとして，メッセージ通信，条件分岐処理，コーディングパターンを特定する．

その他に必要なコードを定義する．

本研究では，仕様と設計の関係からコーディングパター

障害許容性を例としてコーディングパターンを定義すンを定義し，カタログとして提案する．

る．Quality Map より障害許容性には Chain of respon-

ISO9126[3] の品質特性と対応するコーディングパターンのカタログを提案する．品質特性と対応した GoF デザ
インパターン [2] を，関係を整理している Quality Map[1]sibility, Command, Facade, Strategy パターンが対応する事が分かる．Chain of responsibility パターンについてにより選択する．デザインパターンのサンプルコードを基障害許容性と関連する性能要件の充足に必要な部分を，にコーディングパターンを定義する．また，品質特性を複コーディングパターンとして定義したものの一部を以下に数考慮した場合のコーディングパターンも定義する．定義

示す．

示す．

resolve(value)
IFする．カタログより品質特性とデザインパターンを選択す
done(value)
れば，それに対応した性能要件を充足するコードが求まる．
next != null
作成したカタログを組込みシステムに適用可能か事例検証 ELSE IF
Handler(value)をして考察し，評価する．
ELSE
fail(value)
2 背景技術と問題
END-IF

したコーディングパターンと品質特性の関係をカタログ化

背景技術として ISO9126，デザインパターン，Qulaity
Map について説明する．

Handler クラス内で，通常処理を行えず後続オブジェクトがある場合は処理を送信し，後続オブジェクトが無ければ例外処理オブジェクトに送信する処理を抽出した．

3.2

複数の品質特性を考慮した定義

複数の品質特性を考慮した性能要件について考察する必は組込みシステムを対象としてコーディングパターンを定義したが，アプリケーションの前提を絞った場合に，他にも自動生成できるコードがあると考える．事例検証を重ねて，足りないコードを付け加える努力が必要である．

要がある．他の品質特性についても，品質特性それぞれとまた，複数の品質特性に関連した性能要件を充足するの組み合わせにより，違うコーディングパターンが定義でコーディングパターンの定義が必要である．品質特性同士きると考える．の影響を調べ，品質特性を同時に考慮できる性能要件につ例えば障害許容性に関する性能要件は，同時に他の品質いて，全ての品質特性の組み合わせについてコーディング特性と関連する場合がある．品質副特性を同時に関連したパターンを定義する必要がある．また，二つ目の品質特性コーディングパターンが作成可能か，表としてまとめる． の条件によって定義できるだけでなく，同じ品質特性とデ障害許容性と他の品質副特性の関係の表を図 1 に示す．
ザインパターンからコーディングパターンが複数定義できる場合もある．定義したコーディングパターンと品質特性とデザインパターンの関係を整理する必要がある．

4.2
図 1 障害許容性と他の品質副特性の関係

先行研究との比較

三宅らの研究 [4] との比較を行う．この研究では頻出コードを自動抽出し，コーディングパターンとして定義する方法を提案している．本研究では性能要件を考慮してデ3.3

事例検証

ザインパターンからコーディングパターンを定義してい定義したコードについて事例検証を行なう．例として飛る．性能要件を充足する点では本研究の方法の方が，性能行船のセンサー取得システムについて考える．障害許容性要件の充足を考慮したコーディングパターンを定義に優位を考慮した性能要件として，センサーが異常値を取得してであると言える．

も計算処理を続けることを定義する．使用するデザインパ

また先行研究はコーディングパターンを絞り込みのためターンは，いづれかのオブジェクトで必ず処理をする構造の手法の検討を今後の課題として挙げている．本研究は品である Chain of responsibility パターンを選択する．自動質特性と対応したコーディングパターンを定義しているの生成できた実行結果コードは以下のようになる．

で，性能要件充足に関するコーディングパターンの整理がpublic final void Handler(Value value){if(resolve(value)){done(value);}else if(next != null){
next.Handler(value);}else{
fail(value);}}

自動生成したコードを基にした実装コードの構造は，センサーの値に障害が起った時に，処理オブジェクトの連鎖として後続オブジェクトがあるかどうかを確認する．ある場合は次の処理オブジェクトへと処理を渡し，無ければ例外処理をするというものになる．このコードは，どのような障害が起っても処理をするので，障害許容性に関する性能要件を充足しているといえる．

4

考察

4.1

コーディングパターンの妥当性の確認

事例検証により，定義したコーディングパターンを用いることで性能要件充足を考慮したコードの自動生成ができることが分かった．自動生成したコードを基にした実装
コードの構造は，障害許容性に関する性能要件を充足しているといえる．よって定義したコーディングパターンは妥当であると考える．しかし，定義したコーディングパターンだけでは，必要なコードが足りないと考える．本研究でできている．

5

おわりに
本編では，Quality Map とデザインパターンから，品質特性と対応したコーディングパターンを定義した．また，コーディングパターンの有用性の評価を行なった．
今後の課題として，複数の品質特性に関連した性能要件を充足するコーディングパターンの定義がある．

参考文献[1] A. Sawada, M. Noro, H. Chang, Y. Hachisu, and A.
Yoshida, “A Design Map for Recording Precise Architecture Decisions,” Proceedings of the 18th AsiaPacific Software Engineering Conference, pp. 298305, 2011.
[2] E. Gamma, R. Helm, R Johnson, and J. Vlissides, Design Patterns: Elements of Reusable ObjectOriented Software, Addison-Wesley, 1995.
[3] ISO/IEC 9126-1:2001, Software Engineering - Product Quality - Part 1: Quality Model, 2001.
[4] 三宅 達也, 石尾 隆, 谷口 考治, 井上 克郎， “メソッド呼び出しパターンとして現れる横断的関心事の検出，”
電子情報通信学会技術研究報告，Vol. 107，No. 99，
SS2007-9，pp. 1-6，2007．