【问题标题】:Java Server Pages (.JSP) files in UML Class DiagramsUML 类图中的 Java 服务器页面 (.JSP) 文件
【发布时间】:2015-01-04 10:08:20
【问题描述】:

我正在为我即将着手的项目编写设计,我想知道我应该如何在我创建的 UML 类图中表示视图(jsp 文件)。由于 jsp 文件不是类,它们适合这里吗?我认为不是,因为这是一个类图,但我不确定我应该如何表示这些,有什么想法吗?

【问题讨论】:

  • 在运行 webapp 时,所有的 JSP 页面都会被编译为 HttpServlet 子类。
  • 我见过以包图表示的 JSP 页面。

标签: java jsp uml


【解决方案1】:

JSP 文件被认为是视图文件,它们不是实际的函数/方法。因此,它们应该包含在 UML 类图中。

【讨论】:

  • 如何在这些图中表示视图?
  • 视图将是实体之一,表单将是另一个,url 将是另一个,模型将是另一个,等等。
【解决方案2】:

我很抱歉,但从纯粹的 UML 角度来看,我并不完全同意其他答案。从这个角度来看,jsp 文件是 Artifact 的一个示例,它是一种类。 jsp 文件的实例是一个对象,它与 Servlet 具有特定的“清单”关系(此处借用 bdulac 的回答;我不是 Java Web 方面的专家)。

来自 UML 规范(Superstructure v2.0,第 193 页):

10.3.1 工件(来自工件、节点)

工件是由软件开发过程或系统的部署和操作使用或产生的物理信息的规范。工件的示例包括模型文件、源文件、脚本和二进制可执行文件、数据库系统中的表、开发交付物或文字处理文档、邮件消息。

再往下:

在元模型中,工件是表示物理实体的分类器。工件可能具有表示工件特征的属性,以及可以在其实例上执行的操作。工件可以参与到其他工件的关联中(例如,组合关联)。工件可以被实例化以表示详细的复制语义,其中同一工件的不同实例可以部署到不同的节点实例(并且每个实例可能具有单独的属性值,例如,对于“时间戳”属性)。

还有:

用户定义的工件代表物理世界中的具体元素。工件的特定实例(或“副本”)部署到节点实例。工件可能具有与嵌套在其中的其他工件的组合关联。例如,组件的部署描述符工件可能包含在实现该组件的工件中。这样,组件及其描述符就会作为一个工件实例部署到节点实例。

预计特定配置文件将构造工件以建模文件集(例如,以文件系统上的“文件扩展名”为特征)。 UML 标准配置文件定义了几个适用于工件的标准原型,例如,«source» 或 «executable»(参见附录 C - 标准原型)。这些刻板印象可以进一步专门化为配置文件中的实现和平台特定的刻板印象。例如,EJB 配置文件可能将 «jar» 定义为可执行 Java 档案的 «executable» 的子类。

而且,JavaWeb 配置文件可能将 «jsp» 定义为扩展 «file» 的构造型。

最后:

与以前的 UML 的变化

已对 UML 1.x 进行了以下更改:工件现在可以显示任何 PackageableElement(不仅仅是组件,如 UML 1.x 中那样)。

虽然工件通常会显示一个组件,但没有理由说它不能显示一个类(它也是“一个”PackageableElement)。这就是为什么他们删除了工件只能显示组件的约束。因此,纯粹从 UML 的角度来看,jsp 文件是一个类,因此可以是类图的一部分。

这样做是否有意义是另一个问题,但不经调查就不能忽视。

【讨论】:

    【解决方案3】:

    一切都取决于您使用 UML 的上下文。

    UML distilled 中,Martin Fowler 区分了三种使用 UML 的方式:

    • 蓝图(UML 用于软件开发过程)
    • 草图(UML 用于系统的细节)
    • 可执行 UML(UML 的使用,其中 UML 是程序的持久源,在代码之前)

    出于逻辑原因,大多数软件开发过程(蓝图模式)不允许您在类图中包含视图组件:UML 大约是 OOP。在可执行 UML 中也是如此,换句话说,这就是 user1556242 所说的。

    在蓝图或可执行 UML 模式中,允许在其上表示视图组件的唯一 UML 图是 the component diagramthe deployment diagram:这些图不显示特定于对象的功能。

    但是,如果您处于草图模式,这是您在图表中包含 JSP 页面的合法权利,但这不应该是视图组件表单。在类图中,您应该表示类。您不应该代表 JSP 页面本身,而是代表它的对象形式。 JSP 在运行时被翻译成一个 servlet 类(参见Wikipedia article),在 Tomcat 中这是通过Jasper 完成的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-02
      • 2021-10-18
      • 1970-01-01
      • 2012-05-31
      • 2018-10-20
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多