components - 如何在 Sparx Enterprise Architect (EA) 中对软件组件进行版本控制?
问题描述
我正在使用 Sparx Enterprise Architect 13 对软件系统进行建模。该系统包含不同版本的软件组件。我们通常在发布软件组件的新版本时添加服务和/或 API。
目前,为了反映组件ServiceV1暴露了接口A,ServiceV2暴露了接口A(与ServiceV1相同)和B,我让ServiceV2扩展了ServiceV1。但这并不简单:
- 组件之间的图表中没有泛化链接,因此我必须使用 Advanced > Parent ...
- 它缺乏灵活性,因为我不能用更新版本的接口覆盖接口 A
有更好的方法吗?维护同一组件的多个版本的标准方法是什么?
谢谢!
解决方案
实际上,没有标准可以为这样的场景建模。充其量你可以有约定——这可能因域而异。但是,这是我将如何建模它:
ServiceV2
有<<trace>>
关系ServiceV1
。UML 2.5.1 在 p 上说。682:
«追踪» | 抽象 | 指定在不同模型中表示相同概念的模型元素或模型元素集之间的跟踪关系。跟踪主要用于跨模型跟踪需求和更改。由于模型的变化可能发生在两个方向上,因此通常可以忽略依赖关系的方向性。映射指定了两者之间的关系,但它很少可计算并且通常是非正式的。
所以这应该意味着在这种情况下,ServiceV2 是使用 ServiceV1 创建的(我以前<<derive>>
在这里使用过,因为它看起来很合乎逻辑。但实际上 UML 语义的定义不同;参见 UML 2.5.1 的第 680 页)。你可以在这里创造你自己的刻板印象并在领域上下文中解释它(例如<<version of>>
)。
您可能会创建 ServiceV1 的副本或手动将其建模为新元素(您不会在大规模场景中这样做,对吗?)。这里我添加了提供的接口,它们都实现了通用接口A
。快速链接器不提供这些关系。您需要使用笨拙的 Ctrl-I 方式,或者从工具箱中获取实现。
不直接提供<<derive>>
依赖项(除非您有自己的 MDG 并在 QL 或工具箱中定义它)。因此,您创建一个依赖项并derive
从构造型菜单中进行选择。
这是一个广泛的领域,版本控制并不像添加编号模式那么简单。无论如何,如果您创建一个新组件,它将有所不同。所以这<<derive>>
可能是这里最好的选择。
推荐阅读
- javascript - 在客户端将视频转换为音频,然后将其上传到后端以减少上传大小
- javascript - 排序 React Admin ArrayInput 和 SimpleForm 迭代器
- kubernetes-helm - Helm store 安装状态在哪里?
- python-3.x - Python 开始多处理而不需要来自进程的打印/记录语句
- flutter - 致命错误:在 Flutter IOS 版本中找不到“GoogleMaps/GoogleMaps.h”文件
- kubernetes - 向 prod eks 集群提供对 IAM 角色的读取访问权限
- amazon-web-services - 如何使用无服务器框架在另一个帐户的 Route53 中注册记录?
- java - 如何使用 Junit 5 测试 Spring Boot 服务 Catch Block?
- azure-ad-b2c - 如何从其他属性填充属性
- flutter - Flutter 建筑布局