软件建模体现了软件设计的思想,在需求和实现之间架起了一座桥梁,通过模型指导软件系统的具体实现。模型并不是软件系统的一个完备表示,而是所研究的系统的一种抽象。软件建模通过不同的视角去描述一个系统。

 

软件建模视角:外部视角,交互视角,结构化视角,行为视角。

软件建模方法:结构化方法,面向对象方法,基于构建方法,面向服务方法,面向方面方法,模型驱动方法,形式化方法。

UML特点:面向对象,可视化,表达能力强,独立于过程,独立于程序设计语言,易于掌握使用。

 

UML内容组成:

事务:结构事务,行为事务,组织事务,辅助事务。

关系:关联,依赖,泛化,实现。

图:静态图(用例图,类图,对象图,组件图,部署图),动态图(顺序图,合作图,状态图,活动图)。

 

UML 4+1视图:

逻辑视图:类图,对象图。

实现视图:组件图。

部署视图:部署图。

行为视图:顺序图,合作图,状态图,活动图。

用户视图:用例图。

 

UML在软件开发流程中的应用:

需求分析:用例图。

概要设计,详细设计:类图,对象图,合作图,顺序图,状态图,活动图。

编码阶段:无

测试:类图,组件图,部署图。

 

视角和类图:

交互化视角:用例图。

结构化视角:类图。

行为视角:顺序图,活动图,状态图。

 

用例图包含关系:

Include:包含也可以叫Use,表示本用例会用到被包含的其他用例,被包含的用例是可以被重用的。

Extend:扩展用例是可选的,在特定场景下可以补充基础用例,降低基础用例的复杂性。

Generalization:泛化体现了父子关系,表明存在派生和继承。

 

类图包含关系:

实现(Realization):是一种类与接口的关系,表示类是接口所有特征和行为的实现。例如:借阅者能查找书籍。

依赖(Dependency):是一种使用的关系,有单向依赖和双向依赖,但避免使用双向依赖。例如:借阅者查找结果依赖标题。

泛化(Generalization):是一种继承关系,指定了子类继承父类的所有特征和行为。例如:借阅者是老师或者学生。

关联(Association):是一种拥有的关系,它使一个类知道另一个类的属性和方法。例如:借阅者的借阅记录或预约记录。

聚合(Aggregation):是整体与个体的关系,可以理解成把个体聚集在一起。例如:借阅者的多条借阅记录。

组合(Composition):是整体与局部的关系,整体的对象负责代表局部的对象的生命周期,可以理解成整体是由局部组成的。例如:借阅记录必须要有相关书籍信息。

类图关系连线的箭头,指向内容和范围较小的类

 

图片待补充

 

用例图描述系统在干什么。动态模型是描述系统的功能是如何完成的,用顺序图、活动图和状态图从不同的角度来描述对象和对象之间的交互。

 

动态图作用和场景:

顺序图:强调消息时间顺序的交互图。描述复杂的多对象间交互。并发、分支过多的场景会影响可理解性。

活动图:用于对目标对象计算流程和工作流程建模。描述涉及到复杂的活动步骤的用例。特别并发、分支等场景。

状态图:描述了系统元素的状态条件和响应,它反映了类的对象可能具有的状态,以及引起状态变化的事件。涉及到复杂的状态变化的场景,也适用于并发场景,如网络连接的会话状态等。状态图仅用于具有下列特点的类:具有若干个确定的状态,类的行为在这些状态下会受到影响变为其他状态。