最近耳にしないMDAツール「RoseRealTime」~標準的なオブジェクト指向でなくCSPベースのアプローチです。
先進的な製造業の企業では、MDAアプローチが積極的に進められている。
私自身もMDAの開発経験もあるし、コンサルテーションおよび最新の研究も進めている。
MDAは開発環境の支援がないと行えない技法である。
それだけに開発環境の選択が重要なのである。
一方MDAは開発環境の支援が必要な上に、開発環境の特徴(というか技術のコンセプト)に強く依存する。
つまり、一口にMDAツールと言っても各MDA開発環境の特徴を理解しないと、MDAアプローチの製品開発の効果が不発に終わるこも多い。
MDAの開発環境モデリングツールに、以前「RoseRealTime」があった(現在も販売しているかもしれない。。)。
最近、全くこのRoseRealTimeについての話を耳にしない。
私の印象では、販売元のIBM-RationalがRoseRealTimeの特徴やリットおよび技術基盤についてのアピールが上手でなかった気がしている。
MDA支援ツールは通常、オブジェクト指向技術を軸に先進的な開発手法や理論に基づく機能の支援を提供しているのだが、RoseRealTimeの場合は、開発環境の技術基盤の軸がオブジェクト指向技術を包含しつつも実際には「CSP」であることが最大の特徴だったことである。
他の多くのMDAツールが標準的なオブジェクト指向アプローチに対して、RoseRealTimeは並列・並行性の複雑な設計をどのように形式的に設計するべきかと言うCSPベースのアプローチである。
当然、複数のCPUやマルチコアタイプの実装環境のソフトウエア開発では、並列・並行性の設計は難題の1つであるから、CSP理論を支援する開発環境は非常に重要だ。
RoseRealTimeはツールこのようなソフトウエア開発を想定しており、原則としてCSP理論や効果を理解しているユーザーが活用することが望ましい。
残念ながらRoseRealTimeは少々強引に”オブジェクト指向”を強調しすぎた感がある。
一応、RoseRealTimeの開発アプローチではユースケース記述をしていくところやクラス(これがカプセルの基であり、独立して動作する単位へと成長させていく)抽出する流れは、標準的なオブジェクト指向開発と同じ流れであるが、少々強引な感じも否めない。
なぜなら、標準的なオブジェクト指向アプローチのクラスとRoseRealTimeのCSPベースのクラスは根底が異なるために継承などの考え方に違いが出てくるからだ。
RoseRealTimeでは、「is-a」による区分原理の継承よりも「実装継承」としての設計が多くなる(補足:Liskov置換原理を意識すれば実装継承も保守・拡張性にさほど影響を与えない==>この辺はバートランド・マイヤーの「Object-Oriented Costruction」に詳しく書かれている。マイヤーは実装継承を積極的に薦めている。ただし、「DbC」をきっちりしないとNG)。
多くのエンジニアが特に違和感を受ける部分は、開発ライフサイクル初期の段階から実装上のことを考慮する感じがする点である。
(誤解の無い様に補足しておくと、RoseRealTimeのアプローチの分析(少々乱暴だがMDAのPIMに対応)作業のモデルでは、特定のOSやミドルウエアへの最適化の事では無く、並行性や時間制約およびデーター交換やプロトコルのことを検討するので、一応特定のOSやミドルウエアからは非依存のモデルにはなる。。。)
このことから、オブジェクト指向に慣れた多くのエンジニアが、RoseRealTimeがMDAツールであると主張しながら、PIMやPDMに対応しないモデルを作成していくという印象をぬぐえないのである。
まぁCSPだから当然なんだけど:-)、標準的なオブジェクト指向アプローチしか知らないエンジニアには、非常に違和感を感じるのである。
それだけに、もっとCSPの考え方を説明した上で、オブジェクト指向技術やユースケースによる要件定義さらには反復型開発によるMDAアプローチを推進することを強調した方が正解だった気がする。
実はRoseRealTimeは、もともとObjectTime社のツールであり、IBM-Rationalが買収して名前がRoseRealTimeになった。
そのとき、RoseRealTimeをRUPを合わせたのだが、若干急ぎ過ぎたのではないか?あるいはCSP開発アプローチを理解しないままRUPにあてはめたのか?
ソニー時代、RoseRealTimeのUSAのスタッフの人間と話をする機会があったが、時がCSPアプローチの話は全くしていなかった。
MDAではPIM作成のとき、実装環境およびそれに関連する内容は検討しないのに、RoseRealTimeのアプローチでは、開発初期に必要以上に、並行性や時間制約およびデーター交換やプロトコルのことを検討するのか?
という質問にUSAのスタッフ(多分マーケティングか営業)は回答できなかった記憶がある。
RoseRealTimeはある程度開発対称のプロジェクトを選ぶが(並行性や時間制約が不要なSWなど)、非常に効果があるから、上手に特徴が説明されなかったのは惜しまれるツールである。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- 6つのテーマを同時並行作業(2019.07.05)
- すっかりご無沙汰してしましました(2018.05.27)
- CCCC(C AND C++CODE COUNTER)GUIランチャーの公開(2017.04.13)
- 作成したYicesのGUIからオプションを変えSMTを行う(2017.01.19)
- 『Yices』によるSMTソルバ(2017.01.18)
最近のコメント