基于UML的面向对象软件开发过程

上一篇 / 下一篇  2010-11-09 14:44:34 / 个人分类:编程与其它

UML基本概念:51Testing软件测试网Rq @4Bp$x u/Q

UMl是一种标准的图形化建模语言,它是面向对象分析和设计的一种标准表示。经常用的工具有Microsoft Office Visio 2007 .51Testing软件测试网}dN#A/x;r

51Testing软件测试网o`pc$[r

视图

n$a9|8ixI"f%l051Testing软件测试网6|Sn$hW(n:a7{R

UML中的视图大致分为如下5种:

7yybH6x0

/WD/jXk#Y!\01、用例视图。用例视图强调从系统的外部参与者(主要是用户)的角度看到的或需要的系统功能。51Testing软件测试网]R$Nu?1E

s jT#eWV5{gE02、逻辑视图。逻辑视图从系统的静态结构和动态行为角度显示如何实现系统的功能。51Testing软件测试网"?9x:t(IGl&s

S3D*q'@$rpV03、组件视图。组件视图显示代码组件的组织结构。51Testing软件测试网3FN?BI%[&A

5GLhg t)gv04、并发视图。并发视图显示系统的并发性,解决在并发系统中存在的通信和同步问题。

%gW6zF t4o051Testing软件测试网/Oq| D x Z

5、配置视图。配置视图显示系统的具体部署。部署是指将系统配置到由计算机和设备组成的物理结构上。

Bi~o~6x)] g0

O0I a#L&@ l*D;_?/x0上述5种视图分别描述系统的一个方面,5种视图组合成UML完整的模型。下图显示了构成UML完整模型的5种视图间的关系

8l/i a(Q[V"Zu0

Qf|QaU3iQ051Testing软件测试网T q:af!UR

)yf\*}r+j{4J051Testing软件测试网mf"c7D1{)~fy7Y

9u,ax;[.s V0一、用例视图51Testing软件测试网Z dSv/Q

HeD1~q,HJA!f0用例视图描述系统应具备的功能,也就是被成为参与者的外部用户所能观察到的功能。用例是系统的一个功能单元,可以被描述为参与者与系统之间的一次交互作用。参与者可以是一个用户或者另外一个系统。客户对系统要求的功能被当作多个用例在用例视图中进行描述,一个用例就是对系统的一个用法的通用描述。用例模型的用途就是列出系统中的用例和参与者,并显示哪个参与者参与了哪个用例的执行。用例视图是其他视图的核心,它的内容直接驱动其他视图的开发。51Testing软件测试网'D[u fV"n"X

51Testing软件测试网|`%T7xNe

二、逻辑视图

` onj0^jZ3P0

8Tk%QopN$L?5kIb0逻辑视图描述用例视图中提出的系统功能的实现。与用例视图相比,逻辑视图主要关注系统内部,它既描述系统的静态结构(类、对象以及他们之间的关系),也描述系统内部的动态协作关系。系统的静态结构在类图和对象图中进行描述,而动态模型则在状态图、时序图、协作图以及活动图中进行描述。逻辑视图的使用者主要是设计人员和开发人员。

1}Ph(M;p/X*B0

4SKtT%l.BP]+p$n'G0三、并发视图

+\~e+wNC!Rw0

G1o!\_8}:}|0并发视图主要考虑资源的有效利用、代码的并行执行以及系统环境中异步事件的处理。除了将系统划分为并发执行的控制以外,并发视图还需要处理线程之间的通信和同步。并发视图的使用者是开发人员和系统集成人员。并发视图由状态图、协作图、以及活动图组成。51Testing软件测试网O W-uMeKL

,r:q b3O0N#YP,q1Hy D0四、组件视图51Testing软件测试网!{2SQ-iNy"d

Uzx'T!AXn%I:q0组件是不同类型的代码模块,它是构造应用的软件单元。组件视图描述系统的实现模块以及它们之间的依赖关系。组件视图中也可以添加组件的其他附加信息,例如资源分配或者其他管理信息。组件视图主要由组件图构成,它的使用者主要是开发人员。51Testing软件测试网.};L1Uv"Qo7RLC

51Testing软件测试网S7[H{z)@

五、配置视图51Testing软件测试网L$PGI ca

51Testing软件测试网!`!Q5~o\#_&P

配置视图显示系统的物理部署,它描述位于节点上的运行实例的部署情况。配置视图主要由配置图表示,它的使用者是开发人员、系统集成人员和测试人员。配置视图还允许评估分配结果和资源分配。

r f;a(MRrHa7V){U0

'jf!P;Gih9}[0

~*d.~1h1lMJ2v@0

vM7jFW:p;X0UML的各种图是UML模型的重要组成部分51Testing软件测试网D{|!@/F$B%jTV(zW#Y

CMe7P j-i&\01、 用例图(Use Case Diagram

u ~e q4F6r o051Testing软件测试网Ea ]Q M;iw

用例是系统中的一个可以描述参与者与系统直接交互作用的功能单元,用例图的用途是列出系统中的用例和参与者,并显示哪个参与者参与了哪个用例的执行。51Testing软件测试网7BqI-}1adrDq

51Testing软件测试网bz%fIA.]yj

2、 类图(Class Diagram51Testing软件测试网5vAB"D Nr,c3b

51Testing软件测试网&Tey'g-?oH

类是对应用领域或应用解决方案中概念的描述。类图以类为中心组织,类图中国的其他元素或属于某个类,或与类相关联。51Testing软件测试网s/P!\Zmp)N

51Testing软件测试网'I%d"v.e2R%j8P

3、 对象图(Object Diagram

S(MxTi&@051Testing软件测试网2mI9K C)oZ.E(H&f

对象图是类图的变体,它使用与类图相似的符号描述,不同之处在于对象图显示的是类的多个对象实例而非实际的类。可以说对象图是类图的一个例子,对象图与类图表示的不同之处在于它用带下划线的对象名称类表示对象,显示一个关系中的所有实例。

V9BB&g!}&U051Testing软件测试网U!M `*Iu T

4、 状态图(State Diagram

B"{8K3]'?,YP0

7vZ*mU%}'^t0状态图是对类描述的补充,它用于显示类的对象可能具备的所有状态,以及引起状态改变的事件。实际建模时,并不需要为所有的类都绘制状态图,仅对那些具有多个明确状态并且这些状态会影响和改变其行为的类才有绘制状态图的必要。此外,还可以为系统绘制整体状态图。51Testing软件测试网(Y8K1lL+g y.pR:x$y

(T6W$Mp[w#{y05、 时序图(Sequence Diagram

s N6M"R-BKU051Testing软件测试网cs\'WJ6x,N

时序图显示多个对象间的动作协作,重点是显示对象之间发送的消息的时间顺序。

.R'e{{X0

~G%nn1B.V06、 协作图(Collaboration Diagram51Testing软件测试网[Os#ZP(y

)F$qlqp2?:\0协作图对在一次交互中有意义的对象和对象间的链建模。除了显示消息的交互以外,协作图也显示对象以及它们之间的关系。时序图和协作图都可以表示各对象间的交互关系,但它们的侧重点不同。时序图用消息的几何排列关系来表达消息的时间顺序,各角色之间的关系是隐含的。协作图用各个角色排列来表示角色之间的关系,并用消息类说明这些关系。在实际应用中可以根据需要选用这两种图:如果需要重点强调时间或顺序,那么选择时序图;如果需要重点强调上下文,那么选择协作图。51Testing软件测试网y4G-}Y ]8[s

51Testing软件测试网 a)|%Rs? @J\*h

7、 活动图(Activity Diagram51Testing软件测试网gv2F W v%Q

51Testing软件测试网'U^ F+T)PWT

活动图是状态图的一个变体,用来描述执行算法的工作流程中涉及的活动。活动状态代表了一个活动,即一个工作流步骤或一个操作的执行。活动图由多个动作状态组成,当一个动作完成后,动作状态将会改变,转换为一个新的状态。

@Ni(Q |H ni051Testing软件测试网mPMn K

8、 组件图(Component Diagram

%I%Eb{'|r6N*o _b8v e0

Duxf.NE$r0组件图是用代码组件来显示代码物理结构。一个组件包含它所实现的一个或多个逻辑类的相关信息。通常组件图用于实际的编程工作中。

*]zA@+A051Testing软件测试网)p^$| C.Y i5s~

9、 配置图(Deployment Diagram

s(vS'hP n*t0ce051Testing软件测试网tF WC9D`

配置图用于显示系统中的硬件和物理结构。

*Z%SNVQ~ g"M051Testing软件测试网DhN-D3RK

模型元素

(z-u4BE/EF0

n7[Y0N-doW0UML中的模型元素包括事物和事物之间的联系。事物是UML中重要的组成部分,它代表任何可以定义的东西。事物之间的关系能够把事物联系在一起,组成有意义的结构模型。每一个模型元素都有一个与之相对应的图形元素。

0Hhx yV0

CO.m%eF-t `?0一、 事物51Testing软件测试网c+O/j9k;L+r K7n|

&vk x$n T!bhn0UML中事物可以分为结构事物、动作事物、分组事物和注释事物。51Testing软件测试网)NN4F,C o^

o)N;U3P({z01、 结构事物51Testing软件测试网P5d8W/f?+Yjz

g@ x#O^0Aj;B ^0结构事物分为:类、接口、协作、用例、活动类、组件和节点

"A9O)PQK8GhmT'x0

"IDW)lr4}01) 类。类是对具有相同属性、方法、关系和语义的对象的抽象,一个类可以实现一个或多个接口。类用包括类名、属性和方法的矩形表示。51Testing软件测试网4B;m g B9r#p2aHK

\Mc%@ ~0

f1qqS1V051Testing软件测试网oA3T'T _`s-n&X

51Testing软件测试网nG1mwOjx(^

51Testing软件测试网[ [!]WZ5L3N#^

2) 接口。接口是为类或组件提供特定服务的一组操作的集合。51Testing软件测试网0p V a2]$LfZ'm R5O

51Testing软件测试网:?"nW3P)YxS_

P c8a#s*Bl(GFN051Testing软件测试网%U{1s:\+O] G

51Testing软件测试网;fo!@K!C7V D0z

51Testing软件测试网}+Pok@1B F

3) 协作。协作定义了交互操作。一些角色和其他元素一起工作,提供一些合作的动作,这些动作比元素的总和要大。UML中协作用虚线构成的椭圆表示。

U"qik6`@vUH051Testing软件测试网wt;?&oD(u {X

51Testing软件测试网5u'y#ak*[D3PG8n%J

\hA+qs(_0 

tvx;om!yX{I051Testing软件测试网0h"~d4]4?]+]_

k {'? l#g:A,G.m m+}051Testing软件测试网$m r Kxm3X

4) 用例。用例描述系统对一个特定角色执行的一系列动作。在模型中用例通常用来组织动作事物,它是通过协作来实现的。UML中,用例用标注了用例名称的实线椭圆表示。

'on`4h] WV9H0

$v~Yr3WuV%ZA0

A3],J4e U#d^'Z.I{.W$P051Testing软件测试网4~6j4I&]wkQ5bjL

51Testing软件测试网z#BXU5`yz

51Testing软件测试网 r;~k.Mt]&_

51Testing软件测试网Rg_JUg3\ G?}

51Testing软件测试网wy;z1S%Hb

5) 活动类。活动类是类对象有一个或多个进程或线程的类。在UML中活动类的表示法和类相同,只是边框用粗线条。51Testing软件测试网1g-Wj)w;{

51Testing软件测试网R'A n,f&K[

z ^5xCTTZ6y051Testing软件测试网M,h}$df R M$l

/~$a#D{ ~F0

/ps+n)`8B#`,w%R$f y06) 组件。组件是实现了一个接口集合的物理上可替换的系统部分。

z)F xgUe051Testing软件测试网l#V5yy2GWa

51Testing软件测试网W.}y\;~T

]#d_H8r0

8M~ ?&^+a![ |+c ]051Testing软件测试网8ld)t-k6W(Rw P%m

7) 节点。节点是在运行时存在的一个物理元素,它代表一个可计算的资源,通常占用一些内存和具有处理能力。一个组件集合一般来说位于一个节点,但也可以从一个节点转到另一个节点。51Testing软件测试网6tl$N8Lw/c&h

NE)](mtMz z0

] OCG*g{d)?eH#k051Testing软件测试网FCr P0l

51Testing软件测试网"_QB5u[*x

51Testing软件测试网kT%l(i5y0wCjm

2、 动作事物51Testing软件测试网HZ3x{Y`scX"j:h

51Testing软件测试网)h,l-v!k+tn

动作事物是UML模型中的动态部分,它们是模型的动词,代表时间和空间上的动作。交互和状态机是UML模型中最基本的两个动态事物元素。

E(b?}DX L0

9g{4G8L8HL01) 交互。交互是一组对象在特定上下文中,为达到某种特定的目的而进行的一系列消息交换组成的动作。在交互中组成动作的对象的每个操作都要详细列出,包括消息、动作次数(消息产生的动作)、连接(对象之间的连接)。

lb rY fC7p0

MSx)BR3b4a.\0

qS-]"O2wqGk2]$A0

f['~ zZX`051Testing软件测试网 IG,u,Yq\M IS

51Testing软件测试网6fg P p R2DRC

2) 状态机。状态机由一系列对象的状态组成。51Testing软件测试网Y\4tAN)Bi4P!e

51Testing软件测试网$m4Z$]/Pe*b/?j

51Testing软件测试网| SH#E*G@

@ j&k-U[#F[hw0

K"SW%tf(W0

3sNFb-Wq$i,y%d-F"sy03、 分组事物51Testing软件测试网8c2eB.jDIB&u

8rN2OvXl0分组事物是UML模型中组织的部分,分组事物只有一种,称为包。51Testing软件测试网!yY3L$@"|n

51Testing软件测试网H6eA3m s|Px(^

51Testing软件测试网7s\Mu8J'e

5K"d~ssu m;SN0

H"kgr9V!x0

#u a%_h L,Kv j3U04、 注释事物51Testing软件测试网$D@7^f*v2Kf,T

!T|fz"q:\4Y9u#{:?T0注释事物是UML模型的解释部分。51Testing软件测试网7z^5^w9BDOdY:o

51Testing软件测试网-b ZIoN |&P)nq

lPxq)@051Testing软件测试网4]^!q"S7F1Uq"ra

51Testing软件测试网6WqR }W8B,NM+p

iw} ?(E3Q0二、UML中的关系

LD*_%Dih,`w051Testing软件测试网_o3_yu#L'Y

1、 关联关系51Testing软件测试网%H*@;nDf

51Testing软件测试网~c H KT_j

关联关系连接元素和链接实例,它用连接两个模型元素的实线表示,在关联的两端可以标注关联双方的角色和多重性标记。51Testing软件测试网O-jJ!h,mJ)Q

5U:c3wDM _R3OJKp051Testing软件测试网g3X&Vnv)lJ)L

51Testing软件测试网c|C4ml\Db

51Testing软件测试网'| z7P0B-V9j{

?-hi`3w N7v02、 依赖关系51Testing软件测试网;Fx0d+U-Q.Oa-mhp?

A y6`F f0依赖关系描述一个元素对另一个元素的依附。依赖关系用源模型指向目标模型的带箭头的虚线表示。

4nK f8q Nk t2l051Testing软件测试网.jScHx$Q3M

51Testing软件测试网&Tp-h y4Y

5T(e'@ EB5`(JkZ051Testing软件测试网`+Tr.A2E\l?q]

+Y"aK!^+uK'm03、 泛化关系

ow6v)~.emu051Testing软件测试网 P+b$z~Xy9M&T

泛化关系也称为继承关系,泛化用一条带空心三角箭头的实线表示,从子类指向父类。

{+k5| o9O c0

H;r4ge `6RQ b051Testing软件测试网;U;R^gu5A

51Testing软件测试网l/Vqmr2sBWZ

51Testing软件测试网:XT'dTA1`#L

'`N2N9r%@04、 实现关系

o4G9^/Xf pR'L051Testing软件测试网W,c/~NLx n%k

实现关系描述一个元素实现另一个元素。51Testing软件测试网2_ D_-n LkF$F

51Testing软件测试网H.y h!i0A-aD@

#zk/}(hwV051Testing软件测试网1y0vjaf0on*m5J^

51Testing软件测试网%[)}I&d9tm8Ya$q7u

r&S0S2X t8U WN2Rm|bI05、 聚合关系

#B7r8M X(w.W{^a051Testing软件测试网"L9NXTa T:~@(~:}

聚合关系描述元素之间部分和整体的关系,即一个表示整体的模型元素可能由几个表示部分的模型元素聚合而成。

_;u2IS h5N~}051Testing软件测试网:K5x$o'D}

.g:VT&mC*K051Testing软件测试网l,g2Y,q h&V-rN!Z+}

51Testing软件测试网8O7q4[US`)h+x

51Testing软件测试网#@3Cd)Jy U(y2t^d

通用机制51Testing软件测试网7Aw%n3EQ

51Testing软件测试网.U(\x!sr

一、 修饰。51Testing软件测试网}9YXj8{-L9HH|

?(@2{5F` { mG"OC q0在使用UML建模时,可以将图形修饰附加到UML图中的模型元素上。比如,当一个元素代表某种类型的时候,它的名称可以用粗体字形类显示;当同一元素表示该类型的实例时,该元素的名称用一条下划线修饰。

;n,{l1ud`o#Y051Testing软件测试网j\$R#M\2x)Z

51Testing软件测试网0Z2uoM#V{t,c'k

r.})K n'c%`qiO0

)Mg8g$B0].dO'rI0

K7["eM1V7{c1t g0二、 注释。

dYm]"V`;OF a051Testing软件测试网8`in!j%s"K-a

UML中用一条虚线将注释连接到它为之解释的或细化的元素上。

Jh'Twb~ D0

#v}[m3JgHP0{4Dx0

1? aW:Wfb051Testing软件测试网 @BkUO(Go#T

LG1vEW1h1S051Testing软件测试网aUP,E!?#G:t:M.|

三、 通用划分。51Testing软件测试网 C;BN/A$`)b.J5r

51Testing软件测试网6nAV@%w(WMo%i?

UML对其模型元素规定了两种类型的通用划分:型-实例(值)和接口-实现。51Testing软件测试网o M\Z"fQ$K[

E lGz4Ga#K01、型-实例(Type-Instance):描述一个通用描述符与单个元素项之间的对应关系。实例元素使用与通用描述符相同的表示图形,但是名字的表示与通用描述符不同:实例元素名字带有下划线,而且后面还要加上冒号和通用描述符的名字。51Testing软件测试网xp&B:c0kf o3O

51Testing软件测试网m#he y8i1w;y

51Testing软件测试网cS.M&x+o-J*z.u

51Testing软件测试网F\Nm7eH \-E

2、接口-实现:接口声明了一个规定了服务的约定,接口的实现负责执行接口的全部语义定义并实现该项服务。

5J1JdoEex0

]4V!G H3f9I5w0

"E6f9P8x2~'x0~V1aP051Testing软件测试网M1|.v4BD2cR

51Testing软件测试网vO5cj|

:q*sd qg`8G;k0基于UML的面向对象软件开发过程:

Ta }P.z5k0

5|^6Rp7M:E0统一过程(up)已成为一种流行的构造面向对象系统的软件开发过程,RUP是对UP的详细精化,下面介绍在业务建模、需求、设计、实现和测试这几个流程中使用UML的哪些图进行建模。51Testing软件测试网cC~jn)d1[U`^

51Testing软件测试网S(l)[4?2y$gV6X

1.业务建模51Testing软件测试网L-b+Ft*?N9Y%]Dc~!O4o

TQ7w [#a0采用UML的对象图和类图表示目标软件系统所基于的的应用领域中的概念和概念间的关系。这些相互关联的概念构成了领域模型。领域模型一方面可以帮助软件项目组理解业务背景,与业务专家进行有效沟通;另一方面,随着软件开发阶段的不断推进,领域模型将成为软件结构的主要基础。如果领域中含有明显的流程处理部分,可以考虑利用UML的活动图来刻画领域中的工作流,并标识业务流程中的并发、同步等特征。51Testing软件测试网4c|\rz@of

g|(Xt k02.需求51Testing软件测试网|8Je"{V| O

51Testing软件测试网|t7H R7bT5aG$s}

UML的的用例视图以用户为中心,对系统的功能性需求进行建模。通过识别位于系统边界之外的参与者以及参与者的目标,来确定系统要为用户提供哪些功能,并用用例进行描述。可以用文本形式或UML活动图描述用例,利用UML用例图表示参与者与用例之间、用例与用例之间的关系。采用UML顺序图图形描述参与者和系统之间的系统事件。利用系统操作契约刻画系统事件的发生引起系统内部状态的变化。如果目标系统比较庞大,用例较多,则可以用包来管理和组织这些用例,将关系密切的用例组织到同一个包里,用UML包图刻画这些包及其关系。

s&R2J8_CqAnrt0

D5k9aq|.Hz sA&O]03.设计51Testing软件测试网8q&y"s+oN RwoU[

51Testing软件测试网e Y5jo&HMmy

把分析阶段的结果扩展成技术解决方案,包括软件体系结构设计和用力实现的设计。采用UML包图设计软件体系结构,刻画系统的分层、分块思路。采用UML协作图或顺序图寻找参与用例实现的类及其职责,这些类一部分来自领域模型,另一部分是软件实现新加入的类,它们为软件提供基础服务,如负责数据库持久化的类。用UML类图描述这些类及其关系,这些类属于体系结构的不同的包中。用UML状态图描述那些具有复杂生命周期行为的类。用UML活动图描述复杂的算法过程和有多个对象参与的业务处理过程,活动图尤其合适描述过程中的并发和同步。此外,还可以使用UML构件图描述软件代码的静态结构与管理。UML部署图描述硬件的拓扑结构以及软件和硬件的映射问题。51Testing软件测试网 BL{7r's

51Testing软件测试网,rk[w7DDzM!b

4.实现

,i ?Cpzg9g-z5VIq0

K#ho nXd/S0把设计得到的类转换成某种面向对象程序设计语言的代码。

|&\U-K0B_051Testing软件测试网 \ grOM

5.测试

8v9fGjW`Sk$\0

Xy2@TM%e0不通的测试小组使用不同的UML图作为他们工作的基础:单元测试使用类图和类的规格说明,集成测试典型地使用构件图和协作图,而确认测试使用用例图和用例文本描述的来确认系统的行为是否符合这些图中的定义。

"|dq} Ri+bX051Testing软件测试网 dY]R.e5i&W)~nBf

[转载 作者:aci]

`6M GYd0

TAG: UML uml

 

评分:0

我来说两句

Open Toolbar