`
mingjian01
  • 浏览: 29591 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

画UML图时注意的几个原则(转)

阅读更多

软件开发中,分析和设计时,文档的编写和思想的交流,经常要绘制各种各样的图。相对于人类的自然语言,描绘复杂结构,图具有直观和整体的特征,有着不可替代的表现力。

软件开发是创造性的劳动,开发人员几乎在每一分钟都要做出某些选择,每一个选择都好像决定着最后的结果。绘图的时候也是如此,脑中有完整或不完整的想法,要清晰的表现出来时相当不容易。事实上,我发现许多老手不会画图。

在实践的过程中,我总结了一些经验,得出了一些结论。

1. 不画没有必要的图 。如果简单的文字就能说得很清楚,还画图干什么?对代码级别的细节,不要画图来表现;不要借助图来让你的文档得变大;画蛇莫要添足。

2. 忽略底层的细节 。软件是一个多层的东西,一个图只展现恰当抽象层次之上的细节。一个过细的图,大量的信息会掩盖真正重要的东西。比如:在一个流程图上,不需要把“文件打开的错误判断”也作为一个分支画在图上,除非你“无聊到”要强调这个显而易见的异常处理;
  
3. 图不要太大 。如果一个图上包含上百个对象,看起来不舒服,应该化整为零,使用多个图,每个图描述不同的部分。
  
4. 画纯种的图 。 图传递的信息应该明确,无歧义。一定要明确图中的各个组成元素都是什么东西,整个图要表现什么。尽量使用规范的图。比如:流程图中,应关注控制的传递,不 要有从文件中读取数据的数据流;软件结构图中,描述模块之间的父子关系的同时,不要有模块之间的数据流。我常见到这样的图:在图中既有“控制流”,也有“ 数据流”,不伦不类,名之曰“示意图”。个人认为,交流时,这种示意图在白板上随手画画还可以,决不应该出现在正式的文档上。这些图中的控制流,实是一个 模糊概念,A->B可以表示:1)A调用B,把控制传递给B;2)A启动B,把控制传递给B;3)A向B传递一个控制信号;4)有一个第三者调用A 完成后,马上调用B。

5. 图的布局要简洁,美观 。我听说:书写大幅的毛笔字,特别讲究布局。同样道理,画软件图,尽量密度分布均匀,减少连线的交叉。 为了减少连线的交叉, 同样的单元可以在图中出现多次。

6. 其实并不需要完备的图 。使用UML有三种方式:UML as sketch(草图),使用不完备的图进行系统某一部分或某一方面的内容进行交流;UML as blueprint(篮图),通过完备的UML图表现详细设计的所有决定;UML as programming language,自动精确的UML图,直接编译成可执行的代码(现在好像还没有实现)。Martin Fowler说:使用UML绘制草图的人,真正关注UML的精髓(大师就是大师,说话就是不一样)。所谓“不足胜有余”,不管什么图,图应该集中表现其关 注的方面,恰当的忽略一些细节时必要的。类图中,往往没有必要包含类的所有函数合成员说明;在表现对象之间协作的顺序图中,大多时候也没有必要表现存在的 分支和循环。
  
7. 所有的规则都是用来遵守和打破的 。上面的所有道理,也并非是不变 的真理。但是,道理被打破以前,你应该了解它,熟悉它,批评它,忘记它(追求类似张三丰太极剑的境界)。古人云:事有反道而适权,伪经而和道者。笑傲江湖 说:独孤九剑,无招胜有招。萧大侠:删繁就简,取精用宏。 规劝朋友也规劝自己:连有招的境界尚未达到,应该知道自己该做什么。

分享到:
评论

相关推荐

    ArgoUML画UML图工具

    UML包含了多种图表类型,如用例图、类图、序列图、状态图等,每种图都有特定的用途: 1. **用例图(Use Case Diagram)**:用于展示系统与外部参与者之间的交互,表达用户需求。 2. **类图(Class Diagram)**:...

    Visio画UML图基本操作及技巧解析

    Visio 画 UML 图基本操作及技巧解析 ...4. Visio 画 UML 用例图时要从“用例”模具中将“用例”形状拖出并放在系统边界内,然后将“参与者”形状拖到系统边界外。 5. 使用“通信”形状指出用例和参与者之间的关系。

    UML图.xmind

    UML图( 内容来自公众号 鸭血粉丝 Java极客技术,非本人总结,仅作为学习使用

    jude画UML图,轻松画UML图,占资源小

    - **导出与共享**:完成的UML图可以导出为多种格式,如图片或XML,方便在团队间分享和讨论。 3. **学习与进阶** - **学习曲线**:由于Jude设计简洁,学习曲线相对较平缓,新用户能快速上手。 - **扩展性**:虽然...

    如何画UML用例图

    画用例图时需要注意的几点是:参与者之间的关系,用例之间的关系,参与者和用例之间的关系。其中参与者之间的关系用的最多的就是泛化(继承)的关系。参与者和用例之间的关系用的最多的就是实箭头,表示主动和被动的...

    学习画UML图,java,c++

    在这个“学习画UML图, java, c++”的主题中,我们将深入探讨UML的基础知识,以及它如何与Java和C++编程语言相结合。 首先,UML包含了多种图表类型,如用例图(Use Case Diagram)、类图(Class Diagram)、序列图...

    用StarUML画UML图

    标题“用StarUML画UML图”表明我们要探讨的是如何使用StarUML这款软件来绘制统一建模语言(Unified Modeling Language,简称UML)图表。UML是一种标准的建模语言,广泛应用于软件工程中,它允许我们以图形方式表示...

    JS画UML图工具MyGraph整合例子

    因工作需求,从网上下载了MyGraph的源代码,与本地一个例子做了一个demo,目前已实现UML图形编辑、本地打开、保存功能(google浏览器已测) 部署到tomcat后,打开URL: ...即可使用

    牛人画的UML图(附件)

    首先,UML图通常包含几个主要的类型,如用例图、类图、序列图、状态图和活动图等。这些图分别用于描述不同层面的系统行为和结构。在给定的“uml.bmp”文件中,我们可能看到的是其中一种或多种类型的组合。 1. **用...

    JAVA类生成UML图

    - **维护阶段**: 当系统需要更新或扩展时,UML图提供了一种快速理解现有代码结构的方式,有助于进行修改和优化。 5. **注意事项**: - 自动生成的UML图可能并不完美,可能需要人工校对和调整,确保其准确反映代码...

    画出十分漂亮的UML图形的工具

    在实际应用中,利用Edraw Max这样的工具,我们可以提高设计效率,确保UML图的清晰性和专业性。同时,美观的图形也有助于提升沟通效果,让团队成员和利益相关者更好地理解和接受设计方案。因此,掌握一款高效且易于...

    UML简易工具 可以画UML的任何图形

    UML简易工具 可以画UML的任何图形 相对于visio 和 rational 来说 是个轻量级的 不用破解很方便

    axure uml 流程图

    泳道图是活动图的一个变体,通常用于展示跨职能的工作流程。在泳道图中,不同的泳道代表不同的角色或部门,每个泳道内的活动表示该角色或部门的责任。这种图有助于理解不同参与者在流程中的作用和交互。 **3. 状态...

    VC中画UML图源代码

    8. **UMLClipboardHandler.h**:剪贴板处理程序可能负责复制和粘贴UML元素的功能,这在编辑UML图时非常实用。 9. **UMLPackagePropertyDialog.cpp**:包属性对话框可能允许用户定义和编辑UML包,包是组织和管理模型...

    使用rose 绘制 uml图的具体教程步骤

    由于文中描述了使用Rose软件的操作步骤,我们可以推断出教程所包含的关键知识点主要围绕以下几个方面: 首先,教程可能会介绍Rose软件的基本界面和操作流程。Rational Rose是IBM开发的一款支持UML的建模工具,它...

    UML简介与面向对象的设计原则

    面向对象设计原则与UML简介 UML,全称为统一建模语言,是软件开发领域中一种广泛应用的标准化建模工具。由Object Management Group(OMG)于1997年发布,它提供了可视化的表示方式,用于描述、指定、构建和记录软件...

    用Visio画UML图类结构图(基本篇)

    在这篇文章中我们要将下面一个在MFC程序中随处可以见到类用UML图表现出来.classCGraphicObject{ CRectm_rectBound;public: BOOLSetRect(CRectrect); CRectGetRect();};创建类图在模型资源管理器中选择[Static...

    eclipse画UML类图的jar包.zip

    反之,修改Java代码时,也可以同步更新UML图。 - 图形化表示:通过图形界面,直观地展示类之间的关系,如继承、实现、依赖等。 - 文档生成:可以导出UML图作为文档,便于团队交流和需求分析。 安装这个插件后,...

    ThreadPool UML图

    在实现线程池时,需要特别注意以下几个关键点: 1. 线程池大小的配置:线程池的大小并不是越大越好,需要根据实际的CPU核心数和任务的特性来合理配置。 2. 任务的管理:确保任务队列不会因为任务无限堆积而导致内存...

    StarUML软件,可离线画UML图

    StarUML支持多种类型的UML图,包括但不限于以下几种: 1. **用例图**:描述系统外部参与者与系统之间的交互,通过用例来展示系统的需求。 2. **类图**:显示类、接口、对象以及它们之间的关系,如继承、关联、依赖...

Global site tag (gtag.js) - Google Analytics