0

非常に大きくなった UML プロジェクト (IBM の Rational System Architect/Modeler で構築されているため、XML 形式で保存されている) があります。さらに、他のグループが再利用したいいくつかのピースが含まれています。私はソフトウェア開発 (特に FOSS) のバックグラウンドを持っており、ここで類推としてそれを使用する方法を理解しようとしています。私が取り組んでいる問題は、壊れやすい基本クラスの問題に似ています。

オブジェクト指向 (Java や Ruby など) の FOSS エコシステムでの動作から始めましょう。

  1. net/smtpグループ 1 は、「バージョン 1.0」などの「コア」パッケージを公開します。
  2. グループ 2 にはnet/smtp、ソフトウェア プロジェクトのベンダー ライブラリにグループ 1 の 1.0 パッケージが含まれています。
  3. ある時点で、グループ 1 はnet/smtp下位互換性を壊す新しい 2.0 ブランチを作成します (たとえば、古いクラスまたはメソッドを削除したり、あるパッケージから別のパッケージにクラスを移動したりします)。彼らは 1.0 バージョンのユーザーに、1 年で非推奨になると伝えています。
  4. グループ 2 は、時間があるときにnet/smtp2.0 に更新します。新しいパッケージをドロップすると、コンパイラ (Ruby の場合はテスト スイート) が非互換性について通知します。彼らはいくつかの手動の変更を加える必要がありますが、すべての変更は、彼らが慣れ親しんだ媒体であるプレーン テキストのコード内にあります。さらに、修正内容がわかれば、IDE (またはテキスト エディタ) の「グローバル検索と置換」機能を使用できることがよくあります。

このモデルを RSA の UML に適用しようとすると、いくつかの問題が発生します。RSA はいくつかのかなり強力なリファクタリングをサポートしていますが、それらはすべての部分への書き込みアクセス権を持っている場合にのみ機能するようです。1 つのパッケージ内のクラスの名前を変更すると、RSA は参照の名前を変更できますが、同時にしか変更できません。基礎となるソース (XML) を調べて、何が壊れているのかを突き止めるのは非常に困難です。RSA エディタ自体でこのような問題を修正するには、何回もクリックする必要があります。少なくとも不完全なリファクタリングの後では、「グローバル検索と置換」に相当するものはありません。

彼らの真の難点は、RSA が GUI を使用してすべての編集を行いたいと想定しているように思われますが、それによって特定の操作が非常に困難になります。

この問題を克服したオープンソース UML プロジェクトの例はありますか? 変更を伝えるためにどのような戦略を使用していますか?

4

1 に答える 1

0

パッケージはリモート モデル参照、つまり直接含まれない独自の emx に格納されます。次に、CVS/SVN を介してモデルを共有し、それらを個別に管理しますか? 変更はそのように伝播されます。モデルは、すべてが 1 つのファイルである必要のないモデリング ファイル間で参照できます。

すでに上記のことを考えている場合は、必要に応じて拡張してください。ツールを持っていない開発者のために、リアルタイムまたは RSM の外部である必要がありますか? 何が「壊れる」か、「何回もクリックする」必要がある例を挙げていただけますか? 私は以前にこの問題に取り組み、ニーズと制約に応じていくつかの方法で解決しました。

  1. (上の道)
  2. プロジェクトを小さなファイルに分割しますが、それは 1 つの大きなモデルです。(いくつかの問題のみを解決します)
  3. eclipse/RSM プラグインを作成して、物事を同期させます。これは、限定的ではありますが、プロジェクト間の重要な連携のためです。たとえば、モデルが再利用する必要があるコンポーネントまたはアセットの共有セットを用意します。

FOSS リファレンスでは、疎結合/オブジェクトの再利用性/拡張が必要であると推測できますが、実際の RSM の例はもっと役立つかもしれません。質問を微調整してお知らせいただければ、回答を更新できます。

于 2009-11-18T04:15:51.853 に答える