如何在 Sparx Enterprise Architect (EA) 中对软件组件进行版本控制?
How can I version software components in Sparx Enterprise Architect (EA)?
我正在使用 Sparx Enterprise Architect 13 对软件系统进行建模。该系统包含不同版本的软件组件。我们通常会在发布软件组件的新版本时添加服务 and/or API。
目前为了反映组件ServiceV1暴露接口A,ServiceV2暴露接口A(同ServiceV1)和B,我让ServiceV2扩展ServiceV1。但这并不简单:
- 泛化 link 在组件之间的图表中不可用,所以我必须使用 Advanced > Parent...
- 它缺乏灵活性,因为我不能用更新版本的接口覆盖接口 A
有更好的方法吗? 维护同一组件的多个版本的标准方法是什么?
谢谢!
我不认为这已被某些标准机构标准化,但我建议引入两个抽象级别:未版本化的组件级别和版本化的组件级别。
- 在未版本化的组件级别,每个组件(不是每个组件版本)在项目存储库中只有一个元素。
- 在版本化组件级别,项目存储库中有一个元素每个组件的每个版本。
每个版本化的组件,例如MyComponentV2 对未版本化的组件具有 > 依赖性,例如我的组件.
为了避免不必要的设计工作,您可以决定只在版本化的组件元素之间绘制不同组件之间的关系,而不是在未版本化的组件元素之间绘制关系,反之亦然。但这取决于您组织的需求。
当您创建组件的新版本时,您复制组件的最新版本 (MyComponentV2) 及其所有连接,包括对未版本化组件 (MyComponent) 的 > 依赖关系,并为其提供正确的名称 (MyComponentV3).
我已经在一个大型项目中应用了这个。
实际上并没有为这种场景建模的标准。充其量您可以有约定——这可能因域而异。然而,我将如何建模:
ServiceV2
与 ServiceV1
有 <<trace>>
关系。 UML 2.5.1 在 p. 上说。 682:
«Trace» | Abstraction | Specifies a trace relationship between model elements or sets of model elements that represent the same concept in different models. Traces are mainly used for tracking requirements and changes across models. As model changes can occur in both directions, the directionality of the dependency can often be ignored. The mapping specifies the relationship between the two, but it is rarely computable and is usually informal.
所以这应该意味着在这种情况下 ServiceV2 是使用 ServiceV1 创建的(我以前在这里使用 <<derive>>
因为它看起来合乎逻辑。但实际上 UML 语义的定义不同;参见 UML 2.5.1 的第 680 页).您可以在这里发明自己的刻板印象并在域上下文中对其进行解释(例如 <<version of>>
)。
您可能会创建 ServiceV1 的副本或将其手动建模为新元素(您不会在大规模场景中这样做,对吗?)。这里我添加了提供的接口,它们都实现了公共接口A
。快速链接器不提供这些关系。您需要采用笨拙的方式 Ctrl-I 或从工具箱中获取实现。
<<derive>>
依赖项不是直接提供的(除非你有自己的 MDG 并在 QL 或工具箱中定义它)。因此,您创建一个依赖项并从构造型菜单中选择 derive
。
这是一个广阔的领域,版本控制不仅仅是添加编号模式那么简单。在任何情况下,如果您创建一个新组件,它都会有所不同。所以 <<derive>>
可能是这里的最佳选择。
EA 支持这一点。请在此处查看“时间感知模型”的文档:
https://sparxsystems.com/enterprise_architect_user_guide/13.0/model_domains/time_aware_models.html
允许维护每个包的单独版本
我正在使用 Sparx Enterprise Architect 13 对软件系统进行建模。该系统包含不同版本的软件组件。我们通常会在发布软件组件的新版本时添加服务 and/or API。
目前为了反映组件ServiceV1暴露接口A,ServiceV2暴露接口A(同ServiceV1)和B,我让ServiceV2扩展ServiceV1。但这并不简单:
- 泛化 link 在组件之间的图表中不可用,所以我必须使用 Advanced > Parent...
- 它缺乏灵活性,因为我不能用更新版本的接口覆盖接口 A
有更好的方法吗? 维护同一组件的多个版本的标准方法是什么?
谢谢!
我不认为这已被某些标准机构标准化,但我建议引入两个抽象级别:未版本化的组件级别和版本化的组件级别。
- 在未版本化的组件级别,每个组件(不是每个组件版本)在项目存储库中只有一个元素。
- 在版本化组件级别,项目存储库中有一个元素每个组件的每个版本。
每个版本化的组件,例如MyComponentV2 对未版本化的组件具有
为了避免不必要的设计工作,您可以决定只在版本化的组件元素之间绘制不同组件之间的关系,而不是在未版本化的组件元素之间绘制关系,反之亦然。但这取决于您组织的需求。
当您创建组件的新版本时,您复制组件的最新版本 (MyComponentV2) 及其所有连接,包括对未版本化组件 (MyComponent) 的
我已经在一个大型项目中应用了这个。
实际上并没有为这种场景建模的标准。充其量您可以有约定——这可能因域而异。然而,我将如何建模:
ServiceV2
与 ServiceV1
有 <<trace>>
关系。 UML 2.5.1 在 p. 上说。 682:
«Trace» | Abstraction | Specifies a trace relationship between model elements or sets of model elements that represent the same concept in different models. Traces are mainly used for tracking requirements and changes across models. As model changes can occur in both directions, the directionality of the dependency can often be ignored. The mapping specifies the relationship between the two, but it is rarely computable and is usually informal.
所以这应该意味着在这种情况下 ServiceV2 是使用 ServiceV1 创建的(我以前在这里使用 <<derive>>
因为它看起来合乎逻辑。但实际上 UML 语义的定义不同;参见 UML 2.5.1 的第 680 页).您可以在这里发明自己的刻板印象并在域上下文中对其进行解释(例如 <<version of>>
)。
您可能会创建 ServiceV1 的副本或将其手动建模为新元素(您不会在大规模场景中这样做,对吗?)。这里我添加了提供的接口,它们都实现了公共接口A
。快速链接器不提供这些关系。您需要采用笨拙的方式 Ctrl-I 或从工具箱中获取实现。
<<derive>>
依赖项不是直接提供的(除非你有自己的 MDG 并在 QL 或工具箱中定义它)。因此,您创建一个依赖项并从构造型菜单中选择 derive
。
这是一个广阔的领域,版本控制不仅仅是添加编号模式那么简单。在任何情况下,如果您创建一个新组件,它都会有所不同。所以 <<derive>>
可能是这里的最佳选择。
EA 支持这一点。请在此处查看“时间感知模型”的文档:
https://sparxsystems.com/enterprise_architect_user_guide/13.0/model_domains/time_aware_models.html
允许维护每个包的单独版本