UML考试总结

第一章

1.UML模型由三个种类的十种图表示: 用例模型图:由用例图组成。 静态模型图:由类图、对象图、包图、构件图和配置图组成。 动态模型图:由顺序图、合作图、状态图和活动图组成。

2. UML软件开发过程的基本特征

以用例驱动开发过程,以体系结构为中心,以质量控制和风险管理为目标,采用反复(迭代、循环)、渐增式的螺旋上升式开发过程。

3.UML的五种视图:逻辑视图、构件视图、进程视图、配置视图、用例视图

4.什么是设计模式?

广义上讲,是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述; 狭义的讲,是对特定问题的描述或解决方案。

设计模式的基本要素:名称、问题、解决方案、模式效果。

第二章

1.用例图 ⑴用例模型从外部执行者的角度来描述系统的功能。

用例模型使得各方面人员在一个一致的概念体系下描述目标系统,从而有效的促进需求分析的实施。

用例模型图由若干个用例图构成。

⑵执行者(actor)

执行者是指在系统外部与系统交互的人或其他系统,它以某种方式参与了系统内用例的执行。

一个执行者可以启动多个用例,一个用例也可以被多个执行者启动。

执行者之间可以有继承关系;执行者代表一种角色而不是具体某个人,可以是一个其它系统。

⑶用例(usecase)

用例是系统所提供的一个功能(或者系统提供的某一特定用法)的描述。

UML中的用例的定义:系统所完成的一系列动作,能给特定执行者一个可观察到的结果值。 用例由执行者激活,并能提供给执行者确切的执行结果。

用例可大可小,但必须是对一个用户目标实现的完整描述,即描述一个与某个执行者相关的完整的功能。

用例只描述系统做什么,而不描述具体怎么做。

系统中全部的用例就描述了系统的全部功能。

用例的特征:响应性。回执性。完整性。 (判断用例完整性的标志:用例能向执行者提供返回的结果)

2.活动图

⑴活动图用来表示完成一个操作所需要的活动,或者一个用例场景的活动。是一种流程图,描述了活动的序列,即系统从一个活动到另一个活动的控制流。

活动图可以用于描述系统中某个特定的功能(或用例),特别适用于描述动作流和并发处理行为。

在需求分析中,经常用活动图来进一步深入描述相对重要的用例的具体功能实现流程。 ⑵泳道(Swimlane)

一张活动图可被划分为若干个矩形区域,每个矩形区为一个泳道,泳道名(唯一的)放在矩形区的顶端。

泳道将活动图中的活动状态分组,每一组表示负责那些活动的业务组织。泳道区分了活动的不同责任,并清晰的表明了活动在哪里执行。

⑶对象、对象流

可将泳道指定给对象,该泳道中的全部活动即为该对象必须履行的活动。泳道标明了哪些对象进行了哪些活动。

对象可作为活动的输入或输出,对象与活动的关联关系用对象流表示,即带箭头的虚线。 ⑷同步活动的描述

在活动图中,当存在两个或多个并发运行的控制流或线程时,可使用并发分劈将路径分成两个或多个并发流,此时,需再使用并发接合将这些并行动作(或活动)状态合并成一个。 活动图中分劈和接合是通过使用同步杆实现的。

并发分劈和并发接合要成对出现,并且接合之前,并行的动作(或活动)必须全部完成。 并发分劈和并发接合可以嵌套使用。

第三章

1.类

类是对一组具有相同属性、操作、关系的对象的描述。

类的图符可表示为短式和长式两种。

可见性 属性名[多重性]:类型[=初始值] 可见性 操作名([参数表]):返回列表[{特征描述}]

(1)可见性:

(2) 多重性:表示该类的实例对象具有的该属性的个数;为任选项,用多值表达式表示,格式为:

[低值..高值](缺省只有一个)。例如:course[0..*]:course

(3) 操作中的参数的格式:参数名:类型[=初值]

(4) 操作的返回消息可以是多个,用逗号隔开,每个返回消息的格式:

返回名=类型 (若仅有一个返回消息则无需返回名)

2.类之间的关系

⑴关联关系

关联(association)是类之间的语义联系,代表类的对象(实例)之间的一组连接(称为链)。 关联可以是单向的,也可以是双向的。

? 关联名:通常都是动词或动词性短语。

? 关联的角色:关联两端的类可以某种角色参与关联,在关联某个类的一端可以写上

该类在关联中所扮演的角色。

? 关联的重数:关联的重数用于表示该类有多少个对象可以与对方一个对象连接,默

认值为1。

关联类:将类之间的关联定义成类,称为关联类。

关联类与关联之间由一条虚线连接,关联名就是关联类的名字。

⑵聚集关系

? 聚集(aggregation)表示类之间的整体与部分关系,是一种特殊的关联。

? 聚集分为共享聚集和组合聚集

共享聚集,是一般的聚集。关联的两端,即整体和部分间是弱的关系。 组合聚集,一种特殊的聚集关系,强调整体拥有部分,部分和整体生命期一致。

组合聚集中,整体端的重数为1。 图符:带实心菱形的实线,菱形位于整体端。

⑶继承关系

继承(Generalization)表示类间一般和特殊的关系。称一般类为父类;特殊类为子类。 子类继承父类的属性、操作和关联(公有的或保护的)。

图符:带三角形箭头的实线,箭头指向父类。

⑷依赖关系

依赖(dependency)表示两模型元素间的语义连接:一个是独立的模型元素(被依赖),另一个是依赖的模型元素,独立的模型元素的变化会影响依赖的模型元素。

图符:带箭头的虚线,箭头指向被依赖的元素。

⑸实现关系

实现(realize) ,也称细化,经常用于描述接口及其实现类间的关系。

图符:带三角形箭头的虚线,箭头指向被实现的类。

3.对象图

对象图是类图的一个实例,描述某一时刻一组对象(即类的实例)以及它们间的关系。 对象的图符与类的图符相同,也分为长式和短式两种。

对象和类的图符的区别:对象名:类名、每个属性有具体的值。

第四章

1.顺序图

顺序图(sequence diagram), 描述特定场景中,某个时刻,为完成某一功能,对象间按照时间顺序的消息交互。

顺序图适合于描述实时系统中的时间特性和时间约束。

2.顺序图组成:对象、生存线、激活期、消息

消息的标识格式:

[序号][警戒条件]*[重复次数][回送值表:= ]操作名(参数表)

其中,

1.序号:表示消息在对象间交互的时间顺序号。

2.[警戒条件]:选择项,为一布尔条件表达式。

3.*[重复次数]:选择项,表示消息重复发送的次数。

4.回送值表:以“,”区分的名字表列,分别表示完成指定操作后返回的系列值。可缺省。

5.操作名:必须是接收该消息的对象类角色中的操作名。

6.“()”内的参数表是以“,”号区分的实参表,传送给接收消息的对象中的某个操作。

3.消息的种类:

(1)简单消息:表示控制流。

(2)同步消息:它是一种嵌套的控制流。

(3)异步消息:它是异步控制流。

(4)返回消息:表示控制流从过程调用的返回。

4.顺序图中的消息表示

简单消息:类型未知,或与类型无关,也可是同步消息的返回。

同步消息:必有一个与同步消息配对的返回消息, 但是可以不画出.

5.对象之间同步消息的操作过程:

同步消息的发送者把进程控制传递给消息的接收者,然后暂停活动,等待消息的接收者放弃或返回控制;

同步消息的接收者执行所请求的操作,如果需要的话,可以把控制传递给另一个对象角色,请求做某个操作,并且当该操作完成后把控制返回给原来的同步消息的发送者; 同步消息的接收者也可以直接返回或发送信息给原来的消息发送者。

6.对象之间异步操作的过程:

异步消息的发送者通过发消息把信号传递给消息的接收者,然后继续自己的活动,不等待消息接收者返回信息或控制;

异步消息的接收者执行所请求的操作,操作完成后可以向异步消息的发送者返回信息,也可以不返回;

异步消息的发送者和接收者采用并发工作方式。

7.合作图

合作图(collaboration diagram), 描述系统各成分(即对象)如何协同工作,来实现系统的某个功能。

合作图描述对象及其之间的链接(关联的实例),以及链接的对象如何发送消息。

链接(或称链):是关联的实例,当一个类与另一个类之间有关联时,这两个类的实例之间就有链,一个对象就能向另一个对象发送消息。

(1)对象和消息:

与顺序图中的概念一致;区别在于:

对象在合作图中的位置没有限制; 合作图中的每一个消息必须包含顺序号(消息序号的嵌套可表示嵌套的消息)。

(2)链接:一条连接两个对象的实线。可在链接中表明对象扮演的角色。

第五章

1.活动图和状态图的比较

相同点:

a) 建模的图符基本一致。

b) 描述系统或对象在生存期内的状态或行为。

c) 可描述系统或对象在多进程操作中的并发行为。

d) 可用条件分支描述系统或对象的行为控制流。

? 不同点

a) 触发一个系统或对象的状态(活动)发生迁移的机制不同。

状态图:必须有事件触发才能发生迁移。

活动图:活动执行完毕自动发生迁移。

b) 描述多个对象共同完成一个操作的机制不同。

状态图:针对一个系统或某一个对象描述在其生存期内的行为、所经历的状

态序列、引起状态注意的事件以及相应的动作。

活动图:描述几个对象共同完成一个操作或用例实例所需的活动。

第六章

1.构件图

构件(Component)是系统中遵从一组接口且提供其实现的物理的、可替换的部分。

在UML码本身的结构。

构件图(Component diagram)显示一组构件以及它们之间的相互关系, 包括编译、链接或执行时构件之间的依赖关系.

2.构建图的建模元素

(1)构件 构件与类的区别:类是逻辑抽象, 构件是物理抽象。

构件是一个实际文件, 可以有以下类型: 源代码构件(编译时构件、工作产品构件):是实现一个或多个类的源代码文件,是开发工作的中间产品。 二进制构件(连接时构件):是源代码经编译产生的目标代码,如: DLL、COM+、CORBA、动态Web页、数据库表等。 可执行构件(运行时构件):是系统执行时使用的构件。

(2)接口

构件的接口:描述一个构件能提供服务的操作的集合,是一个有操作而无实现的类。 通过命名接口,可以避免在系统的各个构件中直接产生依赖关系, 有利于构件的维护、替换等.

3.配置图

配置图 (Deployment diagram),也称部署图,用来显示系统中结点的拓朴结构和通信路径,以及结点上运行的软构件等。 一个系统只有一个配置图。 并不是所有的系统都需要建立配置图,配置图通常用于描述网络环境下运行的分布式系统或嵌入式系统。

4.配置图基本建模元素

(1)结点

结点表示某种计算资源的物理(硬件)对象,包括计算机、外部设备(如打印机、读卡机、通信设备)等。

图符:三维立方体

(2)结点间的关联关系

结点之间的通信关联,表示结点间存在通信路径。

图符:直线。

 

第二篇:考试总结

应用举例1:n表示向左移动参数的个数,默认值为1。(例:movelab1)

应用举例2

$#: 命令行参数的个数;

$?: 前一个命令或函数的返回码,如果正常退出则返回0,反之为非0值;

$* :以“参数1 参数2 ... ” 形式保存所有参数;

$@: 以“参数1” “参数2” ... 形式保存所有参数; $$ :本程序的(进程ID号)PID;

$! :上一个命令的PID 。

(例:exer)

if语义表示:如果测试条件(test-condition)为真,则执行命令(commands1),否则执行命令(commands2) (iftest2)。 格式2 (iftest3)

编程题:查找/home/wyj/目录下是否存在给定文件 。(iftest4.sh) 编程题:写一个shell脚本程序来判断用户所输入的参数是否是一个整数。(pan.sh)

编程题:比较两个数大小 。(elif.sh)

编程题:判断一个文件是否是一个标准文件,如果是将其拷贝到/home/wyj目录下。 (

检查指定的文件是否存在并且可读

test -r /usr/fk/message

例2: 检查指定的文件是否为目录

test -d /usr/src/local/sendmail )

文件类测试条件

-r file 用户可读为真

-w file 用户可写为真

-x file 用户可执行为真

-f file 文件为标准文件为真

-d file 文件为目录为真

-e file 文件存在时为真

-c file 文件为字符特殊文件为真

-b file 文件为块特殊文件为真

-s file 文件大小非0时为真

f1 –nt f2 测试文件f1是否比文件f2更新

f1 –ot f2 测试文件f1是否比文件f2更旧

编程题:判断用户输入的是否是1-5的数字。

echo "enter a number from 1 to 5:"

read num

case $num in

1) echo "you enter 1" ;;

2) echo "you enter 2";;

3) echo "you enter 3";;

4) echo "you enter 4";;

5) echo "you enter 5";;

*) echo "error";;

esac

编程题:输入两个整数,根据选择的运算方式(加、减、乘、除)进行相应的运算。(case3.sh)

语义表示:如果变量值在列表中就执行一次循环,完成do到done之间的所有命令。 (fortest1.sh,fortest3.sh)

编程题:用for语句实现1+2+3+…+100。(fortest2.sh)

生成序列[1…LAST]

seq LAST

例如: seq 5 表示序列为1 2 3 4 5

生成序列[FIRST…LAST]

seq FIRST LAST

例如:seq 2 5 表示序列为 2 3 4 5

生成序列[FIRST…LAST],步长为

INCRENMENR

seq FIRST INCREMENT LAST

例如:seq 2 2 5表示序列为2 4

格式嵌套for循环:(fortest5.sh)

语义表示:当while测试为真时,Shell进入while的主体反复执行,直到测试条件为假时才停止。 (whiletest1.sh)

编程题:用while语句实现1+2+3+…+100。(whiletest3.sh)

编程题:用until语句实现1+2+3+…+100。

(untiltest2.sh)

(breaktest2.sh,continuetest2.sh)

编程题:编写Shell程序实现以下功能:显示从1-7的整数,并在大于4的整数后面显示字符串“after continue”。(bctest.sh) 编程题:用Shell函数实现输入两个数求和。(funcexer1.sh) 编程题:编写一个shell程序,使用shell编写一个菜单,分别实现以下功能:(1)显示当前目录内容;(2)创建文件;(3)编辑文件;(4)删除文件;(5)退出程序。要求程序中用到循环语句until、分支语句case、输入输出语句read和echo。(exer1.sh)

第四章

vfork函数实例(fork3.c)

fork函数实例(fork2.c)

fork函数实例(fork1.c)

应用举例1:管道通信在同一进程进行。首先进程创建一个无名管道,然后向该管道写入字符,再将写入的字符读出(pipe1.c)。

应用举例2:父子进程通过管道进行通信,父进程将数据发送给子进程(pipe2.c)。

应用举例3:创建有名管道(create_fifo.c)。

create_fifo.c

write_fifo.c

read_fifo.c

应用举例4:打开有名管道并写入一个字符串(write_fifo.c)。 应用举例5:打开并读取有名管道内容(read_fifo.c)。

编写程序:实现进程的管道通信,父进程使用系统调用pipe()建立一个管道并创建一个子进程。子进程向管道发送消息“Child 1 is sending a message to parent.”后结束。父进程从管道中接收子进程发来的消息并显示在屏幕上,然后父进程结束(pipe22.c)。

应用举例:接收键盘输入Ctrl+C信号而中断程序执行相应处理(signal2.c)。

编写程序:实现进程的有名管道通信。 创建FIFO,然后A程序读取用户输入字符并写入FIFO;B程序从FIFO读取字符,转换成大写后输出到屏幕(zifu2)。

应用举例:消息队列应用举例(msgsnd.c msgrcv.c)

共享存储区是Linux系统中进程通信速度最快的通信方式。

相关推荐