ET2014 ミニセミナー フィーチャー図と BricRobo で 簡単プロダクトライン 2014/11/19~21 ( 株 ) 富士通コンピュータテクノロジーズ伊澤松太朗 1294karch01
目次 1. 当社のご紹介 2. 派生開発でよくある課題 3. フィーチャー図のススメ 4. フィーチャー図と BricRobo による簡単プロダクトライン開発 1
当社のご紹介 2
会社概要 株式会社富士通コンピュータテクノロジーズ 設立 1983 年 事業所川崎本社 豊橋事業所 長野事業所 事業内容 サーバ ストレージ モバイル端末 車載 /FA 機器 画像認識 ハードウェア ネットワーク 検証ソリューション 従業員数 536 名 組込みソフトウェア開発 組込みハードウェア開発 組込みプラットフォーム テストプログラム開発 / 検証評価 300 名 50 名 35 名 100 名 3
派生開発によくある課題 4
増大するバリエーションへの対応 製品ファミリーの増加や海外向け対応などにより 製品や機能のバリエーションが煩雑になっている 顧客毎に変わるニーズに対応するため類似製品を開発 既存製品のバージョンアップによる機能追加 / 変更対応 製品毎にバラバラに管理しているから仕様変更対応が大変 ソースコードが ifdef だらけで間違いが起こりがち 類似製品を個別に開発して苦労していませんか? 5
無駄なモノを作らないために 類似する製品や機能の個別開発から脱却するために製品の共通な部分は流用し 固有な部分だけを開発 製品や機能の共通な部分や固有な部分を簡潔に表現できる方法は無いのか? 製品や機能を特徴づける要素間の関係をツリー状に表した図に フィーチャー図 がある プロダクトライン開発では良く使われる フィーチャー図を使って共通性 可変性を可視化 6
フィーチャー図のススメ 7
フィーチャー図とは 例えば 以下のような機能検討中のネットワーク機器製品に対して機能をフィーチャー図で表現 Wi-Fi 対応機能がある製品と無い製品がある ポート数は 4 個または 8 個 Wi-Fi 対応機能がある製品はポート数が 4 個の製品のみ 8
フィーチャー図で表現 必須なフィーチャー <<TopLevelFeature>> ネットワーク機器製品 ドメインとなるフィーチャー 排他的な選択 <<MandatoryFeature>> ポート数 製品のフィーチャー 選択しても選択しなくても良いフィーチャー <<Feature>> 4 ポート <<Feature>> 8 ポート <<OptionalFeature>> Wi-F i 機能 フィーチャー図で表現したものの これが製品戦略的に正しい? 9
検討後のフィーチャー図 Wi-Fi 機能はポート数に関わらず選択可能に検討 <<TopLevelFeature>> ネットワーク機器製品 <<MandatoryFeature>> ポート数 <<OptionalFeature>> Wi-F i 機能 <<Feature>> 4 ポート <<Feature>> 8 ポート 製品ファミリーの要求分析 検討が容易に行える 10
フィーチャー図と BricRobo による 簡単プロダクトライン開発 11
ドメインは ET ロボコン走行体 従来は NXT 素材の走行体だったが 来年 (2015 年 ) から次世代機の EV3 が使用可能予定 NXT と EV3 の共通部分の開発工数を削減したい NXT の資産を有効活用したい プロダクトライン開発として分析 ジャイロセンサ NXT ジャイロセンサ EV3 マイコン マイコン モータ 光センサ カラーセンサ モータ 記載されている製品名などの固有名詞は 各社の商標または登録商標です 12
プロダクトライン全体を可視化 フィーチャー図で分析や検討し 共通 固有部品を抽出 可変性を考慮した柔軟性の高い設計が可能 13
製品毎のフィーチャーを選択 フィーチャー図を参考に製品バリエーション (NXT/EV3) のフィーチャーを選択する ツリー形式だと論理的な構造を整理しやすい 表形式だと製品バリエーションのフィーチャーを管理できる 14
個別製品モデルの開発 CompositionType 製品バリエーション管理表から個別製品モデル (NXT/EV3) を開発 手作業 NXT_GYRO: GyroSens orbricnxt /out Gyro E TROBO C ON: C ont roller /outmotorl CompositionType NXT_RIGHT_MOTOR: Mot orbricnxt02 手作業 NXT_TAC HO_RIGHT: Mot ortachobricnxt TachoR NXT_TAC HO_LE F T: Mot ortachobricnxt TachoL /outmotorr NXT_LE F T_MOTOR: Mot orbricnxt02 NXT 用モデル E V3_GYRO: GyroSens orbrice V3 /out Gyro E TROBO C ON: C ont roller /outmotorl E V3_RIGHT_MOTOR: Mot orbrice V3 手作業 手作業 手作業 E V3_TAC HO_RIGHT: Mot ortachobrice V3 TachoR /outmotorr E V3_LE F T_MOTOR: Mot orbrice V3 E V3_TAC HO_LE F T: Mot ortachobrice V3 TachoL EV3 用モデル 15
新開発の EA アドインによる効率化 EA 上でフィーチャー図が描ける フィーチャー図が他のモデルと混在可 操作性を統一 Enterprise Architect ファイル SysML UML etc... フィーチャー図 フィーチャー図からバリエーション管理表を自動生成 相互にデータ連携 バリエーション定義はフィーチャー図 Excel どちらからも可能 ツールにより相互変換可能 16
抽出ツールによる個別製品モデルの作成 NXT_GYRO: GyroSens orbricnxt /out NXT_TAC HO_RIGHT: Mot ortachobricnxt NXT_TAC HO_LE F T: Mot ortachobricnxt Gyro TachoR TachoL E TROBO C ON: C ont roller /outmotorl /outmotorr NXT_RIGHT_MOTOR: Mot orbricnxt02 NXT_LE F T_MOTOR: Mot orbricnxt02 CompositionType E V3_GYRO: GyroSens orbrice V3 NXT_GYRO: GyroSens orbricnxt E V3_TAC HO_RIGHT: Mot ortachobrice V3 /out /out NXT_TAC HO_RIGHT: Mot ortachobricnxt E V3_TAC HO_LE F T: Mot ortachobrice V3 NXT_TAC HO_LE F T: Mot ortachobricnxt E V3_GYRO: GyroSens orbrice V3 E V3_TAC HO_RIGHT: Mot ortachobrice V3 /out E V3_TAC HO_LE F T: Mot ortachobrice V3 Gyro TachoR /outvalue TachoL F ORWARD: C ons t Value Gyro TachoR TachoL E TROBO C ON: C ont roller /outmotorl /outmotorr /outvalue TUIRN: C ons t Value E TROBO C ON: C ont roller /outmotorl /outmotorr E V3_RIGHT_MOTOR: Mot orbrice V3 NXT_RIGHT_MOTOR: Mot orbricnxt02 E V3_LE F T_MOTOR: Mot orbrice V3 NXT_LE F T_MOTOR: Mot orbricnxt02 CompositionType E V3_RIGHT_MOTOR: Mot orbrice V3 E V3_LE F T_MOTOR: Mot orbrice V3 CompositionType バリエーション管理表 (Excel) と全体設計モデルから個別製品モデルを自在に抽出 NXT と EV3 混合全体設計モデル 個別製品向けモデル抽出ツール NXT 用モデル EV3 用モデル 17
モデル駆動開発ツール BricRobo BricRobo モデル <<RunnableEntity>> + Initialize() :void uart :Uart Λ <<RPortEv>> send <<PPortEv>> packetout <<TopLevel>> SensorNode packetbuilder : SendPacketBuilder CompositionType <<RPortEv>> infraredsensor : count CeramicInfraredSensor Λ <<PPortEv>> count <<RPortEv>> temperature Λ <<PPortEv>> temperature temperaturesensor : TemperatureSensor UMLと似たモデル図からコード生成するツール <<PPortEv>> recv <<RPortEv>> in <<BricRoboKeyElement>> SenseTask :Task elapse = 1 inittimer = 0 Λ parser : RecvPacketParser <<BricRoboKeyElem... LedTask :Task elapse = 100 inittimer = 0 <<PPortEv>> led Λ <<RPortEv>> in <<BricRoboKeyElement>> SendTask :Task elapse = 1000 inittimer = 0 led :Led BricRobo コードジェネレータ <<BricRoboKeyElement>> SendTask :Task Run() infraredsensor :CeramicInfraredSensor Run() temperaturesensor :TemperatureSensor packetbuilder :SendPacketBuilder uart :Uart ソースコード Run() RunSend() FUJITSU Embedded System BricRobo BricRobo 検索 18
最後に BricRobo の展示ブースでは今回ご紹介したツールのデモをご覧いただけます デモカーをドメインとしたフィーチャー図 フィーチャー図からバリエーション管理表 (Excel) の自動生成 フィーチャー図とバリエーション管理表 (Excel) の相互連携 全体設計モデルから個別製品向けモデルの抽出 19