电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

绘制整洁的UML图 明晰才能被人采纳


发布日期:2023/1/7
 

不管您喜欢与否诸如统一建模语言 (UML)类模型和用例模型这样的软件图往往是根据它们的外观来判定其好坏的看上去整洁的图比看上去杂乱的图更容易受到读者 常常是您的用户或高级经理 的青睐本文源自 Building Object Applications That Work 的第

我很愿意描述几个重要的经验法则这些法则将使您比其他建模同仁做得更好这些虽然简单但很关键的建议主要集中在如何安排组成软件图(包括 UML 类模型用例模型甚至持久模型)的那些框和线条并因此适用于所有种类的图

要绘制一个外观整洁的图您应该避免

·大小不一的框

·对角线

·交叉线

·曲线

·混乱的图

·不必要的细节

让我们从一个示例开始在图 您可以看到两个用两种不同风格绘制的图第一个复杂没有章法而第二个简单组织良好(虽然有些乏味)您认为哪个设计更好呢?大多数人都会赞成第二个看上去更好一些因为虽然这两种设计在功能上是相等的但第二个的安排更整洁

杂乱的图

整洁的图

避免大小不一的框

如何对图 加以改进呢?首先确保所有框的大小都一样大框看上去比小框更重要一些如果这是您尝试表达的那么这样做没错 但如果让我选的话我宁愿将所有框保持相同的大小这种方法最适合于UML 用例因为其中的所有用例框和参与者符号可以很方便地统一成一样此外还适用于UML 协作图UML 序列图UML 用户界面流程图对于框中包含的信息量不同的图例如UML 类图(其中个别类有数量不等的属性和操作)或者UML 状态图表图持久(数据)模型那就有一些困难了

避免对角线

与图 的另一个不同之处在于它没有任何对角线我是通过重新安排框来消除对角线的就好象它们在一个网格上使互连的框或者在垂直方向上分离或者在水平方向上分离从视觉上说大多数人对直线更感兴趣

避免交叉线

在图 有两条线相互交叉我的一个常规经验法则是应该尽量减少图中交叉线的数量通过将一些框移到旁边我在短时间内就可以避免使两条线交叉可惜不是总能这样幸运 您无法总能避免交叉线在图 我想将 个框全部连接起来但如果不使至少两条线相交就无法做到这一点您可以看到我没有其它方法将框 连接起来在不得不交叉线时我会用适用于电路图的标准来标记一条线跳过另一条如图 所示跳过的好处是它很清楚地表明线只是在图上交叉而不以任何方式连接

如何在不交叉线的情况下连接

一条线过另一条

避免曲线

您可以在图 中看出我对图 做了更进一步的改进除去了曲线人们喜欢看到垂直或水平的直线这次我又假装是在网格上绘制图(实际上这是许多计算机辅助系统工程 (CASE) 工具的内置特性)然后只需要象在网格上那样绘制出框和线条

的更整洁版本

避免混乱或复杂的图

显示太多细节或者外观很混乱的图看上去不太好最好能够有几张显示各种程度的细节的图而非一张显示所有事物的复杂的图这就是为什么 UML 拥有几种图的原因之一一个软件是如此复杂以至于我们无法在单一图上对其所有方面建模而且UML 允许将包添加到图中(下星期的技巧主题)

另一个相关的注意事项是对屏幕或页面区域的使用在我看来一张占据几页的图比将所有内容蜷缩在一起使它能在一页上打印出的图要好得多您应该给图留出足够的空间使它易于理解

避免在图的美化上浪费太多时间

尽管这些经验法则非常有效但无休止地调整图的外观总是会增加额外的建模时间解决这个问题的一个方法是尝试使图的外观保持在大致良好的水平上 您在使用图时不需要它非常完美一旦确信图按照您所需的方式对应用程序建模就可以开始移动框以避免交叉线增进其可理解性

您的主要目标是对系统建模而不是绘制漂亮的图有必要指出这些重要的经验法则也可以被用来美化低劣的设计例如我可以从图 开始将它重排成图 以使设计看上去比实际的更为复杂 可能使得高级管理人员相信我需要更多时间或资源才能完成工作或者引导他们避开我不是特别喜欢的备选设计假设您的动机随情形而改变我希望您所处的情形是健康的您所考虑的最重要的问题是使了不起的设计看上去更引人入胜而不是在办公室权术中求生存

参考资料

Building Object Applications That Work: Your StepByStep Handbook for Developing Robust Systems with Object Technology由 Scott W Ambler 着New York: Cambridge University Press

Process Patterns Building LargeScale Systems Using Object Technology 由 Scott Ambler 着New York: Cambridge University Press

The Object Primer nd Edition由 Scott W Ambler 着New York: Cambridge University Press

上一篇:设计模式-快餐简解-【模板方法模式】

下一篇:jOOQ 2.2.1发布 小型ORM框架