前言

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

    1. DATE 处理 1.1 日期格式一个是as.Date(XXX) 和strptime(XXX),前者为Date格式,后者为POSIXlt格式 1.2 用法:as.Date(XXX,"%Y ...

  2. MVC5中EF6 Code First启动慢及间隙变慢的一些优化处理

    问题描述: 第一次访问的时候很慢,后面再次打开页面很快,过了一段时间不访问页面然后再次打开页面又像第一次那样很慢. 采用的技术和环境: 使用技术:EF6+MVC5 服务器环境:Windows 2012 ...

  3. mysql编码

    Mysql中文乱码问题完美解决方案 修改查看MYSQL字符集(charset) MySQL 乱码之我见 10分钟学会理解和解决MySQL乱码问题 /etc/mysql/my.cnf /etc/init ...

  4. OSS阿里云文件上传 demo。

    所需jar包: aliyun-openservices-1.2.3.jar jdom-1.1.jar commons-codec-1.4.jar commons-logging-1.1.1.jar g ...

  5. 杂项-权限管理:Ralasafe

    ylbtech-杂项-权限管理:Ralasafe Ralasafe 是用Java编写的开源(MIT协议)访问控制中间件.它能够轻松处理登录控制.URL权限控制和(业务级)数据级权限管理,实现权限与业务 ...

  6. Go语言是如何处理栈的

    转自:http://tonybai.com/2014/11/05/how-stacks-are-handled-in-go/ Go 1.4Beta1刚刚发布,在Go 1.4Beta1中,Go语言的st ...

  7. Linux 文件名颜色

    在Linux中,文件的颜色都是有含义的.其中, 蓝色表示目录 绿色表示可执行文件 红色表示压缩文件 浅蓝色表示链接文件 灰色表示其它文件 红色闪烁表示链接的文件有问题了 黄色是设备文件,包括block ...

  8. 为什么并行测试很困难以及如何使用 ConTest 辅助测试

    众所周知并行程序设计易于产生 bug.更为严重的是,往往在开发过程的晚期当这些并行 bug 引起严重的损害时才能发现它们并且难于调试它们.即使彻底地对它们进行了调试,常规的单元测试实践也很可能遗漏并行 ...

  9. Sql server 2008 R2 导出/导入数据报错之无法打开全局共享内存以与性能 DLL 通信

  10. 奇异值分解(SVD)详解

    2012-04-10 17:38 45524人阅读 评论(18) 收藏 举报  分类: 数学之美 版权声明:本文为博主原创文章,未经博主允许不得转载. SVD分解 SVD分解是LSA的数学基础,本文是 ...