我有一个UML项目(在IBM的Rational System Architect / Modeler中构建,因此以XML格式存储)已经变得非常大。此外,它现在包含其他组想要重复使用的几个部分。我来自软件开发(特别是FOSS)的背景,我试图在这里理解如何使用它作为类比。我正在努力解决的问题类似于Fragile Base Class问题。
让我先谈谈它在面向对象(比如Java或Ruby)FOSS生态系统中的工作原理:
net/smtp
版本1.0”net/smtp
1.0软件包net/smtp
的新2.0分支,它打破了向后兼容性(比如,它删除了一个旧的类或方法,或者将一个类从一个包移动到另一个包)。他们告诉1.0版本的用户,它将在一年内弃用。net/smtp
2.0。当他们放入新包时,他们的编译器(或Ruby的测试套件)告诉他们不兼容性。他们必须进行一些手动更改,但所有更改都在代码中,以纯文本形式显示,这是他们非常熟悉的媒介。此外,一旦他们弄清楚修复的内容,他们通常可以使用他们的IDE(或文本编辑器)“全局搜索和替换”功能。当我们尝试将此模型应用于RSA中的UML时,我们遇到了一些问题。 RSA支持一些相当强大的重构,但它们似乎只有在您对所有部分具有写入权限时才有效。如果我在一个包中重命名一个类,RSA可以重命名引用,但只能同时重命名。查看底层源(XML)并弄清楚什么是破坏是非常困难的。要在RSA编辑器中修复这样的问题本身就意味着大量点击事物 - 没有相当于“全局搜索和替换”,至少不是在不完整的重构之后。
他们真正的关键点似乎是RSA假设您想要使用他们的GUI进行所有编辑,但这会使某些操作变得非常困难。
有没有人有过克服这个问题的开源UML项目的例子?他们使用什么策略来传达变化?
答案 0 :(得分:0)
包是远程模型引用,即存储在它自己的emx中,而不是直接包含。然后只需通过CVS / SVN共享模型并单独管理它们?更改将以这种方式传播,模型可以跨建模文件引用它们不需要全部在一个文件中。
如果您已经满足上述要求,请扩大需求。对于没有该工具的开发人员,是否需要实时和/或在RSM之外。你能提供一个“破坏”或要求“大量点击事物”的例子吗?我之前已经解决了这个问题,并且已经根据我的需求和约束以多种方式解决了这个问题。
再次提供更多信息我可以提供更好的答案,FOSS引用只让我猜你想要松散耦合/对象可重用/扩展,但真正的RSM示例可能会有所帮助。如果您调整问题并告诉我,我可以更新我的答案。