会社の規模にかかわらず、モデルベースデザイン (MBD、モデルベース開発) は常に小規模な技術チームから開始し、開発時間とコストを削減するために採用されています。本ホワイトペーパーでは、小規模チームでのモデルベースデザインの採用における成功事例と留意点をご紹介します。
モデルベースデザインとは?
モデルベースデザインには、システムを開発するための数学的および視覚的な手法が用意されています。モーション コントロール、信号処理、産業機器、航空宇宙および自動車分野など、幅広い産業分野や用途で使用されています。モデルベースデザインは、要求仕様書と妥当性確認、設計、解析、シミュレーション、自動コード生成、検証と妥当性確認などの開発プロセス全体でモデルを体系的に使用することを中心としています。
モデルベースデザインは、アジャイル開発手法を補完し、可能にします。モデルベースデザインでは、アジャイル手法と同様に、開発者がプロジェクトの初期段階で不具合や設計上の問題を発見し、要件の変更に対応して、顧客のニーズを満たすシステムを提供することができます。たとえば、継続的インテグレーション (CI) システムと接続して、開発のライフサイクル全体でモデルやコードを自動的にテストし検証することで、ユーザーは反復実行を迅速化することができます。
さらに、過去に開発したモデルの使用を運用中のシステムに拡張し、デジタルツインを作成することで、システム動作の最適化、システム状態の監視、開発チームへのフィードバック メカニズムの提供により、継続的改善を行うことができます。この DevOps 手法によって、予知保全やリアルタイムの故障検出などに応用できます。
エンジニアは、モデルを作成し、システムの動作を指定します。このモデルは、ブロック線図などのグラフィックス要素とテキストプログラムで構成された、実行可能な仕様です。これにより、エンジニアは、開発プロセス全体を通して、設計概念の代替案をテストするためのシミュレーションを実行し、設計を検証することができます。
システムモデルを実行可能な仕様として使う利点は以下のとおりです。
- 設計を開発プロセス全体でテスト、調整、再テストすることができます。
- モデル化とシミュレーションにより、エンジニアは高価なプロトタイプを作成する必要がなく、多くのアイデアを素早く試すことができます。
- テストと妥当性確認は、プロセスの最終段階ではなく、早い段階で継続的に実行し、ハードウェアテストの前にエラーを発見し、修正することができます。
- システムモデルからコードを生成することができるため、労力を軽減し、手書きによるコードのエラーを排除できます。このコードは、リアルタイム シミュレーションのテストやハードウェアへの展開に使用することができます。
- モデルは、以降のプロジェクトに適応させて、再利用することができます。
モデルベースデザインを始める
システム開発の方法が変わっても、チームの開発スピードを落とすわけにはいきません。このことは、実際問題として、新しいツールやプロセスの変更を慎重に行う必要があることを意味します。新しい手法や設計ツールを試す際には、常にリスクとなる要素が伴います。成功したチームは、モデルベースデザインを段階的に導入することで、このリスクを軽減してきました。通常は単一のプロジェクトから開始し、現行の手法を使用する場合と比較して、モデルベースデザインを使用することで達成可能な早い段階での成果を特定します。
モデルベースデザインの導入を成功させるためには、プロジェクトの進行を遅らせることなく、以下のように段階的に進めていきます。
- プロジェクトの小さい部分で実験する。
- 最初に成功したモデル化に基づき構築する。
- モデルを使用して特定の設計上の問題を解決する。
- 基本に忠実に取り組む。
- MathWorks のエキスパートの経験を活用する。
プロジェクトの小さい部分で実験する
導入の際は、システムの新しい領域を選び、ソフトウェア挙動のモデルを構築し、モデルからコードを生成することを推奨します。これは小規模な変更であるため、チームメンバーは学習に投資する時間を最小限に抑えることができます。これにより、以下のことが実証されます。
- モデルをシミュレーションすることで、アルゴリズムの欠陥を解消することができ、デスクトップで C コードを動的にテストするよりもはるかに簡単に詳細を確認できる。
- 手書きによるコーディングなしで高品質なコードを作成できる。
- コードがモデルの挙動と一致する。
最初に成功したモデル化に基づく構築
モデルベースデザインを採用する上で次に重要な作業は、システムレベル シミュレーションです。通常、一区切りのコードが問題なく機能することを確認した後に、開発者はそのコードをアプリケーションの残りの部分に組み込んで、ハードウェアとソフトウェアの統合の問題を見つけます。(これらは、すべてのコードを手書きで作成した場合に見つかる問題と同じです。)
対照的に、システムレベル シミュレーションでは、エンジニアが仮想的にシステム統合を行うことができます。これを行うには、エンジニアは、システム内のハードウェアと、システムを取り巻く環境の基本要素について、適切なモデルを作成する必要があります。アルゴリズムをテストするために、モデルの忠実度は、インターフェイスの信号が正しい単位で正しいチャネルに接続され、適切なレベルの動的挙動の取得を確認できるのに十分である必要があります。
その結果により、ハードウェアと組み込みソフトウェアがどのように動作するのかを早期に確認することができます。これは、ハードウェアが開発中でまだ存在していない場合や、プロトタイピングに費用がかかる場合に特に有益です。
モデルを使用して特定の設計上の問題を解決
エンジニアは、プラント、環境、およびアルゴリズムのモデルをフルスケールで開発することなく、目的の機能を得ることができます。たとえば、作動に使用されるソレノイドに必要なパラメーターを、チームで決定する必要がある場合を考えてみます。この場合、ソレノイドの周囲に概念的な「制御ボリューム」を描く単純なモデルを、ソレノイドを駆動させている回路と、ソレノイドが作用している対象を含めて開発することができます。チームはさまざまな極限の運用条件をテストし、方程式を算出することなく基本的なパラメーターを算出できます。シミュレーションを通して、エンジニアは必要な力を開発し、それをハードウェア設計作業にフィードバックします。このモデルを保存することで、後で別の設計上の問題を解決したり、次の製品開発プロジェクトで使用したりすることができます。
基本に忠実に取り組む
小規模のチームにとって、モデルベースデザインによってすぐに得られるメリットとして、以下の機能などがあります。
- コンポーネントとシステムモデルの作成
- シミュレーションの使用による開発全体における初期段階からの継続的な設計の検証およびテスト
- プロトタイピングおよびテスト用の C コードの自動生成
その後、チームはモデリング ガイドライン、要件のリンク、コンプライアンス チェック、量産向けコードの生成など、高度なツールや手法を検討することができます。
さらに、継続的インテグレーション (CI) システムに接続して、モデルやコードを自動的にテストおよび検証することで、アジャイル開発の手法を採用し、それらに準拠することができます。また、システムモデルの使用を運用中のシステムに拡張し、予知保全やデジタルツインなどの用途に利用できます。
ただし、小規模なチームの場合は、これらに後で対処することができます。
MathWorks のエキスパートの経験を活用する
MathWorks のエンジニアは、世界中の大規模および小規模な作業グループと緊密に協力してきました。彼らには、小規模なチームがモデルベースデザインを適用して最終目標に到達するサポートを行ってきた長年の経験があります。モデルベースデザインの採用に関心のある小規模なチームにとって、MathWorks と協力してチームがプロジェクトの状況をすみやかに把握できるようにすることは最初の良い一歩となります。
モデルベースデザインでの成功
モデルベースデザインを段階的に採用することで、あらゆる規模の組織における少人数の技術チームは、以下のような即時の目に見える成果を継続的に達成しています。
- 最初の実証までの時間を短縮
- 高品質な製品を市場に投入するまでの時間を短縮
- 複雑なシステムの開発能力を拡大
小規模のチームにおける成功は、プロジェクトに長い時間をかけて取り組み、貢献し、迅速に対応するエンジニアの労力に依存しています。このようなチームでは、段階的な手法を用いることで、モデルベースデザインの採用を円滑にすすめ、速度、習熟度、設計品質の面でさらに高いレベルのパフォーマンスを発揮することができます。
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)