UML - 如何管理大型类图?

11

为我的项目报告,我需要展示我构建的软件的类图,其中包含约20个类!问题在于,当我使用StarUML、ArgoUMl等渲染类图为JPEG文件时,我们无法正确地查看细节(由于类的数量很多,图片非常大)。那么,如何正确地处理这种情况?因为报告将在A4纸上打印。

谢谢!

8个回答

26

若有20个类,我预期至少有3个子系统(模块、层),可能会更多。

请制作展示它们之间关系的包图,每个子系统都需要一个类图。如果您想要展示特别的内容,请添加相应的类图。每个类图都需要打印成A4大小。

如果不能容易地将图表分割为模块,那么这可能是一个设计上的问题。

将大型图表打印在巨大的纸张上(比如A0上的500个表格)确实很有趣,但实际上并没有太多用处。


7

制作一个包含20个类的类图是毫无意义的-它实际上展示了什么?在使用类图时,我从未创建过超过5-8个类的图。

要问自己的问题是“我试图通过这个图展示什么有用的信息?”不要为了制作类图而制作类图!

将其分解以展示特定的设计模式、子系统或组件是我发现类图有用的地方。


3
另一种方法是不显示所有成员,而只显示主要成员,这样可以减小类的大小,从而减小图表的大小。当然,这需要使用允许选择哪些操作/属性/关系可见的工具,但这种绘图设置是经典的。
也许你的工具还有绘图设置来隐藏某些操作的部分以减小宽度,例如显示或不显示参数、方向、类型等。
Bouml(http://bouml.free.fr)具有所有这些绘图选项,并且如上所述具有PNG和SVG导出功能。
最好的问候和愉快的建模。
Bruno

2

以下是一些解决方法:

  1. 使用更大的纸张
  2. 不要显示方法签名
  3. 不要显示私有方法
  4. 将问题分成更多的包
  5. 每个图表少一些类

试图将UML视为工程图纸的一个问题就在于:一旦你把它从白板上拿下来,它就成了一种不太适合交流的语言。 它不容易阅读。


1

将您的类分成几个图表!创建UML模型时,您可以在多个图表中显示(而不是不显示)诸如类之类的模型元素。图表只是您的UML模型的一个视图,以便您可以在特定的图表中突出显示模块。


1
通常解决这个问题的好方法是为软件的不同模块或功能区域创建不同的图表。或者,您可以在多个页面上打印单个图像,并展示如何将它们组装成完整的图像。

1

使用BOUML。当涉及到“是否有免费的UML软件?”这个问题时,ArgoUML和StarUML是每个人都会提到的经典软件。有趣的是,历史悠久的软件并不意味着它们不为人所知或不被使用。在Argo和Star的情况下,历史系数使它们广为人知且被广泛使用。

BOUML可以导出SVG格式。这将解决您的问题。我在这里描述了这个工具。

由于SVG格式,您将能够快速切换鸟瞰图和详细视图。我用Firefox实现这一点。速度非常快。

附注:我刚刚注意到您想要打印报告。那么SVG可能不是您想要的 :\


-1- 这个问题影响所有的UML工具。我不明白导出到特定的图形格式如何解决它。 - duffymo
不明白这与在A4纸上打印有什么关系。FF又与此有何关联? - duffymo
我曾经尝试将一个有160k行C++代码的项目导入到StarUML中,但它并没有成功。在经过多分钟的密集处理后,它停止响应了。而BoUML只用了1.5分钟就成功导入了同样的项目 :) - anon
抱歉我有些过于热情,但这里是Bouml与Jude的比较:http://bouml.free.fr/benchmark.html#Jude - anon
BouML比PlantUML更好在哪里? - tauseef_CuriousGuy
显示剩余3条评论

1

我认为你试图在一个图表中展示太多东西是固有的问题。你的问题就像是“如何在一句话中使用100个单词而不让读者感到疲倦?”

你可以可能使用FacadePattern进行重构。基本上,它只是将东西分解成模块。例如,Timesheet、PayCheck和BonusRecord可以合并为ManagementSystem。Product和Order可以合并为OperationSystem等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接