软件开发模型
变化的需求
验证
实际的瀑布模型是带
“反馈环”的,如图2.2 所示(图中实线箭头表
规格说明 验证
示开发过程,虚线箭头
表示维护过程)。
设计
当在后面阶段发现
验证
前面阶段的错误时,需
编码
要沿图中左侧的红色反 反馈线
测试
馈线返回前面的阶段,
修正前面阶段的产品之
综合测试
后再回来继续完成后面
阶段的任务。
图2.2 实际瀑布模型
➢ 事实上,要求用户完全不经过实践就提出完整准确的需 求,在许多情况下是不切实际的。
➢ 总之,由于瀑布模型几乎完全依赖于书面的规格说明, 很可能导致最终开发出的软件产品不能真正满足用户的 需要。
第二章 软件生命周期与软件开发模型
1. 瀑布模型有如下特点: ⑴ 简单、易用、直观。 ⑵ 开发进程比较严格,一个进程顺着一个进程进行 (3)模型执行过程中需要严密控制。 (4)允许基线和配置早期接受控制。 (5)新项目不适合瀑布模型,除非处于项目的后期。 (6)用户直到项目结束才能看到产品的质量;用户不
• 典型的开发模型有: • ①瀑布模型(waterfall model); • ②快速原型模型 (prototype model); • ③增量模型 (incremental model); • ④螺旋模型(spiral model);
软件生命周期与软件开发模型
1、瀑布模型
在20世纪 80年代之前,瀑 布模型一直是唯 一被广泛采用的 生命周期模型, 现在它仍然是软 件工程中应用得 最广泛的过程模 型。图2.1 所示 为传统的瀑布模 型。
瀑布模型在编码之前设置了系统分析与系 统设计的各个阶段,分析与设计阶段的基本任 务规定,在这两个阶段主要考虑目标系统的逻 辑模型,不涉及软件的物理实现。
清楚地区分逻辑设计与物理设计,尽可能 推迟程序的物理实现,是按照瀑布模型开发软 件的一条重要的指导思想。
软件生命周期与软件开发模型
⑶ 质量保证的观点
因此,实际的瀑布模型是带“反馈环”的,如 图2.2所示(图中实线箭头表示开发过程,虚线箭头 表示维护过程)。
当在后面阶段发现前面阶段的错误时,需要沿 图中左侧的红色反馈线返回前面的阶段,修正前面 阶段的产品之后再回来继续完成后面阶段的任务。
软件生命周期与软件开发模型
2. 实际瀑布模型
需求分析 验证
需求分析 验证
规格说明 验证
设计 验证
编码 测试
图2.1 传统的瀑布模型
综合测试 维护
1. 传统瀑布模型 按照传统的瀑布模型来开发软件,有如下几个特点。
⑴ 阶段间具有顺序性和依赖性
这个特点有两重含义:
① 必须等前一阶段的工作完成之后,才能开始后一 阶段的工作;
② 前一阶段的输出文档就是后一阶段的输入文档, 因此,只有前一阶段的输出文档正确,后一阶段的工 作才能获得正确的结果。可是,万一在生命周期某一 阶段发现了问题,很可能需要追溯到在它之前的一些 阶段,必要时还要修改前面已经完成的文档。然而, 在生命周期后期改正早期阶段造成的问题,需要付出 很高的代价。这就好像水已经从瀑布顶部流泻到底部, 再想使它返回到高处需要付出很大能量一样。
遵守瀑布模型的文档约束,将使软件维护变 得比较容易一些。
由于绝大部分软件预算都花费在软件维护上 (55%-70%),因此,使软件变得比较容易维护就 能显著降低软件预算。
可以说,瀑布模型的成功在很大程度上是由 于它基本上是一种文档驱动的模型。
ቤተ መጻሕፍቲ ባይዱ
软件生命周期与软件开发模型
“瀑布模型是由文档驱动的” 也是一个主要缺点。
是渐渐地熟悉系统。 (7)不允许变更或者限制变更。
软件生命周期与软件开发模型
2. 使用指南 瀑布模型使用指南可以从三个方面说明: ⑴ 开发前,需进行概念开发和系统配置开发。概念开 发主要是确定系统级的需求,提交一份 SOW(工作说 明书statement of work) 。系统配置开发主要是确定 软件和硬件的情况。 ⑵ 开发中,需进行需求过程、设计过程、实施过程。 ⑶ 开发后,需进行安装过程、支持过程、维护过程、 抛弃过程等。
行评审,以便尽早发现问题,改正错误。事实 上,越是早期阶段犯下的错误,暴露出来的时 间就越晚,排除故障改正错误所需付出的代价 也就越高。因此,及时审查,是保证软件质量, 降低软件成本的重要措施。
2. 实际瀑布模型 传统的瀑布模型过于理想化了,事实上,人在
工作过程中不可能不犯错误。
在设计阶段可能发现规格说明文档中的错误, 而设计上的缺陷或错误可能在实现过程中显现出来, 在综合测试阶段将发现需求分析、设计或编码阶段 的许多错误。
软件工程的基本目标是优质、高产。为了保证 所开发的软件的质量,在瀑布模型的每个阶段都应 坚持两个重要做法。
① 每个阶段都必须完成规定的文档,没有交 出合格的文档就是没有完成该阶段的任务。完整、 准确的合格文档不仅是软件开发时期各类人员之间 相互沟通的媒介,也是运行时期对软件进行维护的 重要依据。
② 每个阶段结束前要对所完成的文档进
软件生命周期与软件开发模型
⑵ 推迟实现的观点
缺乏软件工程实践经验的软件开发人员,接到 软件开发任务以后常常急于求成,总想尽早开始编 写程序。
但是,实践证明,对于规模较大的软件项目来 说,编码开始得越早最终完成开发工作所需要的时 间反而越长。
这是因为,前面阶段的工作没做或做得不扎实, 过早地考虑进行程序实现,往往导致大量返工,有 时甚至发生无法弥补的问题,带来灾难性的后果。
维护
软件生命周期与软件开发模型
瀑布模型有许多优点:
➢ 可强迫开发人员采用规范的方法(例如,结构化技 术);
➢ 严格地规定了每个阶段必须提交的文档; ➢ 要求每个阶段交出的所有产品必须经过质量保证小组
的仔细验证。
软件生命周期与软件开发模型
各个阶段产生的文档是维护软件产品时必不 可少的,没有文档的软件几乎是不可能维护的。
软件开发模型SDM
• 软件开发模型(Software Development Model)是 指软件开发全部过程、活动和任务的结构框架。 软件开发包括需求、设计、编码和测试等阶段, 有时也包括维护阶段
• 软件开发模型能清晰、直观地表达软件开发全过 程,明确规定了要完成的主要活动和任务,用来 作为软件项目工作的基础。
➢ 在可运行的软件产品交付给用户之前,用户只能通过文 档来了解产品是什么样的。但是,仅仅通过写在纸上的 静态的规格说明,很难全面正确地认识动态的软件产品。
➢ 而且事实证明,一旦一个用户开始使用一个软件,在他 的头脑中关于该软件应该做什么的想法就会或多或少地 发生变化,这就使得最初提出的需求变得不完全适用了。