モデルベース開発が進んでもモデルが再利用されない理由とは?
モデルベース開発(MBD)を導入しても、「モデルの再利用が進まない」「部品化が進まない」といった悩みをよく耳にします。これは単に開発ツールや開発体制の問題ではなく、モデルそのものの設計思想、すなわちソフトウェアアーキテクチャを軽視しているケースが非常に多く見受けられます。
本記事では、なぜMBDの現場でモデル再利用が進まないのか、その根本原因と対策について考えてみたいと思います。
1. モデルが再利用できない原因は「構造の悪さ」にある
モデルが再利用されない要因は多数ありますが、弊社がよく見るパターンの一つとして、
ソフトウェア設計にオブジェクト指向的な考え方が取り入れられていないことにあります。
現場では、たとえば「XXXステート」と呼ばれる状態管理変数のようなものを中心にモデルが構成されているケースが多くあります。
このようなモデルでは、XXXステートの仕様が変わると、それを参照しているあらゆるモデルに影響が波及します。
つまり、モデル同士の依存関係が強くなりすぎてしまい、再利用やモジュール単体での動作が困難になります。
ステートとセットでないと動かないモデルというのは、設計上の独立性がなく、部品化が阻害されている状態なのです。
本来であれば、独立して動作できるモデルであることが、再利用性や保守性を高めるための基本設計となります。
にもかかわらず、モデル間で直接変数を渡し合い、密結合な構造になってしまっている現場が多いのが実情です。
2. なぜ現場でその構造は変わらないのか?
こうした構造の問題を指摘しても、現場で設計手法を見直す動きはなかなか起こりません。
いくつか要因があるのですが、よくあるパターンとしては、新しい設計アプローチを採用することによって、
「なぜ今までと違うやり方をするのか?」という説明責任が発生し、余計な手間やリスクを抱えたくないという心理が働くからです。
さらに問題なのは、多くの現場でモデルを実装している人材が、アーキテクチャ設計のスキルを持っていないという点です。
現場でのモデル作成を派遣社員や外注先に作業を任せているケースも多く、
全体構造や将来の拡張性・保守性を見越して設計できる人材がいないという深刻な課題があります。
また、制御設計に長けた「制御屋」はいるものの、ソフトウェアアーキテクチャという観点で設計を行える人は少なく、
制御ロジックをそのままソフトウェアに落とし込むことが今の主流になっています。
制御ロジックをそのまま実装することで、結果として依存性が高く、保守が難しいソフトウェアになってしまうのです。
現場ではレビューを通過した制御ロジックが「正しい」されており、それに従うことが絶対とされる風潮もあります。
「ロジックを変えるとトレーサビリティが崩れる」という理由で、変更の余地すら与えられないという声も実際に上がっています。
3. ではどうすればよいのか?アーキテクチャ設計の視点を組織に組み込む
再利用性や保守性の高いモデルを作るためには、個々のモデル作成者の努力だけでは限界があります。
最も重要なのは、ソフトウェアアーキテクチャの専門的な役割を明確に定義し、そのポジションを組織内に設けることです。
モデルを設計する際にも、システム全体の構造を見据えて
「このモデルは何と依存し、どこまで独立しているべきか」
「インターフェースはどう設計すべきか」といった視点でレビュー・設計ができるアーキテクトが必要です。
こうしたアーキテクチャレベルの設計や議論がなければ、モデルはその場しのぎの実装になり、
再利用性や拡張性のある開発環境を実現することはできません。
既存の制御ロジックに対しても「そのまま実装すべきかどうか」「どうすればソフトウェアとして管理しやすい構造になるか」といった視点で議論を深められる体制を整える必要があります。
まとめ
モデルベース開発を導入しても、モデルが再利用されない、部品化が進まないという悩みの背景には、
ソフトウェアアーキテクチャを軽視した設計文化があります。
依存関係の強いモデル構造が乱立し、それを変えようとする動きが起こらない現場では、真の意味でのMBDの効果は得られません。
この状況を打開するためには、ソフトウェアアーキテクチャを設計する専門人材、ポジションを正式に設けることが必要です。
制御ロジックとソフトウェアアーキテクチャを分離し、それぞれに責任を持つ体制を作ることで、MBDの真価がようやく発揮されると考えております。