2010-02-23 35 views
10

可能重复:
Is UML practical?UML如何有用?

我做UML在我的大学,我不明白为什么我们必须这样做。它看起来像面向对象数据库的模型,但我认为我可以在没有UML的情况下编写Java。

我想知道为什么UML是在专业领域中使用的技术原因;为什么它很重要。不只是学习它,因为教授这样说。

+0

你有没有问教授? – 2010-02-23 12:16:31

回答

12

您可以java写的非常好,但UML是语言无关。将设计传达给同事时,您需要共同的“语言”。我认为,UML是最好的方式。

我现在准备会议与同事讨论给出了一些场景,他想出了API设计。一些序列图明确地显示了我们如何提出满足他的需求。他不需要成为一名Java程序员来理解设计。

+4

我想我明白你的意思。如果你允许比较,它就像程序员的一个幻灯片,对吧? – loriser 2010-02-23 11:38:16

+0

用于该比较的+1 :-) – 2010-02-23 11:51:50

+0

不,这是用于通信的实际语言。我在大学学习了设计模式(和一些Java)。一旦我开始第一份工作(.NET),我发现我有一种可以与同事沟通的共同语言。如果不能描绘UML并谈论面向对象的设计抽象(如果没有UML,那么你不能真正描述它),我不可能像我那样快速地开始。这是重要的东西。 – Joe 2010-02-23 11:52:22

14

我们发现,UML是作为交换媒介有用,勾画出了其他什么人设计看起来就像是犯它的代码之前或可视化什么现有的代码看起来像。

我们并不特别关心符合规范的UML,因为我们都不能完全确定我们应该使用哪些位,并且因为这些图通常不会持续很长时间。我想说,我们可能使用铅笔比使用软件绘制更多的UML。

实际用途包括试图敲定一个新类适合现有的层级,工作了,事情是在层次结构重构的接口,开始新功能之前,素描讨论潜在的设计。

+0

你能解释更多吗? – loriser 2010-02-23 11:34:59

+0

非常感谢所有人,我现在明白了什么意思。我们不会分组编程,所以我不理解。我喜欢函数说明等其他内容,但是uml似乎毫无用处。 – loriser 2010-02-23 11:47:22

1

给你的项目

2

UML可以用于不同目的的视觉设计:

1)给你写的代码(与你的团队)之前要来有关组件的协议(甚至项目)架构,以避免误解,这就是为什么你可以绘制类图

2)你想创建用例图,并把它放在某些你经常会记住的地方,以记住你的应用程序要做哪些主要功能(以及哪些你应该集中更多的任务)

3)类图可以作为项目宏架构的文档。如果您想要邀请新开发人员加入您的项目,那么拥有这样的类图非常重要。

1

作为一名程序员,您可能会得到一份工作,为一家小商店构建一个小型网站。这可能很简单。你可能没有设计文档,没有UML,没有测试,它可能工作得很好。

但是,您可能会找到一份工作来开展空中交通管制系统,汽车的防抱死制动系统或全球最大银行之一的交易系统。在这种情况下,你不会自己编写代码。你必须说服其他人说你的代码确实会做正确的事 - 不仅仅是你的同事,还有独立的审计人员。为了帮助他们快速理解代码,他们需要一些图表。有什么比标准符号更好的帮助他们获得你的代码的图片? (当然,你也需要你的设计文档和测试!)

3

编辑这个来添加另一点。 UML用于设计,就像为您的软件创建蓝图一样。一个简单的比喻就像在实际构建房屋/建筑之前设计和审查房屋/建筑的体系结构图。它作为沟通,思考和挑战设计的媒介。最终完成后,它将成为构建软件的蓝图 - 参考点。


UML不用于OO数据库设计。它用于模拟软件的不同设计。例如,您将使用用例来捕获系统边界或角色/用户与系统的交互。这种设计有助于捕捉用户需求。您可以使用静态图来对课程及其关系进行建模。你可以使用序列图建模交互,这在IMHO中非常有用。

好的,现在回到回答你的具体问题。如果您正在从事小型作业和单人项目,那么您可以争辩说UML不会增加太多价值。在现实生活中,您拥有更大的团队和不同的角色(架构师,设计师,BA,开发人员等),UML用于以一致和标准的方式捕获和交流架构,需求和设计信息。例如,我可以根据设计师提供的需求信息和用例图设计一个银行模型,我将转化为类图的技术设计,并使用序列图捕获它们的交互和消息流,然后传递给其他4位成员我的团队去实现这一点。

1

我有超过10年的经验,在编码,金融行业的C/C++/C#方面经验丰富,而且我从未曾经使用过UML。
这可能是我的工作的一个反映哈哈,但我从来没有见过它在使用。设计文件倾向于基于书面描述和/或故事板。
问题的关键似乎是,当你编写了一个准确而全面的UML图表并将其转换为代码时,你可能已经编写了代码。
有争论,如果你需要传达设计给别人也可以是有用的...但我猜你需要知道:

  • 你需要多久做这样的设计(从头开始假设)?没有多少系统是如此绿色环保以至于需要如此全面的设计。
  • 你会告诉它的人如何充分了解它,你已经花时间做出来了吗?商务人士不太可能。
  • 会流程图/故事板/说话足够吗?通常更直观并且可以吸引更多的观众。
  • 商业人士是否希望您在开始实施之前就可以根据竞争/原型需求正确完成它?如果你已经完成了这项工作,需求变化如此之大,你必须重新制作它,这样的形式图会变得很重要吗?

    我想如果你正在编写真正的软件,例如飞机控制系统,它需要是摇滚设计,但我不知道这是否是方法。
0

作为开发人员,您几乎不必制作uml架构,但是您必须阅读其中的很多架构。

图很酷,但总是过时,所以不是很重要。

在另一方面,没有用例活性图说明的是一大堆更难阅读并转换成代码。

1

我发现UML的一个优点是它可以帮助人们以平台不可知的方式传达设计和意图。

让我们说你正在使用其他团队提供的API方法编写代码。如果您有一个API类的UML图(类图),并且遵守了适当的命名约定,那么您可以轻松找出您希望可用于特定类的所有API方法。例如,如果类图指示要聚合的两个类之间的关系,并且基数为1 .. *您可以合理地假定容器类可能提供迭代器以访问组成元素。 在目前的情况下,使用API​​类的开发人员可以快速获取API类的高级概览,而不是通过API文档并找出他想使用的方法。

3

不要犯思想错误UML只是类图。用例图是开发者和管理者之间的沟通桥梁,序列图允许在视觉上所描述的精确算法等

使用这些结合在一起,UML做了两两件事:

  1. 正如有人编写的应用程序它迫使你想出你的软件如何配合在一起之前你开始拨出代码
  2. 作为有人加入团队,它可以让你更快速地浏览代码库,而不是通过所有代码拖网。
+0

我明白了。我喜欢第2点。 – loriser 2010-02-23 11:57:53