软件开发过程模型51Testing软件测试网3Zk7PJ#W
r$zQO'x3gu%SRm/p051Testing软件测试网-p#M0zK z+|#S$b
软件开发过程模型主要有:
R-OO/DD{0 瀑布模型(V模型、喷泉模型 )
B4[:Eh3U%Y5_7v&N0 螺旋模型
3GV9T6{ w6X1B8h c0 原型模型(锯齿模型、快速原型)
({eFh&\(N7~)g5M0 构件组装模型 (增量模型)51Testing软件测试网G%S9b'H_E3N
统一软件过程RUP模型
"_8B(R8P#B0Kn-l*g#{;M6pN01. 瀑布模型
M@.\*M+@
D/uz051Testing软件测试网Lu&I[
s6HX
51Testing软件测试网$_3o^LB3w;_"d
Ew$l2@.Z.G*F+o/BBp0
L-S2i'FdbC5m051Testing软件测试网%Z^Z(r0d-i ~
51Testing软件测试网 TB4M-f k
]+r-G51Testing软件测试网6|u4ief(v
A. 瀑布模型特征
{4xBs*a"M0 从上一项活动接收该项活动的工作对象,作为输入51Testing软件测试网 Fj0Dvg:i
利用这一输入实施该项活动应完成的内容;
)fQ{c5XiZs)}0 给出该项活动的工作成果,作为输出传给下一项活动;51Testing软件测试网']]#XrV+qT
对该项活动实施的工作进行评审,若其工作得到确认,则继续下一项活动,否则返回前项,甚至更前项的活动进行返工。
(s}#fKhy"\2g(k0B. 瀑布模型的优点51Testing软件测试网!J#k VmV"nK&i.V
通过设置里程碑,明确每阶段的任务与目标51Testing软件测试网"u$E0xr.eaE
可为每阶段制定开发计划,进行成本预算,组织开发力量51Testing软件测试网l\ lH#g7q
}_
@
通过阶段评审,将开发过程纳入正确轨道
,g~xK8yc0 严格的计划性保证软件产品的按时交付
)L!dZ]5p9m0C. 瀑布模型的缺点51Testing软件测试网3pmNB#rtJ
缺乏灵活性,不能适应用户需求的改变
z.j!nS.C;t:Hn d0 开始阶段的小错误被逐级放大,可能导致软件产品报废
5G\ [u*lcK0 返回上一级的开发需要十分高昂的代价51Testing软件测试网d6vd"|!S\
随着软件规模和复杂性的增加,软件产品成功的机率大幅下降51Testing软件测试网)vNj2h2}
vsS
51Testing软件测试网2n"I{!e*rUv;?2. 螺旋模型(图)
6zKH+}7B6g-W051Testing软件测试网:w/Zl&w+Q)?
51Testing软件测试网8K`;P+Svn
%N*J
IF/w:t0A. 螺旋模型的特征
pPB0}K;[0 每一圈是一个阶段,每个阶段里又有一些活动
u+b
G*NN2_&|*CFQ0 阶段可分为:操作的概念、软件需求、产品设计、详细设计、编码、单元测试、集成和测试、验收测试、实现51Testing软件测试网ak8@.E$Ij&F.Y
活动有:需求与计划、风险分析、设计与制作、用户评价
7r`r&NH x9Ay0B. 螺旋模型的优点51Testing软件测试网xF
[}h}?f?
风险分析可使一些极端困难的问题和可能导致费用过高的问题被更改或取消
s4H8jNPPm0 用户评价为需求的变更带来柔性51Testing软件测试网!UP`:`&Pv
C. 螺旋模型的缺点51Testing软件测试网E oz)a5~ ~y
需要开发人员具有相当丰富的风险评估经验和专门知识51Testing软件测试网KS+Zl3|
要求用户参与阶段评价,对用户来说比较困难,不易取得好的效果
?Slj}051Testing软件测试网*DN(Wi;g(gcP51Testing软件测试网Q+[zBP%|/K
3. 原型模型(图)
C? H0jc(V6aAl051Testing软件测试网;H,[F-Gdk of3l
J~Px5S%l`0
[4A(rF0`#jF&q9]&K0A. 原型模型的特征51Testing软件测试网%A!tx F_\
立项以后先提交原型给用户,在用户试用的基础上进行需求调查与原形修改51Testing软件测试网3Wp*AUj(O&?mI)y
强调用户对软件功能和使用性能的评价51Testing软件测试网FJ+N7x G&^f
设计、修改原型与试用交替进行51Testing软件测试网2R]
WB*x
He%D
一次迭代中的开发步骤:
.L%o(b3E4RW)Y0*了解用户/设计者的基本信息需求
kQY'Ex0*开发初始原型系统
L2r\"nRkt1a0*用户/设计者试用和评估原型系统
u*`)qI:~|?Px+u0B. 原型模型的优点51Testing软件测试网5BfD.x v3GX
开发者与用户充分交流,可以澄清模糊需求,需求定义比其他模型好得多
"K_%yZ!G0 开发过程与用户培训过程同步51Testing软件测试网^&Y'l })ePY
为用户需求的改变提供了充分的余地51Testing软件测试网4bz ]WSl&F
开发风险低,产品柔性好
w\J S$eG)Fk0 开发费用低,时间短51Testing软件测试网m-Z
pW9B(]
系统易维护,对用户更友好51Testing软件测试网 U
c2h2z0['iC!B
C. 原型模型的缺点
%K4xw(?YU0 开发者在不熟悉的领域中不易分清主次,原型不切题51Testing软件测试网O9[q/gS_
产品原型在一定程度上限制了开发人员的创新51Testing软件测试网b.})Wb]5}X
随着更改次数的增多,次要部分越来越大,“淹没”了主要部分
^"{KCr
Ai&K!yU0 原型过快收敛于需求集合,而忽略了一些基本点
MJO!?:J6?3I h)a W0 资源规划和管理较为困难,随时更新文档也带来麻烦
4p,BXR"h,~H#Y0 只注意原型是否满意,忽略了原型环境与用户环境的差异51Testing软件测试网:`2i1hq$~Y
b z
%i,T]%[,HQ%o3b051Testing软件测试网9|-K+b4d1bB
4. 构件组装模型/增量模型(图)51Testing软件测试网)g-k~4o#v}Md[,IgL.l
(Rlc7n"JXI
mk051Testing软件测试网
]f`@MwI&D
$qTj6Mi"\0A. 构件组装模型的特征51Testing软件测试网e'Sr3w^R
应用软件可用预先编好的、功能明确的产品部件定制而成, 并可用不同版本的部件实现应用的扩展和更新。
v5p6S"~
gz0 利用模块化方法,将复杂的难以维护的系统分解为互相独立、协同工作的部件,并努力使这些部件可反复重用。51Testing软件测试网(cp/b d J^ V(R
突破时间、空间及不同硬件设备的限制,利用客户和软件之间统一的接口实现跨平台的互操作。51Testing软件测试网 bJ
IYH8Zg8v8{r
_
B. 构件组装模型的优点
_*nSW+?x"d!?Y0 构件组装模型导致了软件的复用,提高了软件开发的效率,面向对象技术是软件工程的构件组装模型的基础。
5}t$Sg`;e1^I1[D0 构件可由一方定义其规格说明,被另一方实现,然后供给第三方使用。
8O%iq*@2V.B:v0 构件组装模型允许多个项目同时开发,降低了费用,提高了可维护性。51Testing软件测试网Q)S!r4a6Ag
可实现分步提交软件产品。
8b/Jb#UXk#I L0C. 构件组装模型的缺点51Testing软件测试网 K
h7z)C
B#A,h*_
可重用性和软件高效性不易协调。51Testing软件测试网
NbccM"I
缺乏通用的组装结构标准,而自定义的组装结构标准引入较大的风险。51Testing软件测试网*}f0R0kfjRK5G~
需要精干的有经验的分析和开发人员,一般的开发人员插不上手。
8wZj9_9K!XU#u0@#b0 客户的满意度低。51Testing软件测试网K%F
[;h|4@r
T
51Testing软件测试网jU'm7l(H[5. 统一软件过程RUP模型(图)51Testing软件测试网'U9t4v{Q8Hc:p.w
1sQ C}B~+T{00Zk6~"C-YF6l051Testing软件测试网eBhV(S
A. RUP模型特征
j3LP2ol]K0 RUP可以用二维坐标来描述。横轴通过时间组织,是过程展开的生命周期特征,体现开发过程的动态结构,用来描述它的术语主要包括周期(Cycle)、阶段(Phase)、迭代(Iteration)和里程碑(Milestone);纵轴以内容来组织为自然的逻辑活动,体现开发过程的静态结构,用来描述它的术语主要包括活动(Activity)、产物(Artifact)、工作者(Worker)和工作流(Workflow)。
k%g L)OZ,r
|}}S0RUP的时间轴
)@UoYl#HzmT&H0被分解为四个顺序的阶段,分别是:
H+RI+Ugef4uR0 初始阶段(Inception)、51Testing软件测试网(Xt$ZNG
细化阶段(Elaboration)、51Testing软件测试网H(s:n+W5{
构造阶段(Construction)和
!]A/Z|3e*eV1gG ]r0 交付阶段(Transition)51Testing软件测试网
T*X/Y`R@F5w4\h
每个阶段结束于一个主要的里程碑(Major Milestones);每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。51Testing软件测试网f]+ez7\jt{4|
RUP的阶段目标51Testing软件测试网%]!\[,c[6r3jO5hrj
初始阶段的目标是为系统建立商业案例并确定项目的边界。51Testing软件测试网J6J#pX{@
细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。51Testing软件测试网"}~;z/qL3G
在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。51Testing软件测试网{3B-?2KS6N;OM8L
交付阶段的重点是确保软件对最终用户是可用的。51Testing软件测试网,c_"\"[r\
D
RUP的核心工作流
#B%w-`m
fj
K1Fr D0 RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflows)和3个核心支持工作流(Core Supporting Workflows)。尽管6个核心过程工作流可能使人想起传统瀑布模型中的几个阶段,但应注意迭代过程中的阶段是完全不同的,这些工作流在整个生命周期中一次又一次被访问。9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。51Testing软件测试网^l}
w7k4|
核心过程工作流51Testing软件测试网q&ffY r3_ f
商业建模工作流为组织开发一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。
:YX:KZ@4b7T!T,H0 需求工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。51Testing软件测试网 bs"n-l7R
分析和设计工作流将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。
%@j.[3K"E-S(t0核心过程工作流51Testing软件测试网9`Qk9~;m^
实现工作流的目的包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。51Testing软件测试网+d(G4[3{,PhN
核心过程工作流51Testing软件测试网JiL_fi
测试工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现,识别、提出缺陷并确认缺陷在软件部署之前被处理。51Testing软件测试网"]f&S1i4K;XQ
部署工作流的目的是成功的生成版本并将软件分发给最终用户。51Testing软件测试网ya.H(eRg4ly
核心支持工作流
[-oy1y"b"ne2R0 配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物,管理演化系统中的多个变体,跟踪软件创建过程中的版本。
y-wK"uO"|zM8Q0 软件项目管理平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。
0j,ol7R'L Xt_O-?0 环境工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。51Testing软件测试网m4f'U]'u)cd%I
B. RUP模型的优点51Testing软件测试网wK'hujs2U/]
RUP具有很多长处:提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。51Testing软件测试网U8M.t)M:{.l
C. RUP模型的缺点
c%v:Xw8`/c|0 一些不足: RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容;此外,它没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。
L;I-\1kO0&`BR/IOx0
1w3nA3~-hp:G_0 51Testing软件测试网fBlQ
zhjV-g