UML的命名约定

时间:2012-12-14 23:41:15

标签: uml naming-conventions

UML是否有任何名称约定?

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

4 个答案:

答案 0 :(得分:3)

UML标准未指定任何命名约定。您选择的命名标准取决于UML模型的目标受众。这个受众再次取决于您的模型的目的。如果您打算例如从您的模型生成代码,而不是需要具有适合您的目标平台的结果。我自己的经验是,如果您希望在更改目标平台后保留模型,或者您打算为多个目标平台生成代码,那么选择独立于平台的命名会很有帮助。例如。如果您打算为Restful服务创建Java代码,SQL数据库的DDL语句和XSD架构定义,那么您需要三个不同的目标,而这些目标需要所有三个目标的通用语言。一个好的方法是恕我直言,使用平台无关的类型系统,如CORBA IDL,XSD类型甚至ISO类型。您还可以使用自然语言类型描述,如“日期”,“时间”,“数字”,“货币”。对于域特定内容的名称,您可以使用映射。例如。如果您将“客户联系人”类和操作“呼叫客户”命名为“客户姓名”属性,则映射将允许创建例如 Customer_Contact作为Java类名称“callCustomer”作为操作名称,“customersName”作为属性Name。

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

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

答案 1 :(得分:2)

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

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

  • bittorrent
  • libcurl
  • 的libusb
  • libgit
  • libexpect
  • xmpp
  • 测试任何协议(点按)
  • IRC
  • 的webdriver
  • 管家
  • 的WebSocket
  • 分布式缓存
  • 扬鞭
  • XDG

答案 2 :(得分:1)

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

答案 3 :(得分:0)

正如Wolfgang Fahl所说,UML没有指定任何命名约定。但是,几个月前,我们发布了一组UML命名指南,这些指南是独立于平台且以域为中心的。即使这个答案有点太晚了,你(和其他人)可能会发现它们非常有用:http://dx.doi.org/10.1016/j.datak.2013.09.001http://mpi.upc.edu/gmc-en/methods-best-practices-and-profiles/naming-guidelines-for-uml-ocl