コラム
ソフトウェアエレメント、ソフトウェアコンポーネント、ソフトウエアユニットの関係について
Automotive SPICE v4.0ではソフトウェアに関して以下の3つの用語を用いていますが、それらの関係について、
ソフトウェア設計工程(SWE.2、SWE.3)での取り扱いについて解説します。
- ソフトウェアエレメント
ソフトウェアコンポーネント及びソフトウェアユニットを総称して、ソフトウェアエレメントと定義します。 - ソフトウェアコンポーネント
ソフトウェアアーキテクチャで記述するソフトウェアエレメントをソフトウェアコンポーネントと定義します。ソフトウェアエレメントは、ソフトウェアユニットの上位に位置し、ソフトウェアアーキテクチャ設計(SWE.2)では、最下位のソフトウェアコンポーネントになるまで、ソフトウェアを適切な階層レベルで分割します。 - ソフトウエアユニット
ソフトウェアコンポーネントの一部であり、これ以上細分化されないことが決定された、コンセプトモデルにおける最下位レベルのソフトウェアエレメントを表現したものと定義します。
ソフトウェア、ソフトウェアコンポーネント、ソフトウェアユニットの関係を解り易く図で示します。
ソフトウェアコンポーネントとソフトウエアユニットの扱いに関しては、Automotive SPICE v3.1 では直感的/十分に記載されていませんでしたが、Automotive SPICE v4.0 では、
- SWE.2 (ソフトウェアアーキテクチャ設計)ではソフトウェアコンポーネントの振舞いを定義する
- SWE.3 (ソフトウェア 詳細設計およびユニット構築)ではソフトウェアユニットの振舞いを定義する
と明記されました。
SWE.2 で定義した各々のソフトウェアコンポーネントは、SWE.3 で複数のソフトウエアユニットによって構成されます。
Automotive SPICE VDA ガイドライン第2版を参照し、SWE.2プロセス、SWE.3プロセスを通してソフトウェアコンポーネント、ソフトウェアユニットの関係を整理しました。
<SWE.2プロセスでの作業概要>
- ソフトウェアアーキテクチャ設計を実施する際、ソフトウェアの静的側面として、ソフトウェアを個々の機能に着目してソフトウェアコンポーネントに分割し、ソフトウェアコンポーネント毎の機能を(ブラックボックスとして)定義します(ソフトウェアコンポーネント設計)。
- 大規模なソフトウェアコンポーネントでは、そのコンポーネントを複数のコンポーネントに分割する
ケースもあります(コンポーネントの多重構造) - ソフトウェアコンポーネント内部が、これ以上分割できないソフトウェアユニットに分割されるまで、ソフトウェアコンポーネントのブレークダウンを繰り返します。
- ソフトウェアの動的側面として、個々のソフトウェアコンポーネントの動作概要、及びソフトウェアコンポーネント間インタフェースを定義します。
<SWE.3 プロセスでの作業概要>
- SWE.2で作成したソフトウェアアーキテクチャ設計に基づいて、ソフトウェアコンポーネントを詳細にブレークダウン設計します。
- ソフトウェアユニット毎の機能を(ブラックボックスとして)定義します。
- ソフトウェアの動的側面として、個々のソフトウェアユニットの詳細な動作、及びソフトウェアユニット間インタフェースを定義します。
- 最後に、ソフトウェア詳細設計に基づいて、ソフトウェアユニットのソースコードを作成します。
実際の開発現場ではソフトウエアを様々な用語(例:ファンクションブロック、モジュール、セクション、ユニット、関数 etc.)を用いて管理されていると思いますが、Automotive SPICE v4.0 で使用する3つの用語(エレメント、コンポーネント。ユニット)との対応を明確にすることで、Automotive SPICE への対応が効率的に実施できます。
ご不明な点等あれば、弊社までお問合せください。
海農 公宏