最終回となる今回は、実際の開発現場におけるMBD&MDDの適用状況と、今後の展開・課題について紹介する
今回で本連載「体験! MBD&MDDによる組み込みシステム開発」も最終回になります。
これまで、「モデルベース開発(MBD:Model Based Development)」「モデル駆動開発(MDD:Model Driven Development)」の基本的な内容を見てきました。
最終回では、筆者の実際の経験を基に、開発現場におけるMBD&MDDの適用状況と、今後の展開および課題について紹介したいと思います。
“モデル”を使用する開発プロセスとして知られるMBDとMDDですが、「MBDは『制御の世界』で、MDDは『ソフトウェアの世界』で」といったように、“使い分け”されるケースがほとんどでした。
しかし、最近のシステム開発の現場では、有償の開発ツールなどを使用して、これら(MBD&MDD)をプロセス的に融合して開発を進める方向にシフトしようとしています。――もう少し分かりやすくいうと、「『制御の世界のモデル』『ソフトウェアの世界のモデル』を適材適所に使用して、統合的にシステムを開発していく」といったところでしょうか。
図1および表1にモデルを使用したシステム開発プロセスの例を、表2に各プロセスの内容を紹介します。
システム開発プロセスの適用例 | 内容 | |
---|---|---|
適用例1 | システム開発の分析・設計はUMLやSysMLなどで行う。詳細設計から制御モデルを使用して振る舞いを定義する。上流工程での成果物はツールなどで制御モデル側に取り込んで、コードを自動生成する | |
適用例2 | システム開発の分析・設計はUMLやSysMLなどで行う。詳細設計から制御モデルを使用して振る舞いを定義し、制御ロジックのみコード生成し、ハンドコードしたほかのコードとマージする | |
適用例3 | システム開発の分析・設計はUMLやSysMLなどで行う。詳細設計から制御モデルを使用して振る舞いを定義する。作成した成果物からハンドコードする。ハンドコードしたコードをツールを使用して制御側のモデルに取り込んで、設計時のモデルと比較して要求が満たされているかどうかを検証する | |
表1 モデルを使用したシステム開発の適用例 |
プロセス | 内容 | |
---|---|---|
分析・構造設計 | 分析・構造設計は、UMLやSysMLで行う。分析プロセスではこれらのダイヤグラムである「要求図」や「ユースケース図」「ユースケースシナリオ」などを使用してシステムの機能・非機能要件を分析する。構造設計プロセスではStructureダイヤグラムやState Machine、Sequenceダイヤグラムなどを使用して記載する | |
詳細設計 | UML、SysMLのActivity、State Machineダイヤグラム、制御モデルを使用して行う | |
コーディング | 分析・設計プロセスでの成果物を入力にして、「(1)コードを自動生成する」、あるいは「(2)ハンドコードする」。自動生成の対象はソフトウェアドメインのスケルトンコードや、制御ドメイン部分のロジック部分。使用するツールによっては状態遷移部分なども生成する | |
テスト | ツールを使用し、上流工程で作成されたモデルからテストケースを生成して、テストを実施する場合や、コーディングで作成されたコードをモデルにリバースして上流モデルと比較することでシステムに要求されている仕様が満たされているかどうかを検証する | |
表2 各プロセスの内容について |
いかがでしょう。ここに挙げたシステム開発プロセスのように、現在は「制御の世界のモデル」に落とし込んで開発するケースがほとんどです(ちなみに、筆者自身もこれまでの経験から、最終的に“制御側のツール”などを使って「制御の世界のモデル」に取り込むことが多いと感じています)。
さらに、現時点では、制御モデルの方がソフトウェアのモデルと比べ、
などの利点があります。
また、モデルからテストケースを作ったり、コードを生成したりと、単なる“モデル = 分析・設計過程でのツール(ダイヤグラム)”という考え方から、「開発ツールを使用して、上流工程で作成されたモデルをどのように有効活用するか」という考え方へと、現場におけるシステム開発プロセスもシフトしています。
図2にシステム開発を取り巻く要素を、表3にそれらに対するモデル使用のメリットを示しました。
要素 | モデルを使用することの利点 | |
---|---|---|
システム規模の増大 | 上流工程で作成したモデルから、ツールを使ってコードやテストケースの生成を行うことで開発工数削減が可能。また、抽象化レベルを上げることが可能なモデルを使用することでシステムの要件や機能の把握が容易になる | |
機能安全対応 | モデルを使用することで、分析・設計などの上流工程において、システムの故障原因が分かりやすくなる。また、モデルからコードを生成することで、コーディング時の人的エラーを未然に防止できる。また、機能安全的にベリファイされたモジュールを使用可能 | |
プレーヤーの増加 | 共通言語としてモデルを使用することで、プレーヤーの属するドメインにかかわらずシステムや内部モジュールの振る舞いの理解が容易になる | |
表3 システムを取り巻く要素へのモデル使用のメリット |
ここで示しているように、システム規模の増大や機能安全への対応、システムに関係するドメインのプレーヤーが増えることで、ますますモデルを使用した開発が有効になってきています。モデルを使用したシステム開発では、抽象化レベルを上げることでシステムを表現できるため、ここで挙げたシステム開発を取り巻く要素にも対応が容易です。
Copyright © ITmedia, Inc. All Rights Reserved.