必须使用什么UML元素在类图上显示JPMS模块?

时间:2018-01-15 07:54:30

标签: java uml java-9 java-module

我试图在我的UML类图上显示两个JPMS模块,其中包含包和类。问题是我无法理解用于显示模块的元素。请帮忙。

3 个答案:

答案 0 :(得分:2)

在UML中

组件

套餐:请参阅reference 1

  

包是一个名称空间,用于将元素组合在一起   语义相关,可能会一起改变。这是一般的   用于将元素组织成组以提供更好的目的机制   系统模型结构

并在reference 2中:

  

几乎所有UML元素都可以分组到包中。从而,   类,对象,用例,组件,节点,节点实例等   都可以组织成包,从而实现可管理   组织真实世界UML模型的无数元素   需要。

组件:请参阅reference 3

  

组件是表示系统的模块化部分的类   封装内容,其表现形式可在其内部替代   环境。

     

组件的行为是根据提供的接口定义的   和必需的接口(可能通过端口公开)。

     

组件将作为类型提供,其一致性由这些定义   提供和必需的接口(包括它们的静态作为   以及动态语义)。因此可以替代一种组分   只有当两者符合类型时,才由另一个人使用。


在Java 9中:

参考:书: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类模型来表示它。