組込みシステム開発入門download.microsoft.com/download/d/1/e/d1e5c5f3-faab-4548...このセミナーでは...
TRANSCRIPT
組込みシステム開発入門
マイクロソフト株式会社デベロッパー&プラットホー
ム統括本部
エンベデッドエバンジェリスト
太田
寛
2008/1/25
このセミナーでは
• 組込みシステムの基本事項
• 組込みシステム開発の背景と基本事項
• マイクロソフトが提供する、組込み向けテ クノロジー・プロダクトを使った実践方法
• シリーズで実施予定
• 皆さんとインターラクティブにセミナーの 内容を決めていく
2008/1/25 2
“組込み”ってなによ?
• “ 組込みシステム”– 装置の機能を実現するコンピュータ・システム
– 複数の装置を組み合わせて構成されたシステム
• “ 組込みソフトウェア”– 装置の機能を実現するソフトウェア
2008/1/25 3
組込みシステムの特徴
• 特定用途向けシステム
– リソース制約
– パフォーマンス
– コスト
– 信頼性
– 全体最適化
• 常にトレードオフとの戦い
2008/1/25 4
2008/1/25 5
Windows MobileSmartphones and
PDAs
Functionality
Windows Automotive
Portable Media Player
VoIP Phones
Ruggedhandheld
Medicaldevices
Windows terminals
Thin clients
Gamblingmachines
Point of sale
Office automation
ATMs / Kiosks
Industrial automation
Set-top Boxes
Secondarydisplays
Network sensors
Har
dwar
e R
esou
rces
Thin clients
Industrialautomation
Set-top BoxesRemote controls
Wearable devices
Security
つながる組込みデバイス
PCPC
Web servicesWeb services
Experiences:Experiences:ProductivityProductivity
CommunicationCommunicationEntertainmentEntertainment
CommunicationsCommunications MultimediaMultimedia
Manufacturing & Manufacturing & DistributionDistribution
RetailRetail
HealthcareHealthcare
組込みシステム分類
2008/1/25 7
*通信端末機器
(携帯電話機)
*カーナビ
*教育娯楽機器
*個人用情報機器
*コンピュータ周辺/OA機器
*AV機器
*家電機器
*設備機器
*運輸・建設機器
*工業制御/FA機器/産業機器
*自動車用ソフトウェア
(エンジン制御)
*通信設備機器
*医療機器
情報処理中心制御中心
民生機器
非民生機器
出典:2004年度 組込みソフトウェア開発力強化推進委員会活動報告(経済産業省、IPA)
システム化
• デバイス+サービス
– デバイスがネットワークに接続され、より大き なシステムの一構成要素になっているもの
• 複合デバイス
– 一つの装置に複数の機能デバイスが統合されて いるもの
2008/1/25 8
昨今の組込みソフトウェア開発
• 大規模化
• 多品種展開
• 高信頼性
• 要求の多様化
• 技術の陳腐化
• 短納期化
• 低価格化
2008/1/25 9
製品特性、各技術要素に関する
深い知識や、プログラミングテク
だけでなく
•エンジニアリング•チーム開発•開発管理•IT技術の活用
が必要
製品特性、各技術要素に関する
深い知識や、プログラミングテク
だけでなく
•エンジニアリング•チーム開発•開発管理•IT技術の活用
が必要
ハードウェア・アーキテクチャの基本
2008/1/25 10
CPUCPU
ROMROM
RAMRAM
入力装置入力装置
出力装置出力装置
A/D変換
D/A変換
各種センサー
アクチュエーター、ヒーター、ライト、
AcceleratorAccelerator
拡張IF拡張IF一部処理の最適化
ハードウェアの性能を最大限に引き出し、価値を付加
様々な
CPU
様々な
CPU多彩な物理
デバイス
多彩な物理
デバイス
様々な外部
デバイスへ
様々な外部
デバイスへ
様々なアク
セラレータ
様々なアク
セラレータ様々なHW
アーキテクチャ
様々なHW
アーキテクチャ
既定のアドレスから処理開始HW初期化処理
周辺デバイス初期化処理プログラム実行開始前処理既定のプログラム実行規定処理の繰り返し・・・・・・・・
既定のアドレスから処理開始HW初期化処理
周辺デバイス初期化処理プログラム実行開始前処理既定のプログラム実行規定処理の繰り返し・・・・・・・・
ハードウェア開発
ソフトウェア開発
組込みシステム開発プロセス
2008/1/25 11
非機能要件見積・処理能力
・応答性能・バス幅
・技術動向・必要な物理デバイス
・・・・
非機能要件見積・処理能力
・応答性能・バス幅
・技術動向・必要な物理デバイス
・・・・
ビジネス
プラン
ビジネス
プラン
設計設計
要件
定義
要件
定義設計設計 実装実装
試作試作 量産量産
テストテスト
テストテスト
システム
設計
システム
設計
製品
Software
組込みソフトウェアの構成
2008/1/25 12
SoftwareSoftware
HardwareHardware
HWを直接
制御
HWを直接
制御
昔・小規模のもの
製品機能実現製品機能実現
OSOS
Device
DriverDevice
Driver
HardwareHardware
通常の構成
層構造により、変更による影響を局所化
物理デバイスを組合せ、製品としての機能を実装
物理デバイスを組合せ、製品としての機能を実装
ブート、メモリ管理、プロ
セス管理等、基本機能を
提供
ブート、メモリ管理、プロ
セス管理等、基本機能を
提供
デバイス毎の詳細処理を
実装し、上位に提供
デバイス毎の詳細処理を
実装し、上位に提供
コンポーネント(モジュール)
群
コンポーネント(モジュール)
群
ソース
コード
ソース
コード
Compile &
Link
Binary化・ROM化
組込みソフトウェア開発環境
2008/1/25 13
製品機能実現製品機能実現
OSOS
Device
DriverDevice
Driver
製品機能の開発・応答性能(軽く無駄のない処理)・無駄な冗長性を省く
製品機能の開発・応答性能(軽く無駄のない処理)・無駄な冗長性を省く
OSの開発
・BSP開発
・OS構成
OSの開発
・BSP開発
・OS構成
Device
Driverの開発
・規定に従い実装・デバイス制御
Device
Driverの開発
・規定に従い実装・デバイス制御
全体で処理性能を確保
クロスプラットフォーム開発
エディタ、コンパイラ、デバッガ、リンカ、バイナリツール、ICE
要求管理スケジュール管理各種上流設計ツール構成管理チームコミュニケーション・・・・・・・・
参考)Windows Embedded CE
Demo
2008/1/25 15
部品リポジトリ
理想的な開発スタイル
• 部品化による再利用、分業
• 変更部分だけを作業
Page 16
AA
BB
CC
DD
EE
FF
C’C’
製品1
製品2
製品3
製品4
AA
BB
CC
AA
BB
DD
AA
BB
C’C’
EE
AA
BB
C’C’
EE
FF
プロダクトライン開発
プロダクトライン開発のプロセス
2008/1/25 17
コアアセット開発
コアアセット開発
製品ファミリーの要件製品ファミリーの要件
製品製品
製品開発製品開発
製品の要件製品の要件
ツールライブラリガイド
ツールライブラリガイド
フィードバック
コアアセット
プロトタイピング・・・
製品特化の要件製品特化の要件
しかし、それほど簡単な話ではないのだ!!
• 全体最適化(すり合わせ開発)の問題– 全体として最適化しているので、一部だけ修正した
場合でも、全体に影響が及ぶ恐れがある– 解決すべき問題は多数存在し、複雑に絡み合ってい
る– 各コンポーネントは状態を持つ
• 作るものは毎回違う– 部品にバリエーション、拡張性がなければならない– システムが部品の構成に対して柔軟でなければなら
ない
• 実装レベルで冗長性を持たせることが難しい
2008/1/25 18
部品リポジトリ
プロダクトライン開発をうまく回すために
Page 19
AA
BB
CC
DD
EE
FF
C’C’
製品1
製品2
製品3
製品4
AA
BB
CC
AA
BB
DD
AA
BB
C’C’
EE
AA
BB
C’C’
EE
FF
部品管理の為の
リポジトリや
構成管理機能
部品管理の為の
リポジトリや
構成管理機能
部品の内容や使
い方を説明するガ
イド機能
部品の内容や使
い方を説明するガ
イド機能
新しい部品を
作るための
ガイダンスやツール
新しい部品を
作るための
ガイダンスやツール
部品のバリエーション
部品のバリエーション
開発プロセスが標
準化され
全員が同じものを
使えること
開発プロセスが標
準化され全員が同じものを
使えること
システムの分割方法・統合方法部品の定義・作成方法
システムの分割方法・統合方法部品の定義・作成方法
アーキテクチャ
• システムのアーキテクチャを明確にすることが重要
• アーキテクチャーは複数の視点から記述される– システムを様々な視点で分割し、内容を明確化
• 開発にかかわるステークホルダー
• ステークホルダーが抱えるコンサーン
• コンサーンを解決するための視点=Viewpoint• 解決策を、複数のモデルを使って記述
• 各Viewpointは、それぞれ、扱う問題が異なる– それぞれに適した、開発プロセス、モデル、ツール
– 製品の種類によって、必要なViewpointの構成は変わる
2008/1/25 20
ステークホルダー、コンサーン、ビューポイント
製品が提供す
る機能は?
メカを思い通り
に制御するに
は?
実時間性を保
証するには?
セキュリティ要
件を実装する
には?
Viewpoint:アプリケーションViewpoint:アプリケーションアプリケーション
Viewpoint:メカ制御Viewpoint:メカ制御メカ制御
Viewpoint:実時間制御Viewpoint:実時間制御実時間制御
Viewpoint:セキュリティViewpoint:セキュリティ
モデルプロセスライブラリ
ツールサンプルドキュメント
モデルプロセスライブラリ
ツールサンプルドキュメント
モデルプロセスライブラリ
ツールサンプルドキュメント
モデルプロセスライブラリ
ツールサンプルドキュメント
※必要なViewpointは、製品の種類によって異なる
※コンサーンのプライオリティ明確化により、トレードオフの基準とする
Viewpoint間の関係
<<Viewpoint>><<Viewpoint>>
<<Viewpoint>><<Viewpoint>>
成果物を使う
<<Viewpoint>><<Viewpoint>>
<<Viewpoint>><<Viewpoint>>
拡張する
アスペクト注入
<<Viewpoint>><<Viewpoint>>組合せる
実装レベルのシステム構造の検討
バイナリのパッケージ方法コンポーネント基本機能プロセス、タスクへのマップ方法コンポーネント管理機構インタフェースの公開方法冗長性の確保プロジェクトの構成方法
バイナリのパッケージ方法コンポーネント基本機能プロセス、タスクへのマップ方法コンポーネント管理機構インタフェースの公開方法冗長性の確保プロジェクトの構成方法
結合の時期•リンク時•システム初期化時•システム実行中
結合の時期•リンク時•システム初期化時•システム実行中
コンポーネントでシステムを構成
メッセージ交換方法•メソッドコール•タスク間通信•ミドルウェア利用
メッセージ交換方法•メソッドコール•タスク間通信•ミドルウェア利用
“提供”インタフェース“提供”インタフェース
“要求”インタフェース“要求”インタフェース
分割の指針:機能の凝集度が高い同じ抽象度(問題領域)一方向依存ライフサイクルが同じ
分割の指針:機能の凝集度が高い同じ抽象度(問題領域)一方向依存ライフサイクルが同じ
※これも一つのViewpointである
そのコンポーネントは“何をするものか”が明確になっていることが非常に重要
そのコンポーネントは“何をするものか”が明確になっていることが非常に重要
コンポーネントのインタフェース
停止再生中:⇒再生停止巻戻中:⇒再生再開・・・
インタフェースの定義:={操作+{引数}}
だけでなく・・・
インタフェースの定義:={操作+{引数}}
だけでなく・・・
“状態”の明確化・定義も必要“状態”の明確化・定義も必要
状態モデル データモデル
再利用可能部品(コアアセット)
2008/1/25 25
実装レベルの再利用可能部品
状態状態
提供機能提供機能
要求機能要求機能
どう実装するかコンポーネント
全て再利用可能部品(コアアセット)全て再利用可能部品(コアアセット)
このコンポーネントは“何をする”ものか
•アルゴリズム•パターン•イディオム•・・・
•アルゴリズム•パターン•イディオム•・・・
製品機能実現層
2008/1/25 26
製品機能実現製品機能実現
OSOS
Device
DriverDevice
Driver
ApplicationApplication
MiddlewareMiddleware
User
InterfaceUser
Interface
Real World
Hardware, Computing
オペレータの
操作方法
オペレータの
操作方法
装置が提供
する本来機能
装置が提供
する本来機能
一般的な基本機能群、
各種フレームワーク
ネットワーク、通信、画像処理、音声、
データベース、物理デバイス制御、・・・
一般的な基本機能群、
各種フレームワークネットワーク、通信、画像処理、音声、
データベース、物理デバイス制御、・・・
使い勝手の改良要求で変化コンポーネント化・自動化が進ん
だ領域
UI
Designer等の活用
使い勝手の改良要求で変化コンポーネント化・自動化が進ん
だ領域UI
Designer等の活用
製品仕様・市場の要求変化本質的には実装技術非依存UMLによるモデル駆動型開発
製品仕様・市場の要求変化本質的には実装技術非依存UMLによるモデル駆動型開発
実装技術の進歩により変化時が経つにつれ、標準化が進行特徴に応じてモデル駆動型、コード駆
動型による開発
実装技術の進歩により変化時が経つにつれ、標準化が進行特徴に応じてモデル駆動型、コード駆
動型による開発
各層の特徴に応じて、適切なコンポーネント化ルールを適用すること
各層の特徴に応じて、適切なコンポーネント化ルールを適用すること
※レイヤ、コンポーネントによって適切なモデリング体系は異なる
ミドルウェア、基本機能の部品化
OSOS
Device
DriverDevice
Driver
HardwareHardware
部品内部の処理の実装は、HardwareやOS、
Device
Driverの特性を生かし、最適化する
⇒実装レベルのコンポーネントを
部品として再利用
実行時に設定が必要な特性パラメータの扱いに
留意
部品内部の処理の実装は、HardwareやOS、
Device
Driverの特性を生かし、最適化する
⇒実装レベルのコンポーネントを
部品として再利用
実行時に設定が必要な特性パラメータの扱いに
留意
ネットワーク、通信、画像処理、・・・の部品
インタフェースの定義は“一般化”が必要
個別のハードウェアに依存しない事特定の利用コンテキストを想定しない事
インタフェースの定義は“一般化”が必要
個別のハードウェアに依存しない事特定の利用コンテキストを想定しない事
※設計時、UML等を用いたモデル化も有効
特性パラメータ、振舞の詳細⇒バリエーションポイント
特性パラメータ、振舞の詳細⇒バリエーションポイント
アプリケーションのモデル
• オブジェクト指向分析モデル(UML)
RouteRoute
SegmentSegment
1
* segments
1 next
prev 1SegmentSpeSegmentSpe
cc
StraightStraight CurveCurve
curvaturecurvatureangleangle
lengthlengthspec 1*
positionpositionangleangleinclenation
{disjoint,complete}
namename
クラス図
情報(データ)の観点でモデル化
通常駆動中
制御プロファイル
切換え中
キャリブレーション
中
ゴール後停止駆動中
ゴール後停止
キャリブレーション完了
プロファイル決定
マーカー検出
ゴールマーカー検出
停止
スタートステートチャート
振舞の観点でモデル化※流派により、•各クラスに対してステートチャートを定義•状態遷移表を用いて、厳密化•状態のアクションをアクション記述言語で定義などのバリエーションがある
オブジェクトの構成⇒バリエーションポイント
オブジェクトの構成⇒バリエーションポイント
モータ制御や温度制御などのモデル
• 連続系のモデル
物理モデル PIDモデル
モータの駆動力無駄時間慣性モーメント・・・
ブロック、パラメータの構成⇒バリエーションポイント
ブロック、パラメータの構成⇒バリエーションポイント
部品のバリエーション
2008/1/25 30
固定部分固定部分
可変部分可変部分 パラメータ化パラメータ化
テンプレート化テンプレート化
メタモデル
変換ルール
WizardDSL(Model)
Editor
DSL:Domain Specific Languageパラメータ入力向けに、直観的にわかりやすい記法を定義したモデル図
Viewpointとモデル駆動型開発
2008/1/25 31
<<Viewpoint:アプリケーション開発>><<Viewpoint:アプリケーション開発>>
<<Viewpoint:コンポーネント実装機構>><<Viewpoint:コンポーネント実装機構>>
基本
クラス
ライブラリ
<<Viewpoint:アプリのコンポーネント化>><<Viewpoint:アプリのコンポーネント化>>
変換ルール
DSL
エディタ
一部手書き
コードを追加
•モデルを使って設計内容を可視化•定型作業をパターン化し、自動化⇒“モデル駆動型開発”
•モデルを使って設計内容を可視化•定型作業をパターン化し、自動化
⇒⇒““モデル駆動型開発モデル駆動型開発””
システムのバリエーション・組み上げ
• Feature Model
2008/1/25 32
パスファインダー
競技用機能
通常走行
キャリブレーション
難所走行
検証用機能
観測データ取
得
必須機能 オプション機能
システム構成のバリエーションを定義部品のスコープ部品のカタログ化部品利用時のコンテキストを明確化
システム構成のバリエーションを定義部品のスコープ部品のカタログ化部品利用時のコンテキストを明確化
フィーチャー凡例)フィーチャーを実現する部品群
バリエーションの指定
予め決められたルールに従いコンポーネントを組上げる
予め決められたルールに従いコンポーネントを組上げる
開発環境
• プロジェクトテンプレート
– 決まりきった内容は事前に自動的に作成
• サンプルやTips• 作業のナビゲーション
• 構成管理(リポジトリ)
• チーム開発
• 大事なのは“全員が同じ環境を使う”こと
2008/1/25 33
Demo
2008/1/25 34
Software Factories
• ドメイン特化の開発プロセスと、
それを支援するカスタム開発環境
を作成する方法論
• Software
Factoriesを支える4本柱– ソフトウェアプロダクトライン– モデル駆動開発– アーキテクチャフレームワーク
– 文脈によるガイダンス
資産の部品化戦略的な再利用
成果物、ノウハウの見える化自動生成・変換
システムの骨格システムをどう分割するか
開発作業支援統合環境
Software Factories概観
組込みシステム開発
組込みシステム開発
ViewpointViewpoint A
ViewpointViewpoint BB
ステークフォルダー、
コンサーン毎に組織化
プロダクト開発
(Variantの制御)
DSLDSL AA
DSLDSL BB
ModelModel AA
ModelModel B
DSLDSL CCModelModel CC
DSLで知識を資産化
効率的な扱いGATで手順を組織化
AssetAssetAssetAssetAssetAsset
(ライブラリ、サン(ライブラリ、サン
プル、文書、プル、文書、……
Software Factory Template
実現のための道具立て
• D SL、Generatorの作成
– Visual Studio 2005 SDK
• プロジェクトテンプレートのカスタマイズ– Visual Studio カスタマイズ向け機能
• ガイダンスオートメーションの作成– GAT/GAX
• チーム開発、構成管理など– Visual Studio 2005 Team System
リファレンス
• Windows Embedded– http://www.microsoft.com/embedded
• Software Factories– http://www.microsoft.com/japan/msdn/architectur
e/sf/• Visual Studio
– http://www.microsoft.com/japan/msdn/vstudio/• 私のブログ
– http://blogs.msdn.com/hirosho
2008/1/25 39