我试图在我的UML类图上显示两个JPMS模块,其中包含包和类。问题是我无法理解用于显示模块的元素。请帮忙。
答案 0 :(得分:2)
有包和组件。
套餐:请参阅reference 1
包是一个名称空间,用于将元素组合在一起 语义相关,可能会一起改变。这是一般的 用于将元素组织成组以提供更好的目的机制 系统模型的结构。
并在reference 2中:
几乎所有UML元素都可以分组到包中。从而, 类,对象,用例,组件,节点,节点实例等 都可以组织成包,从而实现可管理 组织真实世界UML模型的无数元素 需要。
组件:请参阅reference 3
组件是表示系统的模块化部分的类 封装内容,其表现形式可在其内部替代 环境。
组件的行为是根据提供的接口定义的 和必需的接口(可能通过端口公开)。
组件将作为类型提供,其一致性由这些定义 提供和必需的接口(包括它们的静态作为 以及动态语义)。因此可以替代一种组分 只有当两者符合类型时,才由另一个人使用。
参考:书:Java 9 Modularity Revealed,Alexandru Jecan,2017,第5页
模块的特征:
模块的一些特征包括以下内容:
- 模块必须为其他模块定义通信的接口。
- 模块定义模块接口与模块实现之间的分隔。
- 模块应提供包含信息的属性集。
- 两个或多个模块可以嵌套在一起。
- 模块应该有明确的,明确的责任。每个功能只能由一个模块实现。
- 模块必须能够独立于其他模块进行测试。
- 模块中的错误不应传播到其他模块。
因此:
Java 9 JPMS模块应该由UML组件显示。我们不能使用UML包来建模Java 9模块。 UML包用于建模Java包。众所周知,Java 9软件包和模块之间存在巨大差异。
答案 1 :(得分:1)
这取决于您希望如何设计系统。当您将JMPS模块视为具有已定义接口的闭合元素时,组件是正确的模型元素。即,您应用封装原则。如果您将它们视为容器,只包含一些元素,并且您希望直接使用这些内部元素,那么包是正确的元素。
答案 2 :(得分:0)
我认为你必须使用一个软件包来代表JPMS模块,或者用“JPMS模块”对其进行刻板印象,或者添加更多含义。它听起来不像JPMS模块是一个类或接口等。所以我不认为你可以使用任何其他UML类模型来表示它。