前言

软件开发过程中,在生命周期中,我们大都知道要写文档,但是针对这种团队集体完成的事情,如果中间出现了人员流动问题,这时侯有文档仅仅是不够的。为了让大多数开发人员和用户能直观的了解软件开发的进度和流程就引入了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. Git教程及问题解析

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! Git教程 最近用git比较多,做出教程一份,供大家参考. 1.        安装Git,并配置环 ...

  2. 五 Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

  3. Java企业微信开发_00_源码及资源汇总贴

    一.源码 此系列教程的源码我都放在了github上,欢迎fork以及关注. 传送门:https://github.com/shirayner/WeiXin_QiYe_Demo/tree/master ...

  4. python-Django收集主机信息

    1.创建工程simplecmdb django-admin.py startproject simplecmdb 2.创建应用 cd simplecmdb python manage.py start ...

  5. OpenCV——黑白调整

    参考算法: 闲人阿发伯的博客 // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUD ...

  6. 流媒体直播服务器:Bull-Live-Server

    Bull Live Server 简称 BLS ,旨在使用C++语言提供强大功能和高性能的流媒体直播服务器. 为何要写 BLS ? 1.simple rtmp server https://githu ...

  7. Java如何调用dll

    -----------------------------前置条件------------------------------------- 1. 首先有testdll.dll 2. 需要testdl ...

  8. python xml包 xml.etree.ElementTree使用记录

    19.7.1 教程 这是一个简短的教程使用xml.etree.ElementTree(简称为et).目标是展示一些构建模块和模块的基本概念 9.7.1.1. XML tree and elements ...

  9. POJ2449:K短路

    Remmarguts' Date Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 26355   Accepted: 7170 ...

  10. c++对象导出到lua

    转自:http://www.cnblogs.com/ringofthec/archive/2010/10/26/luabindobj.html 虽然有tolua++, luabind等等, 不过自己手 ...