目录
2 统一建模语言UML
2.1 软件建模简介
2.1.1 什么是模型
·模型(model):
模型是用某种媒介对相同媒介或其他媒介里的一些事物的表现形式(对事物的抽象,帮助人们在创建一个事物之前可以有更好的理解)
·建模:建立模型的过程
·目的:加入了系统的一个表示,以精确一直的方式描述系统,是的系统的使用更加容易
2.1.2 建模的重要性
·建模可以帮助理解正在开发的系统(基本理由),帮助开发者缩小问题的范围,每次着重研究一个方面,进而对整个系统产生更加深刻的理解。
·建模对一个系统主要有以下几点作用:
(1)捕获和精确表达项目的需求和应用领域的知识,以使全部涉众能够理解并达成一致
(2)完成系统设计
(3)分离需求与具体实现细节
(4)帮助生成有用的工作产品
(5)方便研究多种解决方案
(6)全面把握复杂的系统
2.1.3 建模的基本原理
·选择创建什么模型对如何解决问题和如何形成相应解决的方案意义深远
·可以在不同的层次级别上表示不同模型
·最好的模型总是与现实世界联系密切
·单个模型或视图是不充分的
2.2 UML简述
·UML是一种语言,用于表达和交流
·UML是一种可视化语言
·UML提供了对图形模型的准确的、无歧义的、完整的详细描述
·UML是一种用于构造的语言
·UML是一种用于文档化的语言
2.3 UML的发展历史
2.3.1 UML的出现背景(略)
2.3.2 UML的诞生及其标准化(略)
2.3.3 UML2规范(略)
2.4 UML的目标与应用范围
2.4.1 UML的目标(意义)
·为建模者提供可用的、富有表达力的、可视化的建模语言,以开发和交换有意义的模型
·提供可扩展性和特殊化机制以延伸核心概念
·支持独立于编程语言和开发过程的规范
·为理解建模语言提供正式的基础
·推动面向对象建模工具市场的成长
2.4.2 UML的应用范围
·UML以面向对象的方式来描述系统,最广泛的应用是对软件系统进行建模,但同样适用于许多非软件系统领域的系统。
·理论上,任何具有静态结构和动态行为的系统都可以使用UML进行相应建模。
·UML应用于大多数软件系统的开发过程是,从需求分析阶段到系统完成后的测试阶段都起到重要作用:
(1)需求分析阶段:通过用例捕获需求。
(2)分析和设计阶段:通过类和对象等主要概念及其关系建立静态模型,对类、用例等概念之间的写作进行动态建模。
(3)开发阶段:将设计的模型转化为编程语言的实际代码,指导并减轻编码工作。
(4)测试阶段:用UML图作为测试依据。
4 UML概念模型
4.1 构造块(构造元素)
·构造块(building blocks)是UML的基本建模元素,用于表达的语言元素,是来自现实世界中的概念的抽象描述方法。
·构造块包括:事物(thing)、关系(relationship)、图(diagram)
4.1.1 事物
·事物是构成模型图的主要构造块,代表了一些面向对象的基本概念。
·事物是对模型中关键元素的抽象体现。
·事物的四种类型:
(1)结构事物:作为UML模型的静态部分,定义了业务或软件系统中的某个概念元素或物理元素,用于描述概念元素或物理元素。
常见结构事物:类、接口、用例、协作、主动类、组件、结点
(2)行为事物:(动作事物)UML模型的动态部分,行为元素是用来描述事物之间的交互或事物的状态变化,用于描述UML模型中的动态元素。
常见行为事物:交互、状态机、活动
(3)分组事物:(组织事物)UML模型的组织部分,是UML对模型中各种组成部分进行事物分组的一种机制,用来组织系统设计。
常见分组事物:包、其他基于包的扩展十五年(子系统、层等)
(4)注释事物:(辅助事物)UML模型的解释部分,用来描述、说明和标注模型的任何元素。
4.1.2 关系
·关系是模型元素之间具体化的语义连接,负责联系UML的各类事物,构造出结构良好的UML模型。
·UML中有四种主要的关系:
·关联(association):
·描述不同类元的实例之间的连接。
·表示两个类之间存在某种语义上的联系,它是所有关系中最通用、语义最弱的关系
·特殊关联关系:
·聚集(聚合):整体与部分间的结构关系(松散)
·组成(组合):部分完全依赖于整体(紧密)
·依赖(dependency):
·有两个模型元素X、Y,如果元素X(独立元素)发生变化会影响另一个元素Y(依赖元素)的语义,则称元素Y依赖于元素X
·依赖关系:导入、包含、扩展
·泛化(generalization):
类似面向对象方法中的继承关系,是特殊到一般的一种归纳和分类关系。
·事物之间的一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象,即继承
·实现(realization):
· 描述规格说明和其实现的元素之间的连接的一种关系。
·描述了一组操作的规约和一组对操作的具体实现之间的语义关系。
·使用实现关系的两种情况:
·接口和实现接口的类或构件之间
·用例和实现用例的协作之间
扩展(Extension):
·扩展表示把一个构造型附加到一个元类上,使得元类的定义中包括这个构造型
·它是一种UML提供的底层的扩展机制,与用例之间的扩展(Extend)关系是不同的
·在UML中,用一个带箭头的实线表示
4.1.3 图
最常用的UML图包括:用例图、类图、顺序图、状态机图、活动图、包图、构件图和部署图。
·用例图(Use Case Diagram) :描述系统外部的参与者与系统的用例之间的某种联系,用于需求建模
·类图(Class Diagram) :显示系统静态结构,表示不同实体之间的关系
·对象图(Object Diagram):表示的是与其对应的类图的一个具体实例,即系统在某一时期或者某一特定时刻可能存在的具体对象实例以及它们相互之间的具体关系
·顺序图(Sequence Diagram) :显示了一个具体用例或者用例的一部分的一个详细流程 描述了对象之间动态的交互关系,着重体现对象间消息传递的时间顺序
·通信图(Communication Diagram):侧重于描述各个对象之间存在的消息收发关系(交互关系),而不专门突出这些消息发送的时间顺序
·状态机图(State Diagram) :表示某个类所处的不同状态及该类在这些状态中的转换过程 强调事件导致的对象行为
·活动图(Activity Diagram):用来表示两个或者更多的对象之间在处理某个活动时的过程控制流程
·构件图(Component Diagram) :提供系统的物理视图,它是根据系统的代码构件显示了系统代码的整个物理结构
·部署图(Deployment Diagram):用于表示该软件系统如何部署到硬件环境中,它是显示在系统中的不同的构件在何处物理地运行,以及如何进行彼此的通信
4.2 规则
·规则是对软件系统或业务系统中的某些事物的约束或规定。
·构造元素具有命名、范围、可见性、完整性和执行等属性。
(1)命名(Name):为事物、关系和图起名字
(2)范围(Scope):指基本元素起作用的范围,相当于程序设计语言中的变量的“作用域”
(3)可见性(Visibility):规定外界对该名字识别和使用的范围
(4)完整性(Integrity):保证事物正确、一致地相互联系
4.3 通用机制(公共机制)
·公共机制指适用于软件系统或业务系统中每个事物的方法或规则。
·公共机制包括规格说明、修饰、通用划分、扩展机制。
4.2.1 规格说明
·规格说明(Specification):模型元素的属性值
4.2.2 修饰
·修饰(Adornment) :基本元素的符号对事物最重要的方面提供可视化表示,要把元素的细节方面表示出来,必须通过对元素进行修饰
4.2.3 通用划分
·通用划分(General Division) 类和对象的划分:类是一个抽象而对象是这种抽象的一个实例化
·接口和实现的分离:接口是一种声明,实现则是执行声明
4.2.4 扩展机制
1.构造型(Stereotype)
·表示构造型的符号有三种:
2. 标记值(Tagged Value)
·标记值是用来为事物(元素)添加新特征的
·标记值的表现形式:{标记名=标记值}
·UML预定义标准标记值:documentation、location、 persistence、responsibility、semantics等
3. 约束(Constraint)
·扩展UML模型元素的语义,允许用户增加新的规则和修改现有的规则
·约束的表现形式:{约束的内容}
4.3 “4+1”架构
4.3.1 “4+1”架构的概念和组成
4.3.2 “4+1”架构要解决的问题
4.3.3 运用“4+1”视图方法进行软件架构设计
4.4 UML的对象约束语言(略)
4.5 小结
5 用例图
5.1 用例图的基本概念
5.1.1 用例图の概念及作用:
·用例图(use case diagram):表示一个系统中用例与参与者关系之间的图。
·作用:描述了系统中相关的用户和系统对不同用户提供的服务和功能,便于用户和开发人员消除歧义,达成共识
5.1.2 用例图の组成元素:
(1)参与者(Actor) :位于系统外部,使用系统或与系统交互中所扮演的角色
(2)用例(Use Case): 位于系统内部,系统提供给参与者的功能
(3)系统边界(Boundary) :表示正在建模系统的边界,边界内表示系统的组成部分,边界外表示系统外部
(4)关系(Relationship) :
·参与者与用例之间:关联关系
·参与者与参与者之间 :泛化关系
·用例与用例之间:依赖关系、泛化关系
5.2 参与者
5.2.1 参与者的概念
·参与者(Actor):存在于系统外部并直接与系统进行交互的外部实体的抽象。
·参与者的特点:
(1)参与者位于系统外部
(2)参与者是用户相对系统而言所扮演的角色
(3)参与者包括所有与系统进行交互的外部实体
·参与者的UML表示方法:
(1)图标表示法
(2)标签表示法
5.2.2 确定参与者
·如何确定参与者:
·为系统提供输入的人或事物
·接收系统输出的人或事物
·需要接入的第三方系统或设备
·时间是否会触发某些事件
·负责支持或维护系统中信息的人
·使用该系统或者与该系统交互的人、系统、设备等外部实体
·参与者の基本特征:
(1)位于系统边界之外
(2)直接且主动的向系统发出动作并获得反馈
5.2.3 参与者的泛化关系
·泛化关系(Generalization):描述了参与者之间特殊与一般的关系
·泛化关系的UML表示方法:
5.3 用例
5.3.1 用例的概念
·用例(Use Case)是对一组动作序列的描述,系统执行这些动作序列来为参与者产生一个可观察的结果值。
·用例的UML表示方法:
5.3.2 用例与参与者
·用例的确定:
考虑以下问题:
(1)参与者希望系统提供什么功能?
(2)参与者是否会读取、创建、修改、删除、存储系统中的某种信息?
(3)参与者是否会将外部的某些事件通知给系统?
(4)系统中发生的事件是否通知给参与者?
(5)是否存在影响系统的外部事件?
·参与者与用例的关系:
·关联关系(Association) :用于为参与者与用例建立连接
·关联关系的UML表示方法:
5.3.3 用例的特征
特征1:用例必须位于系统边界内部</