1. HOME
  2. コラム
  3. コラム
  4. UMLモデルにおけるSPL(プロダクトライン開発)可変点の設計・実装テクニック

UMLモデルにおけるSPL(プロダクトライン開発)可変点の設計・実装テクニック

  • LINEで送る
  • このエントリーをはてなブックマークに追加
UMLモデルにおけるSPL(プロダクトライン開発)可変点の設計・実装テクニック

可変性の実現(可変点の設計・実装)

コア資産は、スコープに含まれる複数の製品での利用を想定して開発されるため、その内部に可変点を含むことがあります。この可変点の設計が適切かどうかで、将来にわたるコア資産の維持管理性や再利用効率が変わってきます。ここでは、モデルやコードに対して、組込みソフトウェア開発で使用される代表的な可変点の設計・実装テクニックを紹介します。
これらのテクニックを用いて開発したコア資産を、開発する製品に合わせて自動的にコンフィグレーションして利用する、すなわち導出する方法については、「可変性の決定に基づく製品の導出」のページを参照して下さい。
※ここで取り上げるのは一例であり、他にも様々な実現方法があります。

UMLモデルにおけるSPL可変点の設計

様々なソフトウェア開発の場面で利用されているUMLですが、その性質上、オブジェクト指向開発との親和性が高いため、可変点の設計方法も自然とオブジェクト指向開発のテクニックが利用されます。


UMLでの可変性の実現(インタフェースと実装の分離)

この方式では、「インタフェースと実装の分離」の原則に基づいてソフトウェアを設計します。すなわち、共通なインタフェースと、中身(実現)の異なる実装を、それぞれ別クラスとして設計します。その手順は以下のとおりです。

1.共通となるインタフェースの設計

対象としているコンポーネントを利用する全ての製品をカバーするように、インタフェースを設計します。このインタフェースは共通部となります。

2.可変部の設計

先に作成したインタフェースに対して、その実現方法が異なる部分を別クラス(サブクラス)として定義します。

UMLモデルにおけるSPL可変点の設計は『インタフェースと実装の分離』の原則に基づいてソフトウェアを設計

このように実装すれば、開発する製品に合わせて可変部のサブクラスを選択することで、製品用のモデルを構成することができます。また、可変部の内容が製品毎に異なる場合は、サブクラスを製品開発時に作成します。

UMLでの可変性の実現(継承と多態性の利用)

この方式では、オブジェクト指向の特徴である継承および多態性(ポリモーフィズム)を利用してソフトウェアを設計します。その手順は以下のとおりです。

1.共通となる部分のフレームワーク化

対象としているコンポーネントを利用する全ての製品をカバーするように、抽象設計を行います。ここで定義されるクラス群の内、可変点を持つクラスをスーパークラスとして設計します。これには以下の種類があります。
A)  インタフェース
属性や共通メソッドを持たない、単なるインタフェースクラスです。この場合は、「インタフェースと実装の分離」と同一になります。
B)  抽象インタフェースと具象実装を有するクラス
属性や共通メソッドが定義されたスーパークラスで、かつ抽象インタフェースも保有しています。このため、サブクラスにて抽象インタフェースを実装しないと、インスタンス化できません。
C)  具象実装のみを有するクラス
抽象インタフェースを持たないクラスです。よって、これ単体でインスタンス化が可能です。
通常はA, またはBを使いますが、スコープ内の大多数の製品の実装は共通で、ごく少数の製品だけが異なる実装を必要とする場合には、Cの方式を使ってスーパークラスでデフォルト実装を行うと効果的です。

2.可変部の設計

可変点を持つスーパークラスに対して、その差分をサブクラスとして設計します。

「UML」モデルにおけるSPL可変点の設計では『オブジェクト指向』の特徴である、継承および多態性(ポリモーフィズム)を利用してソフトウェアを設計

このように実装すれば、開発する製品に合わせてサブクラスを選択することで、製品用のモデルを構成することができます。また、可変部の内容が製品毎に異なる場合は、サブクラスを製品開発時に作成します。


UMLでの可変性の実現(パラメタの利用)

この方式では、製品毎に異なるパラメタを変数として定義し、製品開発時に具体的な値を与えます。制御ロジックが共通で、パラメタ値のみが異なる場合に利用されます。
以下の例のように、対象としているコンポーネントを利用する全ての製品をカバーするモデルを設計します。この時、製品間の差異をパラメタ値の違いで表わせるようにします。

「UML」モデルにおけるSPL可変性の実現では、製品ごとに異なるパラメタを変数として定義し、製品開発時に製品間の差異をパラメタ値の違いで表せるように実装

このように実装すれば、開発する製品に合わせてパラメタ値を設定することで、製品用のモデルを構成することができます。

サービスに関するご相談は
こちらからお願いします
  • LINEで送る
  • このエントリーをはてなブックマークに追加