前言

软件开发过程中,在生命周期中,我们大都知道要写文档,但是针对这种团队集体完成的事情,如果中间出现了人员流动问题,这时侯有文档仅仅是不够的。为了让大多数开发人员和用户能直观的了解软件开发的进度和流程就引入了UML(Unified Modeling Language)统一建模语言。

分析

横向:

软件开发过程中,在整体状态可以划分为外部和内部两大部分,其中内部自认为可以分为动态行为和静态结构。其中每个开发部分都需要UML中图让开发过程尽最大的可视化。如下图:

纵向:

   初识UML,一开始就知道有九种图,但是九种图都是干什么的呢?九种图都应用在哪几个阶段呢?就像师父问我,各个阶段都有哪些文档知道吗?为什么要写文档?大致的划分了一下,如图:
               

基点

   UML是基于面向对象的一门语言,其中在面向对象的设计技术中,面对对象的基本原则是(区别于面向过程的显著的特点)抽象、封装、模块性、层次性。
1、面向对象和类有什么异同点:
对象和类:
   对象是具有状态、标识和行为的一个实物。
   类是一组具有相同属性、行为、关系和语义的对象的描述。
注:一个对象是一个类的实例。
2、什么是抽象?
   将真实的客观环境抽象成一个名词,比如下面一个购买商品应用情景:
                   
3、什么是封装?
   对客户隐藏实现,客户看到只是接口,对于里面的东西一概不知。比如遥控控制电视,我们都能控制电视,但是这种功能具体怎么实现的呢?我们一概不知。
4、什么是模块性?
   就是将我们的系统分为不同的功能模块,然后进行面向对象设计。对于一个购买东西的流程。可以如图:
                   
5、什么是层次性?
                 

关系

a、关联关系:“实线+箭头”
   这一种特别常用的关系,但是关系并不是很突出,为了让开发者对图一针见血,需要很强的关系来形容。如下图就是关联关系:
                     
b、聚合关系:“空心菱形+实线+箭头”
   聚合关系,部分可以独立于整体而存在。如下图:
                      
c、组合关系:“实心菱形+实线+箭头”
   部分不可以独立于整体而存在。如下图:
                      
d、泛化关系:“空三角+实线”
   泛化关系就是"is kind of"继承关系。
e、依赖关系:“虚线+箭头”
   一种使用关系,一个事物规格说明的变化可能影响到使用它的另一个事物,但反之未必。

总结

   至此,我们已经了解到了开发阶段的每个阶段需要什么UML图,UML图中的四大关系的应用和具体表示方法。在后面的学习中,开始我们对UML九大图中每个图的详细认识吧。未完待续~~~
   本人是一枚菜鸟,如果不合适的地方,望大神斧正!
                        若安好,便是晴!





UML——前两章的更多相关文章

  1. Java学习笔记,前两章总结

    第一章 Java平台概论 1.Java不仅仅是个程序语言,代表解决问题的平台,代表了原厂.各个厂商.社群.开发者与用户沟通的成果. 2.Java三大平台,从J2SE.J2EE.J2ME到Java SE ...

  2. Python大战机器学习——基础知识+前两章内容

    一  矩阵求导 复杂矩阵问题求导方法:可以从小到大,从scalar到vector再到matrix. x is a column vector, A is a matrix d(A∗x)/dx=A d( ...

  3. 事隔五年之后,开启第2版DSP数字信号处理和CMSIS-NN神经网络教程,同步开启三代示波器,前15章发布(2019-11-04)

    说明:1.第1版DSP教程发布于2014年末,纪念下:https://www.cnblogs.com/armfly/p/11274826.html2.这几年在信号处理的应用上积累了一些经验,也发现了很 ...

  4. JavaScript 中实现继承的方式(列举3种在前一章,我们曾经讲解过创建类的最好方式是用构造函数定义属性,用原型定义方法。)

    第一种:对象冒充 function ClassA(sColor) { this.color = sColor; this.sayColor = function () { alert(this.col ...

  5. HBase in Action前三章笔记

    近期接触HBase,看了HBase In Action的英文版.開始认为还行,做了些笔记.可是兴许看下去,越来越感觉到实战这本书比較偏使用上的细节,对于HBase的具体设计涉及得很少.把前三章的一些笔 ...

  6. 读了两章的 How Tomcat Works

    周一发现了一本书.How Tomcat Works 惯例先到豆瓣搜书评.结果书评出奇的好.然后下载了PDF.从简介中看,本书的每个章节都会不断的围绕怎么建造一个Tomcat讲解.我本人比较喜欢这种造轮 ...

  7. 《Writing Idiomatic Python》前两部分的中文翻译

    汇总了一下这本小书前两部分的内容: 翻译<Writing Idiomatic Python>(一):if语句.for循环 翻译<Writing Idiomatic Python> ...

  8. sqlserver -- 学习笔记(七)获取同组数据的前两条记录

    不啰嗦,直接上图,大概实现效果如下: 有上面这样一份数据,将他们按照userAccount和submitTime进行分组,然后提前每组数据的前两条记录 提取后数据如下: 实现的SQL如下: selec ...

  9. WORD中如何让前两页不显示页码

    WORD中如何让前两页不显示页码   上稿人:ojn 点击率: 15191   我们有时在用word编辑文档时,会遇上第一.二页无需显示页码,第三页才是正文的第一页时,该如何正确插入页码呢? 以wor ...

随机推荐

  1. ListOperations

    RedisOperations<K,V> getOperations()  V index(K key, long index)  V leftPop(K key)  V leftPop( ...

  2. Linux vi/vim使用方法

    vi/vim 基本使用方法 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令. 1.vi的基本概念 基本上vi ...

  3. 用express实现CORS跨域(上-简单请求)

    今天遇到了一个跨域请求登录验证的问题.所以有了尝试跨域的机会. 具体情景是,有一个登录界面写在名叫cas的站点上,但是相关的登录验证的后台接口是写在名叫earth的站点. 首先的反应是使用jsonp, ...

  4. 基于zepto使用swipe.js制作轮播图demo

    在移动web开发中,由于手机界面较小,为了能展示更多的图片经常使用轮播图并且还需要考虑到手机流量的问题,通过请教他人以及百度,个人感觉swipe.js比较好用 它是一个纯javascript工具,不需 ...

  5. 关于c++中的全局变量(不赋值的全局变量算定义)

    定义有三种: 1.不赋值的定义:int a; 2.赋值的定义:int a=5; 或者 int a;a=5; 3.加extern的定义:extern int a=5;//其实和不加是一样的. 声明只有一 ...

  6. poj-1379 Run Away(模拟退火算法)

    题目链接: Run Away Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 7982   Accepted: 2391 De ...

  7. (转)#ifndef的用法

    原文链接:http://wenku.baidu.com/link?url=c4doqVo3U429RkwTN5eaJIfD2rEu-1bLKKQXuqO8drmL359PhUjVmzC7P94wBY9 ...

  8. 无旋Treap - BZOJ1014火星人 & 可持久化版文艺平衡树

    !前置技能&概念! 二叉搜索树 一棵二叉树,对于任意子树,满足左子树中的任意节点对应元素小于根的对应元素,右子树中的任意节点对应元素大于根对应元素.换言之,就是满足中序遍历为依次访问节点对应元 ...

  9. [HDU4652]Dice

    vjudge 题意 \(m\)面骰子,求 1.连续出现\(n\)个相同的停止: 2.连续出现\(n\)个不同的停止 的期望投骰子次数. \(n,m ≤ 10^6\) sol 首先考虑一个转移式子吧. ...

  10. sessionStorage,localStorage,cookies

    1 HTML5的Storage主要分为两种:localStorage与sessionStorage,这两者主要在生命周期上有较明显的差别,localStorage的生命周期较长,原则上要等到透过Jav ...