以前一提到UML,就想到了复杂的流程图。很敬佩哪些想想就能画出整个系统的UML图的人,因为他们头脑中有整个软件架构的蓝图,这样在编写实现的时候,就会知道哪个地方改怎么做,哪个地方如何扩展。

  而想成为架构师,UML也是必备的技能。这里就根据《大象——Thinking in UML》总结一些学习笔记。

  平时总是在说什么是面向对象,什么是面向过程。

  面向过程,就是典型的C语言这种,一个main函数,从头走到脚,中间可能涉及到一些方法的调用,但是整个代码完全是流水线一样。这样就会导致一个问题,虽然代码流程很清晰,但是不容易扩展,我需要修改某一个计算过程,有可能导致全部代码需要重写。

  而面向对象,就是以一种对象的角度来编写程序,设计程序,每个对象具有自己的生命特征。每个对象内部具有一些复杂的变量以及方法,对外提供接口或者公共方法进行调用,这就是封装。而对象之间可以互相关的继承,借鉴存在的方法,这就是继承。相同类型的对象,可以提取公共的部分,形成一个新的父类对象,这就是抽象。每个相同类型的子对象之间可能存在不同的方法,这就是多态

  这样,通过对象的方式,来看待世界,整个过程就变得解耦了,一旦需要扩展或者修改某个地方,单纯的修改与之对应的对象就可以了。

  而这其中的难点,就是如何从现实世界中的业务场景转换到抽象的对象模型;而通过复杂对象模型如何表示业务场景。

  

  通过上面这个步骤,就可以从现实世界抽象出模型来表示业务场景了。

  首先通过建模,把现实世界中需要的一些数据进行建模,建立对应的模型。

  然后根据这些模型去设计相关的一些概念,比如控制类,实体类,以及边界的展现类。

  最后设计这些概念模型,进行代码级的实现。

  设计思想有了,那么就出现了一种叫做RUP的统一建模的过程模式,通过这种建模的模式,可以完整而且稳定的展示一个软件的软件生命周期。

  通过这四个阶段,9个核心,完美的诠释了传统软件的生命活动,但是现代的软件开发,大多讲究极限编程,敏捷开发,想要通过快速的迭代更新,来进行快速的适应,以满足快速的需求变化。但是对于一些10年之久的系统来说,稳定才是最重要的,因此这种统一过程往往是最佳的选择。

  对于UML来说,我们最难的就是如何建模了!

  首先要明确,建模的目的是什么?需要满足什么业务场景!其次,根据多种场景抽象出模型。

  传统的方式可以通过自顶向下,或者自底向上的方式来进行。

  自底向上,就是首先建立底层小对象的模型,再通过组合等方式,拼凑出完整的业务场景。

  自顶向下,就是先进行大体的场景描述,再慢慢的细分功能。

  一般都是这两种方式,不断的迭代,最终找到合适的方案。

【UML】——为什么要使用UML的更多相关文章

  1. UML系列04之 UML时序图

    概要 本章对UML的时序图进行介绍,主要内容包括:时序图介绍时序图组成 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3523355.html 时序图介绍 ...

  2. UML系列03之 UML类图(二)

    概要 在"UML系列02之 UML类图(一) "中介绍了类图的基本构成--类的UML表示方法.本文是接着前文,继续对"UML的类图"中几种关系进行介绍.介绍的主 ...

  3. UML系列02之 UML类图(一)

    概要 本章介绍类图中类的UML表示方法.内容包括:类图介绍实体类的UML表示抽象类和接口的UML表示 转载请注明出处:http://www.cnblogs.com/skywang12345/p/352 ...

  4. 【UML 建模】在线UML建模工具 ProcessOn 使用详解

    总结 : -- 推荐理由 : 最近从 Windows 操作系统 转到 MAC 上, 正在看设计模式 和 重构, 找不到好用的 UML 工具, 因此在网上找了一款可以在线使用的 UML 工具, 用起来发 ...

  5. 【UML】NO.54.EBook.6.UML.2.002-【Thinking In UML 大象 第二版】- UML 核心元素

    1.0.0 Summary Tittle:[UML]NO.54.EBook.6.UML.2.002-[Thinking In UML 大象 第二版]- UML 核心元素 Style:DesignPat ...

  6. 【UML】NO.53.EBook.6.UML.2.001-【Thinking In UML 大象 第二版】- 概述

    1.0.0 Summary Tittle:[UML]NO.53.EBook.6.UML.2.001-[Thinking In UML 大象 第二版]- 概述 Style:DesignPattern S ...

  7. 【UML】-NO.40.UML.1.UML.1.001-【UML】- uml

    1.0.0 Summary Tittle:[UML]-NO.40.UML.1.UML.1.001-[UML]- uml Style:DesignPattern Series:DesignPattern ...

  8. [转]解析UML建模语言中的UML图分类、 UML各种图形及作用

    本文向大家介绍一下UML图分类,作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分. UML图大致可分为五类,共有九种图形. AD: 本文和大家重点讨论一下UML图分类,标准建模语言U ...

  9. 【UML 建模】在线UML建模工具 ProcessOn 使用具体解释

    总结 : -- 推荐理由 : 近期从 Windows 操作系统 转到 MAC 上, 正在看设计模式 和 重构, 找不到好用的 UML 工具, 因此在网上找了一款能够在线使用的 UML 工具, 用起来发 ...

  10. 【UML】如何记忆UML类图的画法

    前言 UML类图形象反映系统类之间的关系,大家非常常用.小弟不才,偶尔使用,往往每次使用都得查询各种关系的表示方式.终于,这次认真看了几遍,打算记起来. 注意 记忆方法只是本人联想,用于加强记忆.与该 ...

随机推荐

  1. Hadoop常用命令汇总

    启动Hadoop 进入HADOOP_HOME目录. 执行sh bin/start-all.sh 关闭Hadoop 进入HADOOP_HOME目录. 执行sh bin/stop-all.sh 1.查看指 ...

  2. log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a "org.apache.lo .

    log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a &quo ...

  3. 智传播客hadoop视频学习笔记(共2天)

    第一天:1.答疑解惑•  就业前景•  学习hadoop要有什么基础•  hadoop会像塞班一样,热一阵子吗•  hadoop学习起来容易还是困难•  课堂上的学习方法(所有实验必须按照要求做,重原 ...

  4. IMX515开发备忘

    1.多个PAD可以选择为同样的功能引脚 IMX515处理器一个PAD可以作为多种功能引脚,比如EIM_D25可以作为UART3_RXD,定义如下: 图1 而处理还有一个另一个UART3_RXD的PAD ...

  5. Android开发之Bitmap.Config.RGB_565

    在学习xutils框架的时候,看到sample代码中有一行这样的代码: bitmapUtils.configDefaultBitmapConfig(Bitmap.Config.RGB_565); Bi ...

  6. java 参数传递是引用传递还是值传递?

    JAVA的参数传递倒底是值传递还是引用传递,我觉得两种说法都没错,关键是看怎么理解“引用”和“引用传递”. (一)从编译原理的角度讲,所有那些无法通过形参来修改实参本身的传递机制都是“值传递”,在JA ...

  7. UVa 1644 (筛素数 + 二分) Prime Gap

    题意: 给出一个整数n,如果n是素数输出0,否则输出它后一个素数与前一个素数的差值. 分析: 首先用筛法把前十万个素数都筛出来,然后放到数组里.用二分找到不大于n的最大的素数的下标,如果这个素数等于n ...

  8. android 组件设置屏幕大小

    WindowManager wManager = getWindowManager(); DisplayMetrics metrics = new DisplayMetrics(); wManager ...

  9. 【转】COCOS2D-X之CCHttpRequest下载图片Demo

    #include "pthread.h" #pragma comment(lib,"libcurl_imp.lib") #pragma comment(lib, ...

  10. 【转】Eclipse配置Struts2问题:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

    我的解决方案 一开始,我是依照某本教材,配置了User Libraries(名为struts-2.2.3, 可供多个项目多次使用), 然后直接把struts-2.2.3引入过来(这个包不会真正的放在项 ...