我如何进行分布式UML开发(àlaFOSS)?

时间:2009-11-16 12:54:01

标签: refactoring uml ibm-rational

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

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

  1. 第1组发布了一些“核心”包,比如说“net/smtp版本1.0”
  2. 第2组包括其软件项目供应商库中的第1组net/smtp 1.0软件包
  3. 在某些时候,第1组创建了net/smtp的新2.0分支,它打破了向后兼容性(比如,它删除了一个旧的类或方法,或者将一个类从一个包移动到另一个包)。他们告诉1.0版本的用户,它将在一年内弃用。
  4. 第2组,当他们有时间时,更新为net/smtp 2.0。当他们放入新包时,他们的编译器(或Ruby的测试套件)告诉他们不兼容性。他们必须进行一些手动更改,但所有更改都在代码中,以纯文本形式显示,这是他们非常熟悉的媒介。此外,一旦他们弄清楚修复的内容,他们通常可以使用他们的IDE(或文本编辑器)“全局搜索和替换”功能。
  5. 当我们尝试将此模型应用于RSA中的UML时,我们遇到了一些问题。 RSA支持一些相当强大的重构,但它们似乎只有在您对所有部分具有写入权限时才有效。如果我在一个包中重命名一个类,RSA可以重命名引用,但只能同时重命名。查看底层源(XML)并弄清楚什么是破坏是非常困难的。要在RSA编辑器中修复这样的问题本身就意味着大量点击事物 - 没有相当于“全局搜索和替换”,至少不是在不完整的重构之后。

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

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

1 个答案:

答案 0 :(得分:0)

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

如果您已经满足上述要求,请扩大需求。对于没有该工具的开发人员,是否需要实时和/或在RSM之外。你能提供一个“破坏”或要求“大量点击事物”的例子吗?我之前已经解决了这个问题,并且已经根据我的需求和约束以多种方式解决了这个问题。

  1. (上述方式)
  2. 将项目分成小文件,但它是一个较大的模型。 (仅解决几个问题)
  3. 编写一个eclipse / RSM插件以保持同步,这适用于有限但重要的跨项目链接。例如,拥有模型需要重用的一组共享组件或资产。
  4. 再次提供更多信息我可以提供更好的答案,FOSS引用只让我猜你想要松散耦合/对象可重用/扩展,但真正的RSM示例可能会有所帮助。如果您调整问题并告诉我,我可以更新我的答案。