E.C. R&D Dept.
開発の流れ
(1)TECSコンポーネント図
でソフト
ウェア構造を表現する。
関数の型である
(2)シグニチャ記
述
を行い、部品の型となる
(3)セル
タイプを記述
する。必要な部品の型
が揃ったら
(4)組上げ記述
を行う。
これらすべてを
(5)TECS CDL
を用
いて行う。
(5)
の作成物を
(6)TECS ジェネ
レータ
に通す。その結果、対象言語
の
(10)インタフェースコード、(9)
ヘッダファイル、(8)セルタイプコー
ドのテンプレート
が自動生成される。
セルタイプコードのテンプレートを元
に、コンポーネント開発者は(11)セ
ルタイプコード(C言語)を記述する。
インタフェースコードとセルタイプ
コードを、(12)コンパイルし、(13)
リンクすることで(14)アプリケーショ
ンモジュールが完成する。
(5) TECS CDL(コンポーネント記述言語)
(8) テンプレート
コード
(2) シグニチャ記述
(インタフェースの定義) (3) セルタイプ記述
(コンポーネントの定義) (4) 組上げ記述
(コンポーネントの
構成の定義)
(6) TECS
ジェネレータ
(9) ヘッダ (10) インタフェース
コード
(12)Cコンパイラ
(11) セルタイプコード
(コンポーネントの
ソースコード)
(13)リンカ
アプリケーション
開発者
コンポーネント
開発者
(14)アプリケーショ
ンモジュール
(1) コンポーネント図
製品
エンドユーザー
コンポーネント
仕様開発者
仕様の規定
設計
設計
利用
(7) プラグイン
プラグイン
開発者
設計
RPC
アクセス制御
トレース
E.C. R&D Dept.
コンポーネントシステム適用工程
ASP対応版を基としたので、
(1)コンポ
ーネント図
の組み替え以外、
(4)組上
げ記述
によるコンポーネント結合まで、
修正作業が発生しない。コンポーネン
ト自体はASP版そのもの。
(6)TECSジェネレータ
により
(9)ヘッダ
(10)インタフェースコード
が自動で出
力される。
(11) セルタイプコード
をSSPに併せて
実装する。ASPの仕様にのみ存在する
機能の関数コードを削除する。
ASPのみに使用するコードを
(13)リン
カ
の対象から除外する。
コンポーネント図(組み替え)以外は、C言
語のコンポーネントコード実装と、リン
ク対象の変更のみ。
(5) TECS CDL(コンポーネント記述言語)
(8) テンプレート
コード
(2) シグニチャ記述
(インタフェースの定義) (3) セルタイプ記述
(コンポーネントの定義) (4) 組上げ記述
(コンポーネントの
構成の定義)
(6) TECS
ジェネレータ
(9) ヘッダ (10) インタフェース
コード
(12)Cコンパイラ
(11) セルタイプコード
(コンポーネントの
ソースコード)
(13)リンカ
アプリケーション
開発者
コンポーネント
開発者
(14)アプリケーショ
ンモジュール
(1) コンポーネント図
製品
エンドユーザー
コンポーネント
仕様開発者
仕様の規定
設計
設計
利用
(7) プラグイン
プラグイン
開発者
設計
RPC
アクセス制御
トレース
ソフトウェアのアーキテクチャ設計を、
コーディング工程まで
揺らぎなく引き
継いでいる
から簡略化可能である。
E.C. R&D Dept.
ソフトウェア構造の俯瞰における有効性
開発ターゲットの違い・バリエーションの検討
例えば機能性は同じで性能が異なる部品を実装する
C言語のマクロや条件分岐を使った実装の場合
判定条件の数値の理解が必要になる(ドキュメントやコメントを読む)
出現箇所が多種多数に及ぶ場合の解析性低下は著しい
コンポーネント図・記述から対象ソースコードは一意に特定
条件分岐の抑制や余剰コードの排除でROM/RAMの節約や、処理時
間の最適化というメリットを享受することもできる
#ifdef Target1
Switch (Target )
{
case Target1:
baudrate = 9600;
…
#else
…
tCyclicHan
dler
CyclicHan
dler
tSample1
Sample1
tTask
InitTask
tTask
MainTask
tTask
Task
tKernel
SSPKernel
tSerial
Serial2
tCyclicHan
dler
CyclicHan
dler
tSample1
Sample1
tTask
InitTask
tTask
MainTask
tTask
Task
tKernel
SSPKernel
tSerial
Serial1
テキストから図へ
解析性の向上
更なるメリットとして
省ROM/RAM化
処理時間の最適化
cell tSerial Serial1 {
baudrate
= 9600;
channel = 1;
};
cell tSerial Serial2 {
baudrate
= 4800;
channel = 2;
E.C. R&D Dept.
ソフトウェア構造の俯瞰における有効性
フィーチャの違い・プロダクトライン的構想の検討
例えば仕向けの違いで必要な部品(構成)を切り替える
ソースコード内に全ての機能を残しておくアプローチでは
場合によっては余剰コード自体を取り去ることで品質要件に変化が出
る事がリスクとなってしまう→ハード拡充に始まるデメリットが顕在化
コンポーネントシステムは図から結合情報を自動で補完する
Switch (Target )
{
case Target1:
SendSerial();
break;
…
case Target2:
SendCAN();
…
tCyclicHan
dler
CyclicHan
dler
tSample1
Sample1
tTask
InitTask
tTask
MainTask
tTask
Task
tKernel
SSPKernel
tCAN
CAN1
tCyclicHan
dler
CyclicHan
dler
tSample1
Sample1
tTask
InitTask
tTask
MainTask
tTask
Task
tKernel
SSPKernel
tSerial
Serial1
テキストから図へ
構成の一意の特定
視覚化による理解
性向上
cell tSerial Serial1 {
baudrate
= 9600;
channel = 1;
};
cell tCAN CAN1 {
baudrate = BD5K;
channel = 2;
};
コンポーネント図からコンポーネント記述へ