簡単なコンポーネント図
コンポーネント図と呼ばれるものもいくつかありますが、TECSではTECSのコンポーネントモデルに最適なコンポーネント図を用意しています。それでは簡単なコンポーネント図を見てみましょう。
このコンポーネント図はセル(コンポーネントのインスタンス)を表現するもので、こういう構造でプログラムを組上げるという概略を表すのに有効です。ここで、点線で引出しているものは注釈としていれたもので、それ以外が本来のコンポーネント図になります。
TECSは静的なセルの生成と結合を基本とします。それで、コンポーネント図はセルタイプ(コンポーネントクラスに相当)を表すものではなく、インスタンスを表す手段のみ用意しています。なお、インスタンスという用語はオブジェクト指向でよく用いられますが、TECSでは、特に定義していません。慣用的にセルのことを(セルタイプに対して)インスタンスと呼ぶことがあります。
構成要素 Part 1
図2のコンポーネント図は非常にシンプルなものですが、TECSコンポーネントシステムを構成する多くの要素が出ています。以下、それぞれの要素の意味について説明します。
セル(cell)
図2の2つの長方形の部分が、それぞれセルにあたります。その中にあるcell1、cell2はセルの名前を現します。セル名は慣用的にアルファベットの小文字で始めます。
組込みコンポーネントモデルでは、ソフトウェアコンポーネント(部品)のことをセルと呼びます。セルはTECSの最も基本的な単位です。セルは、それを特徴付ける構成要素として、以下のものを持ちます。
- 受け口
- 呼び口
- 属性
- 変数
セルタイプ(celltype)
同じ受け口、呼び口、属性、変数を持ち、同じ機能を果たすセルの総称をセルタイプと呼びます。セルが機能を果たすためのプログラムは、セルタイプごとに作成します。
図2で、セル名の上にtCelltype1、tCelltype2と記述があるのがセルタイプ名になります。セルタイプ名には慣用的に接頭文字としてtを付加します。
シグニチャ(signature)
シグニチャは、関数頭部の集合です。
この関数頭部は、C言語のそれを元にしています、データの入出力方向、ポインタが指し示すものが配列、非配列の区別、また配列である場合配列の大きさなどポインタの指し示すデータの構造について曖昧さを排除するための付加情報(指定子)を与える必要があります。
図2では、後ほど説明する結合の線の下に記載されているsSigNameとあるのが、シグニチャ名を表します。シグニチャ名には慣用的に接頭文字としてsを付加します。
呼び口(call port)
呼び口は、シグニチャに対応付けられます。呼び口を通してシグニチャにより定義される関数の呼び出しが行われます。
図2では、cell1から線が引出されている箇所が呼び口になります。またcCPNameとあるのが呼び口名です。呼び口名には慣用的に接頭文字としてcを付加します。
受け口(entry port)
受け口は、シグニチャに対応付けられます。受け口を通してシグニチャにより定義される関数、すなわちセルが提供する機能が呼出されます。
図2ではcell2に引き込まれている箇所が受け口になります。受け口の側には塗りつぶした三角形をつけて、呼び口と区別します。またeEPNameとあるのが呼び口名です。受け口名には慣用的に接頭文字としてeを付加します。
属性(attribute)と変数(var)
属性は、セルに初期値を与えるもので、通常プログラムの実行途中で値を変更することはできません。ROMベースのシステムではROMに格納されることが意図されます。
変数は、属性と同様にセルの持つ値ですが、プログラムの実行中に値の変化するものでRAMに置かれることが意図されます。属性と変数はコンポーネント図には記載しません。
結合(join)と組上げ
セルを複数定義し、呼び口と受け口を結合してアプリケーションを構築することができ、これを組上げと呼びます。
呼び口と受け口を結合する場合、それぞれ同じシグニチャに対応付けられていなければなりません。呼び口と受け口のシグニチャが一致することは、必ずしも結合可能であることを保証しませんが、シグニチャが形式的に一致していて、少なくとも2つのセルが構文的につながることを示します。
図2で呼び口と受け口の間に引かれた線が結合を表します。結合は、図3のように合流させることができますが、反対の分流はできません。