UML的命名约定

UML的命名约定,uml,naming-conventions,Uml,Naming Conventions,UML有任何名称约定吗 我很想知道如何命名类、包和方法。但是,如果有一些文档指定了每个UML图的所有命名约定,请共享。您的UML命名约定应该基于您正在编程的语言的命名约定。您正在描述实际的类、包和方法,因此使用您将要或已经在代码中使用的相同名称。UML标准没有指定任何命名约定。您选择的命名标准取决于UML模型的目标受众。这一受众同样取决于模型的目的。例如,如果您打算从您的模型生成代码,则需要得到适合您的目标平台的结果。我自己的经验是,如果您希望在更改目标平台后仍保留模型,或者如果您打算为多个目标

UML有任何名称约定吗


我很想知道如何命名类、包和方法。但是,如果有一些文档指定了每个UML图的所有命名约定,请共享。

您的UML命名约定应该基于您正在编程的语言的命名约定。您正在描述实际的类、包和方法,因此使用您将要或已经在代码中使用的相同名称。

UML标准没有指定任何命名约定。您选择的命名标准取决于UML模型的目标受众。这一受众同样取决于模型的目的。例如,如果您打算从您的模型生成代码,则需要得到适合您的目标平台的结果。我自己的经验是,如果您希望在更改目标平台后仍保留模型,或者如果您打算为多个目标平台生成代码,那么选择与平台无关的命名是很有帮助的。例如,如果您打算为SQL数据库创建Java代码、DDL语句,并为Restful服务创建XSD模式定义,那么您有三个不同的目标,在这三个目标中,您都需要一种通用语言。一个好的方法是使用独立于平台的类型系统,如CORBA IDL、XSD类型甚至ISO类型。您还可以使用自然语言类型描述,如“日期”、“时间”、“数字”、“货币”。对于特定于域的内容的名称,可以使用映射。例如,如果您将一个类命名为“Customer Contact”,操作命名为“Call Customer”,属性命名为“Customer’s name”,则映射将允许创建。 Customer\u Contact作为Java类名,“callCustomer”作为操作名,“customersName”作为属性名

是否可以应用映射取决于所使用的工具链。如果不能使用映射,则必须确定目标平台的最小公分母。如果没有,您将不得不决定在哪里不遵循命名约定是最省力的


最重要的是IMHO是否严格遵循和系统化(甚至可能是自动的)将模型元素映射到其他工件的规则或者该模型是否用于说明目的,映射规则是否仅由使用大脑的人员应用。

根据不同的实现目标使用不同的命名约定。以下是一些:

用多种语言实现的协议也是很好的例子:

  • 比特流
  • libcurl
  • libusb
  • 利比特
  • libexpect
  • xmpp
  • 测试协议(tap)
  • irc
  • 网络驱动程序
  • 少校
  • 网袋
  • memcached
  • 昂首阔步
  • XDG

正如Wolfgang Fahl所述,UML没有指定任何命名约定。然而,几个月前,我们发布了一套独立于平台且以领域为中心的UML命名指南。尽管这个答案来得有点晚,但您(和其他人)可能会发现它们非常有用:

这适用于应用程序模型,而不是域模型,对吗?如果你正在为一个域建模,我建议你使用适合该域的命名约定。不过这是我的第一次。但是我不能同意,因为你可以在不知道你将使用什么语言的情况下使用UML来设计一个高级架构……你的第一个链接列出了35.95美元的PDF。这是您的出版物唯一可用的选项吗?您可以查看第二个链接,其中也包含我提到的命名准则。