为了不辜负已经订阅了专栏的同学们的信任,所以本专栏不会有任何的优惠活动。
另外,当订阅人数每次达到 2 n ( n > 2 ) 2^n(n>2) 2n(n>2)时,订阅价格将会上涨10元。
所以,当下即是最便宜的价格。
软件开发模型
软件开发方法比软件开发模型高一个层级,一个软件开发方法可以包含多个软件开发模型。
瀑布模型
瀑布模型把整个开发严格区分阶段去进行,每个阶段把成果传递到下一个阶段,所以很像瀑布一层一层地往下走。属于结构化开发方法,只适合需求明确的项目。
如果添加上图中红色回溯的箭头,那么就变成了改进型瀑布模型。
V模型
V模型是瀑布模型的变种,属于结构化开发方法。它和瀑布模型的区别是:测试贯穿于始终;测试分阶段,测试计划提前。
在需求分析时,做验收测试和系统测试的计划;在概要设计时,做集成测试的计划;在详细设计时,做单元测试的计划。
原型模型
原型模型是迅速建造一个可以运行的软件原型 ,该原型向用户展示待开发软件的全部或部分功能和性能,用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求,开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护。
螺旋模型
螺旋模型以原型为基础,综合了瀑布模型,并增加了风险分析,沿着螺线自内向外旋转,每旋转一圈都要经过制订计划、风险分析、实施工程及客户评价等活动,并开发原型的一个新版本。经过若干次螺旋上升的过程,得到最终的系统。
练习题
()把整个软件开发流程分成多个阶段,每一个阶段都由目标设定、风险分析、开发和有效性验证以及评审构成。
A、原型模型
B、瀑布模型
C、螺旋模型
D、V模型
请思考片刻…
.
.
.
.
.
.
答案:C,只有螺旋模型中有风险分析。
构件组装模型
构件组装模型,也称为基于构件的软件开发(Component Based Software Development,CBSD)模型,是利用
模块化方法,将整个系统模块化,并在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手
段高效率、高质量地构造应用软件系统的过程。CBSD模型融合了螺旋模型的许多特征,本质上是演化型的,开发
过程是迭代的。
快速应用开发模型
快速应用开发(Rapid Application Development,RAD)模型是一个增量型的软件开发过程模型,强调极短的开发周期,是瀑布模型(SDCL)和基于构件的软件开发模型(CBSD)的组合。
RAD模型是瀑布模型的一个高速变种,通过大量使用可复用构件,采用基于构件的建造方法赢得快速开发。如果需求理解得好且约束了项目的范围,利用这种模型可以很快地创建出功能完善的信息系统。其流程从业务建模开始,随后是数据建模、过程建模、应用程序生成、测试与交付。
统一过程
统一过程(Unified Process,UP)是一个通用过程框架,可以用于种类广泛的软件系统、不同的应用领域、不同的组织类型、不同的性能水平和不同的项目规模。
UP是基于构件的,在为软件系统建模时,UP使用的是UML。与其他软件过程相比,UP具有三个显著的特点:用例驱动、以基本架构为中心、迭代和增量。
基于UP的软件过程分为初始、细化、构建和交付四个阶段,每次经过这四个阶段就会产生一代软件。除非产品退役,否则通过重复同样的四个阶段,产品将演化为下一代产品,但每一次的侧重点都将放在不同的阶段上。四个阶段具体如下:
- 初始:定义最终产品视图和业务模型,确定系统范围。
- 细化:设计及确定系统架构,制定工作计划及资源要求。
- 构建:要开发所有剩余的构件和应用程序功能,把这些构件集成为产品,并进行详细测试。
- 交付:把产品提交给用户使用。
练习题
基于RUP的软件过程是一个迭代过程。一个开发周期包括初始、细化、构建和移交四个阶段,每次通
过这四个阶段就会产生一代软件,其中建立完善的架构是()阶段的任务。采用迭代式开发,()。
A、初始
B、细化
C、构建
D、移交
A、在每一轮迭代中都要进行测试与集成
B、每一轮迭代的重点是对特定的用例进行部分实现
C、在后续迭代中强调用户的主动参与
D、通常以功能分解为基础
请思考片刻…
.
.
.
.
.
.
答案:B、A,其中第二个空,选项B的问题是用例可以部分实现,也可以都实现;选项C的问题是整个迭代都是用户主动参与,不是后续;选项C的问题是以功能分解为基础是结构化方法。
敏捷开发方法
传统软件开发方法和敏捷开发方法的对比:
传统软件开发方法 | 敏捷开发方法 |
---|---|
预设性的 | 适应性的 |
以开发过程为本 | 以人为本 |
整体分阶段 | 增量迭代,小步快跑 适合小型项目 |
敏捷开发方法的四大价值观:
- 沟通:加强面对面沟通,减少文档。
- 简单:不过度设计。
- 反馈:及时反馈。
- 勇气:接受变更的勇气。
敏捷开发方法的12条最佳实践:
- 计划游戏
- 小型发布
- 系统隐喻
- 简单设计
- 测试先行
- 重构
- 结对编程
- 集体代码所有制
- 持续集成
- 40小时工作机制
- 现场客户
- 代码标准
敏捷开发方法包括以下:
- 极限编程(XP): 一些对费用控制严格的公司中的使用,非常有效。
- 水晶方法:探索了用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一种平衡。
- 开放式源码:程序开发人员在地域上分布很广(其他方法强调集中办公)。
- SCRUM:明确定义了的可重复的方法过程。
- 功用驱动开发方法(FDD):编程开发人员分成两类:首席程序员和“类”程序员。
- ASD方法:其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习。
SCRUM
由产品负责人从相关方获取需求,形成产品待办列表。在迭代计划会议上从产品待办列表中选取一部分产品作为迭代待办事项。由敏捷教练主导在一个迭代(1~4周)中完成迭代待办事项。在完成过程中,做每日站会、迭代评审会议。在每个迭代完成后,做迭代回顾会议。
练习题
下列关于敏捷方法的叙述中,错误的是()。
A、与传统方法相比,敏捷方法比较适合需求变化大或者开发前期对需求不是很清晰的项目
B、敏捷方法尤其适合于开发团队比较庞大的项目
C、敏捷方法的思想是适应性,而不是预设性
D、敏捷方法以原型开发思想为基础,采用迭代式增量开发
请思考片刻…
.
.
.
.
.
.
答案:B,敏捷方法适合小型项目。
()适用于程序开发人员在地域上分布很广的开发团队。
A、水晶系列(Crystal)开发方法
B、开放式源码(Open source)开发方法
C、SCRUM开发方法
D、功用驱动开发方法(FDD)
请思考片刻…
.
.
.
.
.
.
答案:B
()中,编程开发人员分成首席程序员和“类”程序员。
A、自适应软件开发(ASD)
B、极限编程(XP)开发方法
C、开放统一过程开发方法(Open UP)
D、功用驱动开发方法(FDD)
请思考片刻…
.
.
.
.
.
.
答案:D