UML(Unified Modeling Language)统一建模语言-----第二节

版权声明:本文为博主原创文章,未经博主允许不得转载,转载请注明出处。 https://blog.csdn.net/weixin_39885282/article/details/81161236

UML的三要素

1、过程

什么是UP(过程)?
先做什么,后做什么?过程中都有什么样的概念?
软件开发的过程(software development process):描述了构造、部署以及维护软件的方式;
统一过程(The Unified Software Development Process)是一种流行的构造面向对象系统的迭代软件开发过程;
Rational统一过程(Rational Unified Process,RUP):是对统一过程(UP)的详细精化,并且一杯广泛采纳

UP中可以引进其他方法中的有用的实践,eg极限编程(Extreme Programming,XP):重视沟通(项目小组与用户之间的沟通,项目小组内部的沟通)与反馈(根据反馈不断的修正设计方案)。XP中的测试驱动开发(test-driven development,tdd):在编程前先写测试单元(把百分之百的不通过变成通过),单元测试工具但是其成本较高所以很多公司不用、重构(refactoring):变化就得需要重构,更新方法名等和持续集成(continuous integration):一开始就有一个可运行的系统,然后在此基础上逐步增强其功能,客户可以参与到开发过程中,及时提出问题等
UP中主要的三个概念?
1、以构造(各种模型【整个过程中需求有需求的模型、设计模型测试模型】)为中心
2、用例(要开发软件的目标,用户使用软件干嘛?如何用)驱动:促进整个过程
3、迭代和增量式的开发:拥抱需求的变化,如下图;四个阶段
            初始阶段:分析最重要的百分之二十以上的需求建立用例模型,对左边的内容都需要做
            细化:对剩下的大部分需求进行分析,以用例的方式,建立场景描述,再进行分析和设计,有多次迭代(时间段eg一周时间完成需求然后再迭代(因为需求未完成,一部分一部分的做,不断与用户交互,增量式的开发))
            构造:侧重于实现
            交付:侧重于交互和部署
            每个阶段虽然都会横跨所有的层次,但是都有其重点,区域比较大的表示重点

UP只是描述了这样一个过程,可以将其他的方法互为补充egXP

这里写图片描述

上图的UP与传统的瀑布模型(瀑布生命周期)有很大的不同
这里写图片描述

2、UML的图形表示法

这里写图片描述

事物就是某种东西
类:实体
接口:功能性描述
构件:软件模块
节点:描述整个系统的部署结构
行为
交互(消息):实线+箭头+名称(上方)
状态:状态变化,添加---》add,提交以后状态变化;可以通过状态图或活动图描述
分组
包:组织其他事物的一种概念,eg,java中的包
子系统:eg;各种管理系统之间描述,功能管理系统依赖于权限管理系统
注释:未尽事宜
关系:UML中非常重要
依赖、关联(聚合、组合)、泛化、实现
依赖:一个事物的变化影响另一个事物;
关联:关联名、导航、角色、多重性、聚合、组合;eg:公司有多个部分,一个部分含多人,部门与人之间关系
聚合:关联的双方整体与部分的关系,eg:电脑有显示器和主机,飞机场与飞机
组合:是一种强聚合,eg:view有menubutton,没有view就不会有menubutton
泛化:继承,eg:big is animal
实现:接口,定义一系列的规范
图:相当于一种角度,eg:交通图和行政图
用例图,交互图(顺序图,协作图)、类图、活动图、状态图等
用例图:从参与者的角度描述系统
交互图:在实现add user时候,描述如何交互(how add?),首先打开界面--输入信息--提交--系统存储--返回添加用户成功信息(文字描述就是用例)------》可以得到有哪些接口,以及方法;
类图:描述人和部门的多对一关系
活动图:表示一种流程;eg:登录(打开登录界面--》输入用户名密码登录--》后台判断用户名是否存在,否:返回登录界面,并提示用户名不存在--》密码————》是否超时等)---》描述清楚整个系统
状态图:描述状态的变化:eg校园一卡通(建立文件结构,写入学生信息--已初始化--使用中(与用户关联)--丢卡,被冻结--注销--回收)挂失--》注销;有一定前提条件:eg:一张卡不能直接变成回收状态,它必须先注销解除关联关系
扩展机制:Stereotype(版型)、Tagged value(标签值)、Constraint(约束)
只有在特定的环境中才有其作用;
Stereotype(版型):表示概念的扩展类型,SSH中user类等,实体类,控制类,边界类等
Tagged value(标签值):版本一类的
Constraint(约束):eg:age<18
图的分类:
静态建模:类图
动态建模:
顺序图(协作图)
用例图
活动图
状态图
学习顺序:
    从最重要的开始:类图(肯定用)———》顺序图————》用例图————》活动图————》状态图

类图:
这里写图片描述

DispatchAction:struts中开发某个action继承DispatchAction可以定义多个方法,请求可以通过参数调用不同方法;一个类中处理多个请求----》泛化关系
框1:类的名称
框2:类的实例变量(成员变量)
框3:方法

UserAction调用UserManager(继承用箭头加上三角块,箭头指向父类)接口可以用框表示也可以用圈表示
login是一个方法,参数(参数名user:参数类型User):返回值LoginInfo对象;中间均用冒号表示;
虚线表示依赖,UserAction需要调用UserManger,所以其需要依赖UserManger
实现与集成差不多,但是实现变成了虚线:
注释:连线:注释事物和被注释东西之间的一个连线
UserManger调用UserDao(实现)
关联:用实现表示
依赖用虚线+箭头表示(1  * 多对一的关系)

用例图:
小人表示参与者;后面椭圆表示系统功能性描述,也同时说明了关联用户功能是给管理员用的不是给其他用户用的;
描述了管理员的目的、目标可以做什么?

左下角状态图:
描述页面流,起点(实心圆)

右边活动图:实心圆外面再套一个圈,流程描述

3、工具:Rational Rose

Rational Rose是一种建模工具;
这里写图片描述

依赖性是否需要画出来?
不一定,看需求,必要性是画图的重要原则,虽然有这种关系,但不一定要画出来,若非要画出来则应考虑不要影响图形的美观;eg:Struts2中的Action可以不依赖Struts2特定的api或者Servlet API;

一下内容来自ppt

关联:一种弱的连接关系,不构成完全的依赖关系,eg(汽车和乘客,教师和学生,书架和书)
聚合:一种强关联关系,表示“拥有”关系或整体与部分的关系;通常用于将不同的对象通过聚合关系形成一个整体,即形成了“部分-整体”的层次结构,eg:汽车、电脑、微波炉;
组合:一种强的多的“拥有”关系,整体和部分的生命周期是一样的,eg:人和四肢、树和树叶、公司和部门

在Java中聚合和组合从语法上是不能区分的,需要考察类之间的逻辑关系

依赖关系:依赖总是单向的,表示一个类依赖于另一个类的定义。(eg人可以买房或买车)

这里写图片描述

数据流图:DFD
实体-关系图:ERD
数据字典:DD
建模方法=建模语言+建模过程;
建模语言定义了用于表示设计的符号(通常是图形符号)【标准建模语言UML是一种建模语言,而不是一种方法,它统一了面向对象建模的基本概念、术语、及其图形符号,为人们建立了便于交流的共同语言】;
建模过程描述进行设计所需要遵循的步骤。
UML统一了Booch,OMT和OOSE等方法中的基本概念:
用例图从OOSE来;
类图从OMT和Booch等方法来;
实现图(构件图 和配置图)从Booch的模块图和过程图来

UML根据软件产品的**体系结构**对软件进行分层

这里写图片描述
这里写图片描述

用例视图:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39885282/article/details/81161236