0

我有一个 UML 项目(在 IBM 的 Rational System Architect/Modeler 中构建,因此以它们的 XML 格式存储)已经变得相当大。此外,它现在包含其他组想要重复使用的几个部分。我来自软件开发(尤其是 FOSS)背景,并试图了解如何在这里使用它作为类比。我正在努力解决的问题类似于易碎基类问题。

让我从它在面向对象(比如 Java 或 Ruby)FOSS 生态系统中的工作原理开始:

  1. 第 1 组发布了一些“核心”包,比如“ net/smtp1.0 版”
  2. 第 2 组net/smtp在其软件项目的供应商库中包含第 1 组的 1.0 包
  3. 在某些时候,第 1 组创建了一个新的 2.0 分支,net/smtp它破坏了向后兼容性(例如,它删除了一个旧的类或方法,或者将一个类从一个包移动到另一个包)。他们告诉 1.0 版本的用户,它将在一年内被弃用。
  4. 第 2 组,当他们有时间时,更新到net/smtp2.0。当他们放入新包时,他们的编译器(或 Ruby 的测试套件)会告诉他们不兼容的情况。他们确实必须进行一些手动更改,但所有更改都在代码中,以纯文本形式出现,这是他们非常熟悉的一种媒介。另外,一旦他们弄清楚修复是什么,他们通常可以使用他们的 IDE(或文本编辑器)的“全局搜索和替换”功能。

当我们尝试将此模型应用于 RSA 中的 UML 时,我们遇到了一些问题。RSA 支持一些相当强大的重构,但它们似乎只有在您对所有部分都具有写入权限时才有效。如果我在一个包中重命名一个类,RSA 可以重命名引用,但只能同时重命名。查看底层源(XML)并找出损坏的地方非常困难。在 RSA 编辑器中解决这样的问题本身意味着大量的点击——没有很好的“全局搜索和替换”等价物,至少在重构不完整之后是这样。

他们真正的症结似乎是 RSA 假设您想使用他们的 GUI 进行所有编辑,但这使得某些操作非常困难。

有没有人有克服这个问题的开源 UML 项目的例子?他们使用什么策略来传达变化?

4

1 回答 1

0

包是远程模型引用,即存储在它自己的 emx 中,不直接包含在内。然后只是通过 CVS/SVN 共享模型并单独管理它们?更改将以这种方式传播,模型可以跨建模文件进行引用,它们不需要全部放在一个文件中。

如果您已经具备上述条件,请扩大需求。对于没有该工具的开发人员,它是否需要实时和/或在 RSM 之外。您能否提供一个“中断”或需要“大量点击”的示例?我之前已经解决了这个问题,并根据我的需要和限制以多种方式解决了它。

  1. (上面的方法)
  2. 将项目分成小文件,但它是一个更大的模型。(只解决了几个问题)
  3. 编写一个 eclipse/RSM 插件来保持同步,这是用于有限但重要的跨项目链接。例如,拥有一组模型需要重用的共享组件或资产。

再次使用更多信息,我可以提供更好的答案,FOSS 参考仅让我猜测您想要松散耦合/对象可重用性/扩展,但真正的 RSM 示例可能会有所帮助。如果您调整问题并让我知道,我可以更新我的答案。

于 2009-11-18T04:15:51.853 回答