UML

统一建模语言(UML)

统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML使用面向对象设计的的建模工具,但独立于任何具体程序设计语言。

传统的瀑布开发
试图在遍程之前详细定义所有或者大部分需求。通常在遍程之前就创出完整的设计。试图在开始前定义“可靠的”计划或时间表。
局限:客户需求变化不能应对(但客户一般喜欢这种方式)
UML

迭代和增量式开发
在全部必要的功能全部实现之前,你我所实现的再重要的功能都无人买单,无法体现其 价值,因此迭代和增量式开发出现了。
UML

UML包括:事务,关系,图,扩展机制。
事务
结构:类、接口、构件、节点等等。
行为:交互、状态等。
分组:包、子系统等。
注释:–

关系
依赖、关联(聚合、组合)、泛化、实现


用例图、交互图(顺序图、协作图)、类图、活动图、状态图等。

扩展机制
Stereotype、Tagged Value、Constraint
特别说明UML图只是大概说明,并不是就是一定的。

UML图分类
1,静态模型图:描述系统的静态结构。
类图、对象图、组件图、部署图

2,动态模型图:描述系统的行为(简单来说就是流程图)。
用例图、活动图、时序图、协作图、状态图。

使用工具JUDE(请下载安装),如下:
UML
用例图:
是从软件需求分析到最终实现的第一步,它是从客户的角度来描述系统功能。
用例图包含三个组件:
参与者(actor):即是使用该系统的人或事务。用人性图表示。
用例(use case):代表系统的某项完整的功能。用椭圆表示。
关系:定义用例之间的关系,包含(比如删除、更新通常是数据库更新操作)、扩展、泛化。
基本的用例图:
UML
包含关系用例图:
UML
扩展的用例图:
UML
泛化用例图(继承关系):
UML

类图:
主要是用来显示系统中的类,接口以及他们之间的关系。
类图主要包含元素有类、接口和关系。
关系:关联关系、泛化关系、依赖关系、和实现关系。当然也有注释和约束。

数据类型表示:
+表示public、-表示private、#表示protected、~表示package
基本类图:类建好后,直接拖到建好的包即可。
UML
关联关系:一对多(单箭头),多对多(双箭头或直线)。下面第一排。
聚合关系:整体与部分的关系,部分可以脱离整体存在。空心菱形指向整体,箭头指向部分。下面第二排,前两个。
组成关系:是整体与部分的关系,但部分不能脱离整体二存在。实心菱形指向整体,箭头指向部分。第二排后两个。
UML

类图的正向工程和反向工程
正向工程:根据类图生成Java代码。通常是,先分析,设计,产生UNL图编写Java代码。
反向工程:根据java代码生成相应的类图。
点击工具即可看到。

组件图:
对于大型的项目而言,通常是多组可部署的组件组成。对于Java而言就是jar、war包等。组建图的作用就是显示系统中对其他软件组织的依赖关系。

时序图:用于描述对象之间的消息传递时间顺序,是显示对象交互的图,这些对象是按时间排序的。
时序图主要元素:对象(actor)、生命线(lifeline)、焦点控制(foucs of control)、消息(message)。
举例:
UML
协作图:可以和时序图相互转化。侧重点不同,时序图侧重于对象之间消息传递在时间上的先后关系,而协作图表达对象间的交互过程及对象间的关系关系。
UML
活动图:
UML

状态图:
通过建立对象的生命周期模型来藐视对象随时间变化的动态行为。