你使用什么样的UML图?

时间:2009-04-13 10:06:33

标签: uml diagrams

UML2提供不同类型的图表。 到目前为止,我只使用了类图。

您使用什么样的UML图? 您为设计推荐了哪些图表?软件项目的文档?

20 个答案:

答案 0 :(得分:29)

我更频繁地使用以下图表:

  1. class diagrams :  解释阶级关系
  2. Sequence Diagrams :  捕获对象交互
  3. Activity diagrams :  解释活动(算法流程)。
  4. 编辑:根据来自@ Smith325的评论添加了链接。

答案 1 :(得分:7)

我没有使用。

自从大学时代和我的毕业证书项目以来,我几乎没见过他们。

有一种印象主要是学生/教授对这些方法感兴趣,没有UML,实践世界幸福地生活。

虽然我并不是说UML不会带来任何好处。

答案 2 :(得分:6)

序列图是我的主要类型,实际上很少使用其他任何东西。

Online tool

答案 3 :(得分:5)

或许最好问一下使用UML会带来什么实际好处?

  • UML无法提供理解图表和吐出模板化代码的工具。
  • 非技术用户并不真正了解UML。
  • 序列图是否真正捕获了所有程序流程?
  • 类图 - 大多数人最终都会使用sphaghetti - 因为他们试图过多地使用sphaghetti。
  • 用例图 - 通常过于简单,它们毫无价值。
  • RUP - 对此越少越好..

任何图表机制以及清晰的叙述都可以用来传达任何想法。只要把它弄清楚,清晰和合乎逻辑,它应该有助于自我解释。

答案 4 :(得分:3)

我使用状态转换图来模拟特定应用程序的不同状态的复杂性。

答案 5 :(得分:2)

  • 用例图:捕获行为要求
  • 序列图:捕获对象交互

很少或根本不使用其他任何东西

答案 6 :(得分:2)

在大多数项目中,域模型是必不可少的。它为技术人员提供了对领域词汇的一致,清晰和明确的理解。 UML类图是最好的符号(是的,甚至比英语词汇表更好)。

用例模型(该模型,而不是图表)比十几个Word文档(取决于您选择的UML工具)更容易操作,因此我建议您遵循UML路线来记录您的用例。您的UML工具几乎肯定会允许您为用例分配其他信息,例如测试脚本,指标等。在模型中使用此工具可以创建有关此额外信息的自定义报告。

除此之外,我要说如果你需要状态图,请使用UML状态图;如果需要流程图,请使用UML活动图;如果需要调用图,请使用UML序列图。在每种情况下,UML符号将比您自己发明的任何特殊符号更广泛地理解。

但一般的信息是,使用你手头的任何工具来使你的工作更轻松。

答案 7 :(得分:2)

用例图没有提供任何细节,但我没有看到更好的方法来快速概述系统中的所有用例。

类图对于显示属于每个包的类非常有用。但是,我很少看到其他开发人员将它们用于此目的。它们通常用于在图片上抛出一堆类,几乎没有押韵和理由,为什么每个图片中都有特定的类。因此,图表最终没有用处。

序列图是必不可少的。这些工具绝对不支持序列图的有用用法,因此您必须在工具的限制范围内有所创新。但我使用序列图来证明我的用例符合我的架构,我的设计与我的包操作相匹配......我认为没有更有用的图表。但是,大多数人不使用它们,可能是因为它迫使你去思考你的设计。

组件图的概念很有用。 UML版本非常难看,所以我通常最终使用Powerpoint或Visio绘制自己的图表。

我不太喜欢州或活动图。在我的职业生涯早期,我对其他人的状态机设计有一些不好的经历,因此像瘟疫一样避免它们。

当谈到向客户/经理提交时,我会使用这些图表中的信息,但我把它放在一个更易于理解和更高层次的格式中。

但是,为了向其他软件开发人员展示,这些图表应足以通过设计传达所需的信息。但是,通常它们确实需要编写一些叙述性文本才能有价值。

答案 8 :(得分:1)

我将对用例图进行投票,因为这些是用户/客户实际可以理解并找到与其需求相关的唯一UML图类型。

答案 9 :(得分:1)

我从来没有使用任何形式的UML来传达技术思想。为此,我发现它是一种非常无用的媒介。自从使用洞穴壁画在个人之间传达思想以来,我们已经走了很长的路。几千年来,人类一直在使用实际的语言,其复杂性,细微差别和口才,清晰明确地传达各种概念。作为一个物种,我们做出了重要的转变,从模糊的想法图形表示到明确的语言,这是一个很好的理由:清晰度。

我见过的唯一一个非常有活力的UML的人是非技术人员(通常是业务分析师和项目经理),他们错误地给人的印象是他们正在进行一些精确的问题解决,事实上,他们只是制作高度模糊的绘画,往往意味着与他们所受的各种观众截然不同和相互冲突。我见过最终用户,开发人员,DBA,业务分析师和项目经理都坐在同一组图表中,在明显的理解和和谐中相互点头,后来他们才意识到他们每个人都有不同的理解实际问题是什么,以及需要建立什么来解决它。

在过去的二十年里,我会坚持为我和最终用户提供超过四十个系统的功能:

1)用简单的英语编写明确的问题定义文档(补充有与适当时要解决的离散问题相关的简单表格和图表)。

2)在定义问题之后,编写一个单独的技术规范(也是英文版),用实际最终用户可以理解的方式描述针对该明确定义的问题的建议解决方案。

3)最后,编写满足问题定义和步骤1和2中产生的建议技术规范的解决方案。如上所述,在适当的情况下调整解决方案以满足现实(步骤2和3经常重叠,一个进入另一个)。

我为那些诚实地认为他们可以跳过上面的第1步(问题定义)*的人感到遗憾,并且不知何故神奇地跳到第2步,试图描述一个解决了一个难以理解和糟糕的问题的解决方案,使他们复杂化使用像UML这样笨拙的媒介的困难本质上是模棱两可的,并且在该过程的各方之间受到广泛的误解。这就是疯狂。

  • 更糟糕的是,当你向非技术性UML布道者指出他们在尝试描述建议的解决方案之前没有定义问题时,他们通常会指出你的“用例”和图表都很少他们喜欢称之为“演员”,并且完全没有意识到他们所产生的那些方面充其量只是对一种可能解决方案的不完整描述,并且不以任何方式代表问题的抽象定义。例如,用例“Bob按下加速踏板,汽车行驶得更快”是潜在解决方案(汽车)的部分描述,这本身只是一种可能的解决方案(也许,不是最相关的解决方案) )'鲍勃需要从A到B'的实际潜在问题。如果你也知道鲍勃1)不能驾驶,2)无论如何都生活在船上 - 事实上只有实际问题的完整定义会告诉你 - 关于踏板的用例开始看起来非常无关紧要,没有是吗?

答案 10 :(得分:1)

我的个人投票: 用例图 序列图 类图

偶尔补充活动图。

但我觉得里程不一。我通常在具有大量用例的系统上工作,其中一些是通过集成商业解决方案和编写一些代码来实现的。因此对我来说,用例通常是UML中最相关的部分,偶尔会有组件图。

Sequence和Class一直是软件设计的事实图,但我看到它们的使用非常糟糕。很容易陷入这样设计饼干切割图的模式,而不是真正钻进一个图表,显示系统真正关键的设计方面。

我喜欢UML,因为它能够以一致的方式提供清晰,标准化的语法来解释设计问题。但我讨厌有时它被认为是一个开发“标准”,而不仅仅是一个工作的工具。我说如果它们有助于启发一个关键的人群并完全跳过它们,如果它们现在有助于做出技术决定,那么就使用它们。

答案 11 :(得分:1)

我不喜欢用例图。该图并没有真正显示出来,我发现一个带有描述的弹出列表更有用,如果没有完整的用例描述,包括场景,失败条件等。

类图很有用,但我从未真正将所有细节都放入其中。获取域对象之间的联系以及所有内容如何组合起来似乎比通过并填写行为和字段更有用。

序列图非常棒,如果你想弄清楚某些事情的流程变得有点过于复杂,而你却无法直观地看到正在发生的事情。

类图,序列图和状态图也非常适合尝试找出现有代码正在做什么。

我不担心图表中的手续;它们是白板上粗糙的草图。

答案 12 :(得分:1)

它们都可以用于项目的设计和文档编制。这是非常开放的解释。

这取决于项目以及您为谁创建文档。在某些情况下,UML几乎没用,但可以帮助您构建一个最终用户可以理解的更简单的非UML图。

在其他时候,当您只是为其他软件开发人员编写文档时,UML图表可能很有用。在这种情况下,状态转换图可能对系统开发人员有用,而用例图可能更适合分析人员记录需求。

总体而言,使用UML对其他程序员,用户或客户没有帮助。它只是一种沟通工具。如果您对UML的使用过于虔诚,则无法满足任何这些组的需求。

答案 13 :(得分:0)

我在灵活的环境中工作,所以我写的大部分UML都是白板上的短暂绘图。

我使用类图来说明类如何相互关联。我使用活动图而不是传统的流程​​图来解释一般程序流程。 状态机图可用于解释对象生命周期中的状态更改。偶尔,我会使用序列图来处理一些纠结的程序逻辑,尽管我经常会重构代码以获得理解。

答案 14 :(得分:0)

问问自己我的用户了解了什么,我是否真的能够并且致力于保持我的图表的最新和准确,或者它们会腐烂并增加混乱......

答案 15 :(得分:0)

问问自己.Net或Java是否在任何地方提供UML作为其文档包的一部分?

答案 16 :(得分:0)

我只使用用例图和部署图,因为我发现它们分别用于解释功能和部署设置。

答案 17 :(得分:0)

我经常使用类图来记录最重要的类之间的高级设计和关系。我经常使用状态转换图,但没有使用UML样式。我很少使用序列图,发现它们难以阅读(和写入)。

答案 18 :(得分:0)

序列图,帮助我在试图弄清别人的代码时跟踪事情。

答案 19 :(得分:0)

我经常在对系统进行建模时使用某种部署图(但是,我也倾向于在我的图表中使用非UML的东西)