UML类图概念与规范与实现
我目前正在读马丁·福勒的著作。我刚刚介绍了类图的部分,在那里,他非常强调在建模类图之前整理自己的观点的必要性。然而,当我实际绘制类图时,我对它的实际外观有点困惑。例如,我理解,理论含义会从一个角度到下一个角度改变关联的含义 我想我的主要问题是,例如,如果我像他在书中那样对一个简单的排序系统建模,类图从一个角度到另一个角度会看起来不同,并且包含不同数量的符号吗。例如,从概念的角度来看,我只会显示类和一些模糊的关联及其多样性,然后在规范角度建模时,包括导航性和基本类操作和字段UML类图概念与规范与实现,uml,diagrams,Uml,Diagrams,我目前正在读马丁·福勒的著作。我刚刚介绍了类图的部分,在那里,他非常强调在建模类图之前整理自己的观点的必要性。然而,当我实际绘制类图时,我对它的实际外观有点困惑。例如,我理解,理论含义会从一个角度到下一个角度改变关联的含义 我想我的主要问题是,例如,如果我像他在书中那样对一个简单的排序系统建模,类图从一个角度到另一个角度会看起来不同,并且包含不同数量的符号吗。例如,从概念的角度来看,我只会显示类和一些模糊的关联及其多样性,然后在规范角度建模时,包括导航性和基本类操作和字段 我真的很想在这方面得到
我真的很想在这方面得到一些指导,因为我真的很想更好地掌握这一主题 好问题。以下是我自己的一些体会;不能说马丁是否会同意,但希望还是有用的 总而言之:主要区别在于关系的形式和设计选择 我发现以下几点很有用:
- 基本结构:大致映射到Fowler的UML作为草图,并在白板上交互完成。主要目的是了解整体结构。非常随便。特别是,关注关系只是为了识别它们,而不是形式化——因此没有基数、删除行为、容器类的选择等等
- 域模型。一个精确的模型,专注于关系的形式化。具体来说,命名关联结束,定义基数并确认删除行为。不考虑导航性或选择容器类别的基数>1。我所知道的学习问题领域的最好技巧之一
PS:如果你想要一个更好的基于动词的命名的例子,我有一个。请不要认为这是自我推销,只是在这里重复没有意义。马丁·福勒(Martin fowler)的书对我来说是垃圾(例如我的个人感觉),只要他开始谈论类图!!我同意其他的图表,但是类图应该更加实用,而不仅仅是高级设计 你需要在更高的抽象层次上建模,然后对你真正需要的东西建模,这总是同一个理论。 我更喜欢快速提供一个运行的代码并向客户展示。从第一个阶段开始,我们开始建模,以获得功能需求和代码。一旦我们完成了第二阶段,我们将再次向客户展示它,并再次提供UML类图来更改需要做的事情。经过10次迭代之后,我的项目通常完成了。
例如,我的项目持续3到6个月。这是一个非常复杂的项目,我的客户通常都很满意。使用Martin fowler的建议,我的项目在12-18个月内不会完成,客户肯定会失望。确切地说,UML类图只是一种符号,您可以(也应该)根据您所处的软件开发阶段而有所不同。您可以仅从类、属性和关联开始,然后优化图表以添加属性的类型信息,然后是导航、类方法、关联的限定符。。。直到为实现阶段准备好完整的类图
请注意,您甚至可以迭代到删除关联并用复杂类型的属性替换它们的点,以获得与最终实现更相似的类图。如何在每个阶段使用类图取决于您。下面是我如何向开发人员解释这些想法的
- 概念是关系。这是应该发生耦合的级别。你不应该看到从概念到实现的耦合——这是一个糟糕设计的信号
- 规范定义了算法,但没有定义实现。在类图中,这可能表示为一个抽象类。Alan Shalloway将属于这个领域的方法称为“中士方法”:它们只是发出命令
- 实现是实际工作发生的地方。这可能由实现抽象规范的具体类表示
UML标签中所做的努力
您真是太棒了,我希望您继续在您的博客中撰写有关UML和相关主题的文章。我希望我也能这样做,但我仍然是2002年John Daniels在Martin Fowler网站上发表的IEEE文章的初学者。本文描述了概念模型、规范模型和实现模型之间的有用区别。