UML如何有用?

时间:2010-02-23 11:28:56

标签: java uml

  

可能重复:
  Is UML practical?

我在大学做UML,我不明白为什么要这样做。它看起来像是OO数据库的模型,但我想我可以在没有UML的情况下编写Java。

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

10 个答案:

答案 0 :(得分:14)

我们发现UML作为一种交换媒介非常有用,可以在将其提交给代码或可视化现有代码之前,为其他人勾勒出设计的样子。

我们并不特别关注我们的UML与规范匹配,因为我们都没有完全确定我们应该使用哪些小巧的位,并且因为图表通常不会持续很长时间。我想我们可能会使用铅笔绘制更多的UML,而不是使用软件。

实际用途包括尝试确定新类适合现有层次结构的位置,确定层次结构中的内容以重构接口,在开始新功能之前绘制潜在设计以供讨论。

答案 1 :(得分:12)

你可能能够很好地编写java,但UML与语言无关。在将设计传达给同事时,您需要一种共同的“语言”。我认为UML是最好的方法。

我现在正准备与同事讨论api设计,考虑到他提出的一些情况。一些序列图明确地显示了我们如何提出以满足他的需求。他不需要成为java程序员来理解设计。

答案 2 :(得分:3)

编辑此内容以添加另一个观点。 UML用于设计,就像为您的软件创建蓝图一样。一个简单的类比就是在实际构建房屋/建筑之前设计和审查房屋/建筑的架构图。它充当了沟通,思考和挑战设计的媒介。最终确定后,它将成为蓝图 - 然后构建您的软件的参考点。


UML不用于OO数据库设计。它用于模拟软件的不同设计。例如,您将使用Use Case捕获系统边界或actor / users与系统的交互。此设计有助于捕获用户需求。您可以使用静态图来建模类及其关系。您可以使用序列图对交互建模,它在IMHO中非常有用。

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

答案 3 :(得分:3)

不要误以为UML只是类图。用例图是开发人员和管理人员之间的沟通桥梁,序列图允许在视觉上描述精确算法等。

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

  1. 当有人编写应用程序时,它会强制您在开始生成代码之前确定软件如何组合在一起
  2. 当有人加入团队时,它可以让你更快地了解代码库,而不是浏览所有代码。

答案 4 :(得分:2)

UML可用于不同目的:

1)在编写代码之前,您(与您的团队)希望就组件(甚至项目)架构达成一致,以避免误解,这就是为什么您可以绘制类图

2)你想创建用例图并将它放在你经常看到的某个地方,以便记住你的应用程序应该做哪些主要功能(以及你应该集中精力的任务)

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

答案 5 :(得分:1)

为您提供项目的可视化设计

答案 6 :(得分:1)

作为一名程序员,您可能会找到一份工作来为小商店建立一个小型网站。这可能很简单。您可能没有设计文档,没有UML,没有测试,它可能会正常工作。

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

答案 7 :(得分:1)

我在金融领域拥有超过10年的编码经验,C / C ++ / C#经验,而且我曾经使用过UML。 这可能是对我的工作的反思哈哈,但我也从未见过它。设计文档倾向于基于书面描述和/或故事板。
问题似乎在于,当您编写一个准确而全面的UML图表并将其转换为代码时,您也可以编写代码。
有一种观点认为,如果你需要向其他人传达一种设计,那么它就会很有用......但我想你需要知道:

  • 你需要多久做一次这样的设计(大概是从头开始)?没有多少系统如此绿色,需要这样一个完整的设计。
  • 你告诉它的人真的会像你一样充分理解它吗,谁花时间去做它?商界人士不太可能。
  • 流程图/故事板/谈话是否足够?通常更直观,更广泛的受众。
  • 由于竞争/原型需求,商业人士是否希望您在开始实施之前开始实施?这样一个正式的图表是否重要,如果在你完成它的时候,需求变化那么多,你必须重新制作它吗? 我想如果你正在编写真正的软件,例如飞机控制系统,它需要是一个摇滚设计,但我不知道这是不是这种方法。

答案 8 :(得分:1)

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

让我们假设您正在使用其他团队提供的API方法编写代码。如果您有API类的UML图(类图),并且遵守了正确的命名约定,那么您可以轻松地找出可以为特定类提供的所有API方法。例如,如果类图指示要聚合的两个类之间的关系,并且基数是1 .. *,则可以合理地假设容器类可能提供访问组成元素的迭代器。 在本案例中,与通过API文档和找出他想要使用的方法相比,使用API​​类的开发人员可以快速获得API类的高级概述。

答案 9 :(得分:0)

作为开发人员,你几乎不需要制作uml模式,但你必须阅读很多模式。

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

另一方面,没有用例活动图表的规范将更难以阅读并转换为代码。