0%

软件建模复习技术

题型及分值分布:
一、 填空题(共12分,每题1分)
二、 单选题(共20分,每题1分)
三、 判断题(共20分,每题2分)
四、 简答题(共24分,每题8分)
五、 设计题 (共24分,每题8分)

重点复习

uml概述

uml的特点(理解)[选择、填空]

uml的特点:

  • (1)统一标准
    • 提供标准的面向对象的模型元素的定义和表示。
  • (2)面向对象
    • 西区面向对象技术领域其他流派的长处。剔除了他们的缺点。
  • (3)可视化、表示能力强
    • 表示系统的逻辑模型或实现模型,用于复杂软件系统的建模。
  • (4)独立于过程
    • 独立于特定的软件开发过程。
  • (5)易掌握、易用
    • UML概念明确建模表示法简洁明了,易于掌握使用。

uml构造块中的关系类型包括关联、依赖、泛化、实现

UML中事物是模型中基本元素的抽象,关系把事物结合在一起,图聚集了相关事物

uml的基本构造块:

  • 事物: 语言描述的基本要素
    • 事物是UML语言的基本构成要素,包括:
      • 结构事物: 语言的静态构成要素,有7种
        • 1
        • 2
      • 行为事物: 语言的动态构成要素,表示事物的变化和状态
        • 3
        • 4
      • 分组事物: 对模型中事物分组组织的要素
        • 5
      • 注记事物: 对模型中事物标注和解释
        • 6
  • 关系: 语言要素之间的关系
    • 关联
      • 本指事物之间存在的固有的牵连关系,在UML中,是对具有共同结构特征、关系和语义的对象之间相互链接的描述。
      • 7
    • 泛化
      • 在UML中,描述事物之间的一般和特殊关系。特殊事物具有并继承一般事物的特性。
      • 8
    • 依赖
      • 两个要素之间的因果关系,其中一个要素(独立要素)发生变化会影响另外一个要素(依赖要素)的语义。
      • 9
    • 实现
      • 描述类元之间的语义关系。一种是接口与实现它的类和构件;另一种是用例和实现它们的协作。
      • 10
  • : 语言所能够提供的图形类型

uml的4类公共(通用)机制是规格说明、修饰、通用划分、扩展机制

uml的公共机制有:

  • 规格说明
    • UML允许对每一个用图形符号表示的模型元素给出详细的文字语义说明。使可视化视图和文字视图分离。
    • 售书处理用例的说明↓
    • 11
  • 修饰
    • 表示 : 将图形修饰附加到UML图形的模型元素上,通常写在相关元素旁边
    • 作用 : 为图形中的元素增加语义
    • 例:当一个元素代表一个类型时, 名称用粗体表示;
      代表一个类型的实例时, 名称用下划线表示;
      代表接口时,名称用斜体表示。
    • 12
  • 通用划分
    • 类型-实例
      • 定义 : 描述了一个通用描述符与单个元素之间的对应关系。通用描述符成为型元素(相当于类),单个元素是实例元素(相当于类的实例)。
      • 表示 : 使用相同的表示, 但名称的表示不同。实例元素名称有下划线,且名称后加上冒号和通用描述符。
      • 例 : 类与对象相当于一种型-实例划分, 数据类型与数据值
    • 接口-实现
      • 强制规范与实现的约定,接口声明了一个规定了服务的约定,实例负责执行接口的全部语义定义并实现该项服务。
  • 扩展机制
    • ① 版型:用来扩展UML的词汇,使用户可以从已经存在的模型元素中派生出新模型元素。
    • ② 标记值:用来扩充模型元素的属性
    • ③ 约束:约束扩充模型的元素的语义,使用户可以添加新规则或修改已存在的规则

uml的扩展机制(版型、标记值、约束)

uml的扩展机制:

  • ① 版型
    • 用来扩展UML的词汇,使用户可以从已经存在的模型元素中派生出新模型元素。
    • 例1,把“包” 构造为“子系统”类型。
    • 13
    • 例2,参与者是一个版型化的类。
    • 14
  • ② 标记值
    • 标记值用来扩充模型元素的属性。
    • 例如,{location=client}指出类student驻留在客户机结点上。
    • 15
  • ③ 约束
    • 约束扩充模型的元素的语义,使用户可以添加新规则或修改已存在的规则。约束用{ }描述。
    • 例如,{subset}指出领导是成员的子集。
    • 16

uml的4+1视图的使用者及作用。

UML1.x共定义了9种图,UML2.0扩展为14种:
●用例图 ●状态图
●类图 ●活动图
●对象图 ●组合结构图
●顺序图 ●构件图
●协作图 ●部署图
●时序图 ●包图
●交互概览图

视图(views) :

​ 一个系统应从不同的角度进行描述,从一个角度观察到的系统称为一个视图(view)。
​ 视图由多个图(Diagrams)构成,它不是一个图表(Graph),而是在某一个抽象层上,对系统的抽象表示。
​ 如果要为系统建立一个完整的模型图,需定义一定数量的视图,每个视图表示系统的一个特殊的方面。另外,视图还把建模语言和系统开发时选择的方法或过程连接起来。  

18

用例视图(Use Case View)

使用者 : 全部人员
作用 : 描述用户需要的系统功能。用例模型列出系统中的用例和参与者, 显示哪个参与者执行哪个用例
核心 : 用例视图是其它四种视图的核心, 其作用是驱动其它视图开发

逻辑视图(Logical View)

使用者 : 设计人员, 开发人员
实现需求 : 系统功能
作用 : 揭示系统的内部设计和协作情况, 表示系统静态结构和动态行为。

主要用来描述系统的功能需求,反应出系统内部是如何组织和协作来实现功能的,不涉及具体的编译即输出和部署。
静态结构 : 描述类, 对象, 关系
动态行为 : 描述对象之间通过发送消息产生的动态协作

实现视图(Implementation View)

使用者 : 程序员
作用 : 描述软件的静态结构, 显示代码之间的组织方式, 通过系统输入输出关系的模型图和子系统图,来描述实现模块之间的依赖关系.

进程视图(Process View)

使用者 : 系统集成.
作用 : 显示系统并发性, 解决在并发系统中存在的通信和同步问题。该视图显示进程, 线程, 对象等运行时状态, 以及相关同步, 并发, 通信等问题

进程视图与实现视图关系 : 实现视图显示的是编译时的静态关系, 进程视图显示的是编译完之后运行时的对象、线程、进程之间的交互问题

部署视图(Deployment View)

使用者 : 运维
作用 : 软件到硬件的映射,把目标程序及其依赖的运行库和系统软件部署到物理机器上,以及说明部署机器对系统环境的要求。部署视图综合考虑软件系统和整个IT系统相互影响的架构视图。
部署视图与进程视图关系 : 进程视图关注程序的动态执行情况,部署视图关注程序的静态位置

uml的应用领域不仅限于软件系统建模,也可以应用在其他领域系统的建模。

用例图

用例图的概念(主要描述系统的功能及功能间的关系,是整个开发过程的开发依据,用例是与实现无关的关于系统功能的描述。是一种功能分解的技术,并没有使用面向对象思想。

用例图用来描述软件需求模型中的系统功能,通过一组用例可以描述软件系统能够给用户提供的功能。

用例图可以作为整个系统开发过程中的开发依据,指导和驱动其他模型。

参与者与用例间的关系。

每个参与者可以参与一个或多个用例。
一个用例可以由多个参与者使用。

用例图中的关系的类型及分析判断及图例(泛化、包含和扩展)

包含关系:

  • 两个用例之间,一个用例(基本用例)的行为要用到另外一个用例(包含用例)的行为。
  • 将若干用例的相同动作,提取出来单独构成一个用例。这个用例可以重用
  • 特点:由基本用例决定是否调用,包含用例对调用对象一无所知,且不参与其中的选择判断。
  • 使用场景 :
    • 公用用例 : 为了复用用例, 当多个用例有重复的功能,可以将重复的功能分解到另一个用例中,将这个分解出来的用例与原来的多个用例建立包含关系。
    • 分解用例 : 为了简化用例, 当一个用例包含的功能太多的时候,需要将用例分解成一个个子用例,用例之间建立包含关系。
  • 图形表示:
    • 19
    • 20

扩展关系:

  • 扩展关系表示基本用例在扩展点要增加新的行为或功能,以扩展到新用例。
  • 当在某个现有用例中插入“可选”行为或“异常”行为时,使用扩展关系
  • 扩展用例总是在一个或多个扩展点处来扩展基本用例,或处于特定条件下, 才扩展基本用例。
  • 使用情形 :
    • a.两个用例相似但不完全相同时
    • b.当要对多个额外情况逐一建模时,使用扩展关系,用一个独立的用例替代每个额外的情况
    • c.如果用例涵盖了所有的情况变化,则该用例将会变得十分复杂,应该考虑使用扩展关系
  • 21
  • 22

包含关系与扩展关系的区别:

  • ①两个关系箭头方向相反.包含关系的箭头由基用例指向包含用例;扩展关系的箭头由扩展用例指向基用例。

  • ②在基用例执行的过程中,被包含的用例一定要被执行;扩展关系如果条件不为真,扩展用例可以不执行。

  • 包含关系中的基用例必须依赖被包含的用例,它不能独立存在;扩展关系中的基用例可独立存在。

泛化关系:

  • 泛化代表一般与特殊的关系。子用例表示父用例的特殊形式。
  • 父用例表示通用行为序列,通过插入额外的步骤,子用例特化父用例。
  • 表示方法↓
    • 23
    • 24
    • 25

关系的比较:

26

用例图的绘制

绘制用例图的注意事项:

  • (1)用主动语态描述用例
          强调动作的施加对象
    
  • (2)利用事件/响应描述用例
          体现参与者与系统的交互
    
  • (3)用例文档中可以使用其他UML图

顺序图和协作图

交互图通常用于描述一个用例的行为,显示该用例中所涉及的对象和这些对象之间的消息传递情况

顺序图是显示对象之间交互的图,描述了对象之间传送消息的时间顺序。

顺序图中的消息类型(简单、异步、同步、返回、返身,阻止、超时)含义,图形表示。

顺序图包含4个元素:

  • 对象(Object)
  • 生命线(Lifeline)
  • 消息(Message)
  • 控制焦点(激活)(Activation)

消息的种类:

  • 简单消息

    • 表示普通的控制流。只表示控制如何从一个对象传递给另一个对象,而没有描述通信的任何细节。
    • 主要用于通信细节未知或者无需考虑通信细节的场合。即主要用于不知道消息是同步还是异步的场合,但通常表示异步消息
    • 图形表示
      • 27
  • 异步消息

    • 发送者将该消息发送给接收者后,无需等待接收者消息处理的完成而继续执行。异步消息的接收者和发送者是并发工作的。
    • 28
  • 同步消息(调用消息)

    • 调用消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息接收者放弃或返回控制。
    • 调用对象的接收者必须是一个被动对象。应该有一个配对的返回消息,但为了图的简洁,可以省略。
    • 图形表示
      • 29
  • 返回消息

    • 是接收对象接收到消息之后,给发送对象返回的消息,通过该应答消息告诉接收对象,已经成功接收到发送的消息。
    • 30
  • 反身消息

    • 消息发送方和消息接受方是同一个对象
    • 31
  • 阻止消息

    • 消息发送者发出消息给消息接收者,如果接收者无法立即接受消息,则发送者放弃这个消息
    • 32
  • 超时消息

    • 消息发送者发出消息给消息接收者并按指定时间等待,如果接收者无法在指定时间内接受消息,则发送者放弃这个消息
    • 33

协作图中链是关联的实例,当一个类与另一个类之间有关联时,这两个类的实例之间就有链,一个对象就能向另一个对象发送消息。要在协作图中增加消息,必须先建立对象之间的链接。消息显示在链的旁边,一个链可以有多个消息

协作图用于强调发送和接受消息的对象之间的结构组织的交互图,显示对象、对象之间的链接以及对象之间的消息。

顺序图一般完成一个任务,执行用例的一条路径,而协作图可以完成多个任务,执行多条路径。

建立协作图的步骤(8步)

建立协作图的步骤:

  • (1)确定交互过程的上下文。
  • (2)识别参与交互过程的对象。
  • (3)如果需要,为每个对象设置初始特性。
  • (4)确定对象之间的链,以及沿着链的消息。
  • (5)从引发这个交互过程的初始消息开始,将随后的每个消息附到相应的链上。
  • (6)如果需要表示消息的嵌套,则用Dewey十进制数表示法。
  • (7)如果需要说明时间约束,则在消息旁边加上约束说明。
  • (8)如果需要,可以为每个消息附上前置条件和后置条件。

类图和对象图

类的定义,各个部分(名称、属性、操作)的命名规则及含义。

34

类的元素:

  • 1 名称
    • ① 名词或名词短语(动词或动词短语表示控制类)
       例如:人,桌子,图形,汇总
      
    • ② 尽可能用明确、简短,业务领域中事物的名称,
      避免使用抽象、无意义的名词
       例如:帐户,订单,事物
      
    • ③ 用英文,第1个字母大写
      例如:Shape, Person, CheckingAccdount
      
    • ④ 可分为简单类名,带限定名的类名
      例如: CheckingAccdount
                  Banking::CheckingAccdount
      
  • 2 属性
    • 用来描述该类的对象所具有的静态特征。
    • 一个类可以拥有三种类型的信息:
      • 对象必须了解自己,即他有自己的结构和当前的状态
      • 对象必须了解与其它对象的关系
      • 对象有时还要监视特定的信息
    • 类可以有任意数目的属性,也可以没有属性。
    • 在UML中,类属性的语法为:
      • [可见性] 属性名 [:类型] [多重性] [=初始值] [{特性}]
    • (1) 可见性
      • 35
    • (2) 属性名
      • 36
    • (3) 类型
      • 37
    • (4)多重性
      • 38
    • (5)初始值
      • 39
    • (6)特性
      • 40
    • (7)类作用域的属性
      • 41
  • 3 操作
    • 用于修改、检索类的属性或执行某些动作。
    • 一个类可以有任意数量的操作或者根本没有操作
    • 返回类型、名称和参数一起被称为特征标记。
    • 在同一个类中,操作的名称不必是惟一的,但特征标记必须是惟一的。
    • 在UML中,类操作的语法为:
      [可见性] 操作名 [(参数列表)] [:返回类型] [{特性}]
    • (1) 可见性
      • 42
    • (2) 操作名
      • 43
    • (3) 参数表
      • 44
    • (4) 返回类型
      • 45
    • (5) 特性
    • (6) 类作用域的操作
      • 46
  • 4 职责
  • 5 约束
  • 6 注释

类之间的关系(关联、聚集、组合、依赖、实现)概念含义,区别,及应用

类之间的关系:

  • 1 关联关系

    • 模型元素间的一种语义联系,是对具有共同的结构特性、行为特性、关系和语义的链的描述
    • 47
    • 48
    • 一个完整的关联包含三部分:类之间的关联直线和两个关联端点。端点是一个元类,有自己的属性(多重性、约束、角色)。
    • 49
    • (1) 名称(Name)
      • 50
    • (2) 角色(Role)
      • 51
    • (3) 多重性(Multiplicity)
      • 52
    • (4) 关联类(Association Class)
      • 53
    • (5)关联的约束
      • 54
    • (6)限定关联
      • 55
      • 限定符是关联的属性,而不是类的属性
      • 限定符概念在进行软件设计时非常有用,如果一个系统需要根据关键字对数据集进行查询,则经常用到限定关联。
      • 引入限定符的一个目的是把多重性从n降为1或0..1,这样如果做查询操作,则返回的对象最多是一个,而不是集合
    • (7)关联的种类
      • 自反关联(一元关联)
        • 57
      • 二元关联
        • 58
      • N元关联(多元关联)
        • 59
    • (8) 导航性
      • 一个类的属性中有另一个类。
      • 60
      • 61
  • 2 聚集关系

    • 一种特殊类型的关联。
      表示整体与部分关系的关联。
      需求分析中的“包含”、“组成”、“分为……部分”
      作为整体方的类的重数不是1,则作为聚集
    • 62
    • 63
    • 64
    • 65
  • 3 组合关系

    • 聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合
      整体拥有各个组成部分,部分与整体共存,整体不存在,则部分随之消失
      整体不仅控制着部分对象的行为,而且控制着部分对象的创建和结构。
    • 66
    • 68
  • 4 泛化关系

    • 泛化具有抽象、概括和超越的意思。
      泛化指抽取事物的共性特征,形成超越特殊事物而具有普遍意义的一般事物的方法。
      泛化的反面是特化,意思是对一般事物的具体化、特殊化和细化。
      泛化和特化反映事物之间的特殊与一般关系。可以用于类、用例以及其他模型元素。
    • 69
    • 70
  • 5 依赖关系

    • 表示一个模型元素在其语义或结构上依赖于另外一个元素。
      一个模型元素是独立的,另一个不是独立的。非独立的模型元素依赖于独立模型元素,独立模型改变将影响依赖于其的非独立模型。
      应用场合:
      一个类向另一个类发送消息
      一个类是另一个类的数据成员
      一个类作为另一个类中操作的参数
      关联、实现和泛化在语义上都是依赖关系。

    • 如果类A和类B之间有关联关系,那么A和B之间就有依赖关系了,但如果两个类间有关联关系,那么一般只表示出关联关系即可,不用再表示依赖关系。

      依赖关系不生成专门的代码。
      与泛化关系类似,依赖关系也不仅仅用于类间关系,其他建模元素如用例间也有依赖关系。

    • 71

    • 关联关系与依赖关系区别:

      • 72
  • 6 实现关系

    • 规格说明和其实现之间的关系。类和接口之间的关系是实现关系,表示类实现接口提供的操作。显示一个类引用另一个类。
      客户必须至少支持提供者的所有操作。
      泛化和实现都可以将一般描述与具体描述联系起来:
      泛化将同一语义层上的元素连接起来,并且通常在同一模型内。
      实现将不同语义层内的元素连接起来,并且通常建立在不同的模型内。

聚集关系与组合关系区别

聚集关系也称“has-a”关系,组合关系也称“contains-a”关系。
聚集关系表示事物的整体/部分关系的较弱的情况,组合关系表示事物的整体/部分关系较强的情况。
在聚集关系中,代表部分事物的对象可以属于聚集对象,也可以为多个聚集对象所共有,而且可以随时改变他所从属的聚集对象。代表部分的事物与聚集事物对象的生存期无关。在组合关系中,代表整体事物的对象负责创建和删除代表部分事物的对象,代表事物的对象只属于一个组合对象,一旦删除组合对象,也就删除了相应代表部分事物的对象。

类间关系的总结

聚集和组合关系表达整体和部分关系
泛化关系表达一般和特殊关系
依赖、关联表示语义关系
在描述语义上相互有联系的类之间的关系时,首先考虑泛化关系和关联关系,当类之间的关系不宜于这两种关系,考虑依赖关系。

理解掌握关联关系(名称、角色、多重性、关联类、限定关联,关联的种类)

关联关系

模型元素间的一种语义联系,是对具有共同的结构特性、行为特性、关系和语义的链的描述

47

48

一个完整的关联包含三部分:类之间的关联直线和两个关联端点。端点是一个元类,有自己的属性(多重性、约束、角色)。

49

(1) 名称(Name)

50

(2) 角色(Role)

51

(3) 多重性(Multiplicity)

52

(4) 关联类(Association Class)

53

(5)关联的约束

54

(6)限定关联

55
限定符是关联的属性,而不是类的属性
限定符概念在进行软件设计时非常有用,如果一个系统需要根据关键字对数据集进行查询,则经常用到限定关联。
引入限定符的一个目的是把多重性从n降为1或0..1,这样如果做查询操作,则返回的对象最多是一个,而不是集合

(7)关联的种类

  • 自反关联(一元关联)
    • 57
  • 二元关联
    • 58
  • N元关联(多元关联)
    • 59

      (8) 导航性

  • 一个类的属性中有另一个类。
  • 60
  • 61

派生属性与派生关联概念识别应用

是指可以从其他属性和关联计算推演得到的属性和关联。
使用他们是为了增强类图的性能,方便于在复杂的类图中寻找所需信息。
表示:加上“/”
在生成代码时,派生属性和派生关联不产生代码

边界类、控制类、实体类的定义和图形表示。

边界类

系统与外界交互的类,如窗体、对话框、报表、表示通讯协议的类。
边界类是系统内对象与系统外参与者的联系媒介。

图形表示:

73

通过用例图可以确定边界类
每个actor/use case对至少要有一个边界类,但并非每个actor/use case对都要生成唯一边界类,例如多个actor启动同一个use case时,可以用同一个边界类与系统通信。

实体类

定义:实体类保存要放进持久存储体的信息。是问题域中的核心类,从客观世界的实体对象抽象出来的。

83

控制类

用于协调边界类和实体类之间的交互。

74

其他类并不向控制类发送很多消息,而是由控制类发出很多消息

类图和对象图的区别

75

类图的绘制,(类定义,属性,操作,关系的应用)

状态图和活动图

状态图标包含两部分内容名称+内部转移(入口动作、出口动作、内部转移)

状态图标一般分为两个部分:

  • 名称
  • 内部转移
    • 入口动作
    • 出口动作
    • 内部转移

状态图的初态与终态

初态:

  • 初态标志出对象的创建状态,它是一个伪状态,因为它不具备真实状态所具有的特征,但它使得状态图更加清晰
    初始状态代表状态图的起始位置,只能作为转换的源,而不能作为转换的目标。
    初始状态在一个状态图中只允许有一个。
  • 76

终态:

  • 表示对象生命周期的终点。在该点对象的状态不再发生迁移。
    终止状态是模型元素的最后状态,是一个状态图的终止点。
    终止状态只能作为转换的目标,而不能作为转换的源。
    终止状态在一个状态图中可以有多个。
  • 77

一个状态图只能有一个初态,但可以有多个终态或没有终态.

状态图的绘制

建模步骤:

  • 找出适合用模型描述其行为的类。
    确定对象可能存在的状态。
    确定引起状态转换的事件。
    确定转换进行时对象执行的相应动作。
    对建模的结果进行相应的精化和细化。

78

活动图的转换不需要特定事件的激发,一个动作状态执行完后自动转换到另外一个状态。

理解泳道的概念。

泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织,通常为对象。
泳道区分了负责活动的对象,明确地表示了哪些活动是由哪些对象进行的。
每个活动只能明确地属于一个泳道。
泳道用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道上方可以给出泳道的名字或对象(对象类)的名字,该对象(对象类)负责泳道内的全部活动。
泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。

活动图的作用。

活动图的作用:

  • 对系统工作流程建模
    • 工作流:是一个良好定义的动作序列,执行时将产生一个可观察的值,或者产生一个个体或实体的对象。
  • 对算法流程建模
    • 描述算法的每一个步骤

活动图用于描述系统的工作流程和并发行为。

活动图用于简化描述一个过程或操作的工作步骤。例如,对软件开发过程建模;对求Fibnacci数列的操作进行建模。

活动图可看作状态图的特殊形式。一个活动结束后立即进入下一个活动而不需要事件触发活动的转移。

活动图的绘制

79

80

构件图、部署图(不考画图)

构件是系统中遵从一组接口并提供其实现的物理的、可替换的部分,是定义了良好接口的软件模块,如源代码、二进制代码、可执行文件以及动态连接库等。

构件类型理解并能进行判断(部署构架、工作产品构件、执行构件)

部署构件

DLL文件、exe文件、COM+文件、CORBA对象、EJB、动态Web页、数据库表.

81

工作产品构件

源代码文件、数据文件

82

执行构件

系统执行后得到的构件

部署图中的结点有两种类型:处理机和设备。

包图(不考画图)

每个包必须有一个与其他包相区别的名称。

两种形式:简单包名和路径包名。

包拥有的元素:类、接口、构件、结点、协作、用例、图以及其他包。

一个模型元素不能被一个以上的包所拥有。

包中可以含有其它子包

包的可见性类型(公有的、私有的、受保护的)

包间的关系(访问和导入依赖、泛化)