デモ概説書
1.
目的 ... 1
2.
pure:variants の使用準備 ... 1
3.
プロジェクトの作成 ... 2
4.
モデルの表示と製品バリアントの生成 ... 4
5.
フィーチャーとファミリーの関連付け ... 8
6.
ソースコード内のフラグの管理 ... 13
7.
メイクファイルに受け渡すファイル名の処理 ... 17
1. 目的 この資料では、気象監視システムのサンプルを用いて、pure::variants のモデリング環境とバライアビ リティー/バリアント管理機能の使い方を説明しています。 pure::variants を用いて製品ファミリーの、 バリアントとバライアビリティーを分類し、管理することで、体系的に資産を再利用して、効率良く開発 し、メンテナンスができるようになります。 また弊社 pure::variants 製品情報サイトにある以下の動画デモは、同じサンプルを用いていますので、 ご覧いただくことで、評価を効率的に行っていただけるかと思います。 pure::variants 製品情報 http://www.fuji-setsu.co.jp/products/purevariants/index.html 基本操作と概念 http://www.fuji-setsu.co.jp/demo/pure_variants.html フラグの管理と make ファイル http://www.fuji-setsu.co.jp/demo/pure_variants_make.html 2. pure:variants の準備 ① Eclipse の日本語化について。
・言語パックEclipseのアップデートマネージャー(Help → Install New Software)からインストールでき ます。以下のURLをUpdate Siteとして登録して接続し、日本語化言語パックを選択してインストールし てください。
http://archive.eclipse.org/technology/babel/update-site/R0.9.0/helios
インストール終了後、Eclipseを再起動するとEclipseの各種メニューが日本語化されます(ただし、 pure::variantsやいくつかのメニューは日本語化されません)。
② プロジェクトのコピー
“purevariants_demo.zip” を解凍し、“WSC++”と“Webinar Finished”ディレクトリを、C:\[ワ ークスペースフォルダの場所] 以下にコピーします。
zip ファイルは、http://www.fuji-setsu.co.jp/files/purevariants_demo.zip からダウンロードし て下さい。
③ コンパイラ環境のインストール
Windows 上で実行可能なフリーの GNU C コンパイラ環境である MinGW とそれを実行するためのコン ソール環境である Msys をインストールしてください。
これらのプログラムは、SourceForge の
http://sourceforge.net/project/showfiles.php?group_id=2435
からダウンロード出来ます。
Automated MinGW Installer の MinGW-x.x.x
MSYS Base SYSTEM->Current Release の MSYS-x.x.x.exe ※x.x.x は共にバージョン番号 をダウンロードしてください。 インストールに関する情報は、 http://www.mingw.org/download.shtml を、ご参照ください。 3. プロジェクトの作成 通常、プロジェクトは新規に作成しますが、ここでは、既存のプロジェクトをインポートする方法をと ります。以下の手順で、プロジェクトをインポートできます。 ① ファイル->インポートメニューで、インポートウィザードを表示させます。Variant Projects 表 示のコンテキストメニューでも表示可能です。
③ “ルート・ディレクトリーの選択”に、C:\[ワークスペースフォルダの場所]\を設定します。“参照” ボタンでファイル選択ダイアログによる指定が可能です。
④ プロジェクトに WSC++と Webinar Finished が表示され、チェックボックがスチェックされているこ とを確認し、終了ボタンをクリックします。
4. モデルの表示と製品バリアントの生成
① WebinarFinished プロジェクトの WebinarFeatures.xfm をダブルクリックすることで、フィーチャー モデルが表示されます。このモデルには、製品ファミリーの各機能や、それらの関係が階層構造で登 録されています。各モデルエレメントの左の“+”マークをクリックする事で下位の階層を表示でき ます。このモデルでは、温度を測定する Temperature 機能と、風速を測定する Wind Speed 機能があ り、それぞれが複数の表示単位を持つことが分かります。
② 同様に WebinarFamily.ccfm をダブルクリックすることで、ファミリーモデルが表示されます。この モデルは、製品ファミリーのクラス、オブジェクト、関数、変数、ドキュメントなどのコンポーネン トで構成され、これらの相互接続や制限、条件なども含みます。フィーチャーモデル同様階層構造に なっており、下位の階層を表示させることが可能です。ここには、実際のソースコードやメイクファ イルなどへのリンクが登録されていることが分かります。これら2つのモデル間にはリンクがはられ ており、製品ファミリーの変動要素が一貫して管理されています。
③ Webinar Finished プロジェクトの WebinarConfig コンフィグレーションスペースに、バリアントデ ィスクリプションモデル(VDM)が登録されています。その中の WebinarConfig.vdm をダブルクリッ クしてモデルを開きます。このモデルで単一製品のフィーチャーの組み合わせを選択できます。ここ では、摂氏の温度表示とノットの風速表示が選択されています。 ④ Transform Model ボタンをクリックする事で、選択されたフィーチャーに対応した、ファミリーモデ ルのコンポーネントが抽出されます。この例では、C:\[ワークスペースフォルダの場所]\Webinar Finished\Output\WSC++ディレクトリ以下に、ソースファイルとメイクファイルが生成されます。
出力先にファイルが存在する場合は、上書きの確認ダイアログが表示されます。通常、“はい”で先 へ進めます。 ↓ ファイル生成の終了ダイアログです。“OK”ボタンで先へ進めます。 ⑤ 生成されたソースファイルを実際にビルドします。スタート->すべてのプログラム->MinGW-> MSYS->msys を実行し、MinGW の実行コンソールを開きます。 ⑥ コンソールで上記のソースディレクトリに移動し、make を実行することで製品(ws.exe)がビルド されます。ws.exe を実行することで、温度と風力が計測されるアプリの動作が確認できます。CTRL+C でアプリケーションを終了します。
5. フィーチャーとファミリーの関連付け ① フィーチャーモデルの Temperature を選択すると、右端の Relation 表示に関連付けられたコンポー ネントが表示されます。ここでは、子フィーチャーとして°Cと°Fが、親フィーチャーとして WebinarFeatures が設定されていることが分かります。また、ps:classTemperature ファミリーエレ メントが、このフィーチャーを参照していることも分かります。 ② このフィーチャーのコンテキストメニューからプロパティを選択することで、詳細な設定を確認する ことが出来ます。°Cのプロパティを表示させて Relations タブを選択すると、American/British フィーチャーに対して、ps:confilicts リレーションが設定されています。これら2つのフィーチャ ーが同時に選択できない制約を表すリレーション設定です。
③ フィーチャーモデルの下の Graph タブで、グラフィカルに表示することも可能です。
④ ファミリー・モデルには、資産コードとして、気圧計のアプリ(psclass:Pressure)が存在していま すが、フィーチャーモデル側には、まだ登録されていません。そこで、これをフィーチャーモデルに 登録します。
⑤ WebinarFeature のコンテキストメニューで New->Feature を選択して、ウィザードを表示させます。
⑥ uniqueName として AirPressure、VisibleName として気圧計を設定します。VariationType には、 必ず選択の Mandatory、選択可能の Optional、どれか1つだけ選択の Alternative、1つ以上を必ず 選択の Or、がありますが、ここでは、温度や風速と同様に、1つ以上を必ず選択の OR を設定します。
⑦ 追加したフィーチャーと、ファミリーモデル上のコンポーネント間のリンクをはります。ファミリー モデルの Pressure のコンテキストメニューで Properties を選択します。プロパティダイアログで Restrictions タブを選んで、Restriction の1列目をクリックし、右端のアイコンをクリックします。 ⑧ テキスト領域に文字が設定されていればそれを消去し、CTRL+SPACE を実行します。設定可能な項目 のリストが表示されますので、先程フィーチャーモデルに登録した、気圧計をダブルクリックします。 OKボタンで2つのダイアログを閉じます。
⑨ VDM を表示すると新たに気圧計が選択できるようになっています。ここで下図のように各フィーチャ ーを設定し、Transform を実行することで、新たな製品のソースコードが生成されます。
⑩ MSYSコンソールで再度ビルドを行い、プログラムを実行することで、気圧の計測が追加されてい ることが確認できます。
6. ソースコード内のフラグの管理
① ファミリーモデルで管理されている資産コードは、このサンプルの場合はVariant Project ウィンド ウ の WSC++ プ ロ ジ ェ ク ト の 配 下 に あ り ま す 。 例 え ば 、 温 度 計 の ソ ー ス は Sensors - > Temperature.cc として登録されていて、Open with ->テキストエディタでソースを表示出来ます。
③ ファミリーモデル の WSC++-> ps:variable:CPPFLAGS_TEMP のコンテキストメニューで、 Tree Layout->Show All を選択すると、設定の詳細が表示されるようになります。
⑥ このコンパイラオプションは、ps:makefile: config.mk の中で、変数 CPPFLAGS を介して config.mk に代入されるように設定されています。それらの設定の結果として、makefile 内でコンパイラオプ ションとして指定されます。
⑧ これは、ps:variable:CPPFLAGS_TEMP の TemperatureF をダブルクリックすると、Relations に°Fフ ィーチャーが表示されることでも確認できます。
⑨ 実際に作成された Config.mk は、Variant Projects の Webinar Finished->Output->WSC++->config.mk のコンテキストメニューで、Open With->テキストエディタを選択することで、表示できます。 ⑩ 7. メイクファイルに受け渡すファイル名の処理 ① また、pure::variants は、VDM を変換して生成したソースファイルから、コンパイルするべきファイ ルリストを抽出し、Makefile へ受け渡すこともできます。
② Transformation の設定は、Configuration Space を使って行います。Variant Projects で Webinar Finished プロジェクト->WebinarConfig のコンテキストメニューで、プロパティを選択します。
③ プロパティダイアログで Configuration Space を選択し、Input-Output タブを選択します。ここで は、Input としてソースファイルのあるディレクトリ、Output として VDM を変換して生成されるフ ァイルの出力先が指定されています。Transform Model を実行すると、この設定に基づいて、必要な ファイルがコピーされます。
④ Transformation Configuration タブをクリックすると、Transform Model 実行時に行う動作の規定が 確認できます。“Convert to transformer action list”でコピーするファイルのリストを作成し、 “Execute transformer action list”でそれらのファイルを実際にコピーし、“Makefile”でファイ ルリストを基に Makefile を作成しています。
ることで、Makefile 作成の詳細な設定が確認できます。Makefile のファイル名は、out のパラメー タで config.mk と指定されており、先程、Input-Output の Output で指定したディレクトリに作成 されます。ここでは、設定が目的ではないので、キャンセルをクリックします。
⑥ Variant Projects の Webinar Finished プロジェクト->Output->WSC++->Makefile のコンテキストメ ニューで、Open With->テキストエディタを選択することで、生成された Makefile を確認できます。 このファイル内で、以下の様に config.mk がインクルードされており、コンパイラにソースファイル のリストが引き渡されるようになっています。
富士設備工業株式会社 電子機器事業部