软件开发模型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
按规定的各项需求,逐项进行有效性测试,决 定已开发的软件是否合格,能否交付用户使用。
运行/维护
纠正性维护 运行中发现了软件中的错误需 要修正;
适应性维护 为了适应变化了的软件工作环 境,需做适当变更;
完善性维护 为了增强软件的功能需做变更。
按照传统瀑布模型开发软件的特点
1.阶段间具有顺序性和依赖性。 2.推迟实现的观点。 3.每个阶段必须完成规定的文档;每个阶段结束
编写设计说明书,提交评审。
程序编写
把软件设计转换成计算机可以接受的程序代 码,即写成以某一种特定程序设计语言表示 的“源程序清单”;
写出的程序应当是结构良好、清晰易读的, 且与设计相一致的。
软件测试
单元测试,查找各模块在功能和结构上存在的 问题并加以纠正;
组装测试,将已测试过的模块按一定顺序组装 起来;
前完成文档审查,及早改正错误。
传统瀑布模型开发软件带来的问题:
过程基本不可迭代 需求在开始的不确定性 错误到最后才能发现 开发进程呈现塞阻状态
软件生存期循环
) 2. 快速原型模型(Rapid Prototype Model
听取用 户意见
建造/修改 原型
用户测试 运行原型
原型模型
原型产生步骤
当定义了一个类后,又需定义一个新
汽车
载人
载货
客车
货车
类,这个新类与原来的类相比,只是增 小,速度快
大,速度慢
加或修改了部分属性和操作,这时可以 用原来的类派生出新类,新类中只需描
小轿车 大客车
述自己所特有的属性和操作。
新类称为子类或派生类,原来的类称为基类。派生可以一直进行下去, 形成一个派生树。
继承性大大简化了对问题的描述,大大提高了程序的可重用性,从而 提高了程序设计、修改、扩充的效率。
第二章 软件开发模型
教学内容:
§ 2.1 软件生存周期 § 2.2 传统软件开发模型 § 2.3 软件演化模型 § 2.4 面向对象开发模型 § 2.5 形式化方法模型
软件生存周期(Software Life Cycle):
软件产品或软件系统从开始计划起,投入 使用到被淘汰的全过程。
面向对象的编程(OOP)
编程阶段实现由设计表示到面向对象程序设计语言描述的转换。
面向对象的测试(OOT)
测试的任务在于发现并改正程序中的错误。
面向对象的维护(OOSM)
3 “面向对象”程序设计的特点
(1)封装性 (2) 继承与派生性 (3) 多态性
3 “面向对象”程序设计的特点
封装性
对象是一个封装体,在其中封装了 该对象的属性和操作。通过限制对属性 和操作的访问权限,可以将属性“隐藏” 在对象内部,对外提供一定的接口,在 对象之外只能通过接口对对象进行操作。
C++通过建立数据类型——类来支持 封装和数据隐藏。封装性增加了对象的 独立性,从而保证了数据的可靠性。一 个定义完好的类可以作为独立模块使用。
内 动机 作械
零 件
外 读调 表节 盘旋

3 “面向对象”程序设计的特点
继承与派生
以汽车为例看客观世界描述事物的方式: 面向对象程序设计提供了类似的机制:
3 “面向对象”程序设计的特点
多态性
多态性指,同一个消息被不同对象接收时,产生不同 结果,即实现同一接口,不同方法。
计 算 高中生 平均成绩
语文、数学、英语、政治、 物理、化学、生物
3 “面向对象”程序设计的特点
多态性
多态性指,同一个消息被不同对象接收时,产生不同 结果,即实现同一接口,不同方法。
2 面向对象的软件开发方法
面向对象的分析(OOA)
分析阶段的主要任务是按照面向对象的概念和方法,从问题中识别 出有意义的对象,以及对象的属性、行为和对象间的通信,进而抽象出 类结构,最终将它们描述出来,形成一个需求模型。
面向对象的设计(OOD)
设计阶段从需求模型出发,分别进行类的设计和应用程序的设计。
可重用部件组装模型(构件集成模型)
构件集成模型产生的可能性: 经过适当设计和实现的类也可以称为构件,他们
在某个领域中具有一定的通用性,可以在不同的计算 机软件系统中复用。将这些构件储存起来变成一个构 件库,就为基于构件的软件开发模型提供了技术基础。
基于构件的开发技术
问题域
查到构件
组装系统
识别构件
可行性研究与计划
定义阶段
需求分析
设计



编码

测试
维护阶段
运行维护
制定计划
确定要开发软件系统的总目标; 给出功能、性能、可靠性以及接口等方面的要
求; 完成该软件任务的可行性研究; 估计可利用的资源 (硬件,软件,人力等)、
成本、效益、开发进度; 制定出完成开发任务的实施计划,连同可行性
形式化规格语言及其变换技术
•基于模型的规格说明及其变换技术 •基于代数结构及其变换技术 •基于时序逻辑的规格说明和验证技术 •基于可视形式化技术
2. 净室模型(形式化的增量开发模型)
基于思想: 力求在分析和设计阶段就消除错误,确保正
确,然后在无缺陷或“洁净”的状态下实现软件 的制作。
三个关键技术:
螺旋模型



线


客户交流
要点:
相似于增量模型,是顺序过程与原型过程 的统一,强调版本和版本升级。
用户评估
构造及发布
工程
与增量模型的区别:
计划 •活动划分不同
•更强调“计划”、“风险分析”和“用 户评估” •版本有更明确的目标
风险分析
版本的明确目标: 概念项目→增量项目→维护项目
§ 2.4 面向对象模型
§ 2.4 面向对象模型
为什么要引入面向对象的设计方法 面向对象的设计方法与面向过程 的设计方法有什么关系
面向过程程序设计缺点的根源在于数据与数据处理 分离。
面向对象程序设计模拟自然界认识和处理事物的方 法,将数据和对数据的操作方法放在一起,形成一个 相对独立的整体——对象(object),同类对象还可 抽象出共性,形成类(class )。一个类中的数据通 常只能通过本类提供的方法进行处理,这些方法成为 该类与外部的接口。对象之间通过消息(message)进 行通讯。
•置于统计过程控制之下的增量开发; •基于函数的规范、设计、验证; •统计测试和软件认证。
净室模型
增量 #1
需求
盒结构 规约
形式化 设计
正确性 验证
收集
测试计划
代码 检查
统计性
使用测 验证

增量 #2
需求
盒结构 规约
形式化 设计
正确性 验证
收集
测试计划
代码 检查
统计性
使用测 验证

.
.
..
.
.
..
喷泉模型(Fountain Model) 可重用部件组装模型 (构件集成模型
Component Integration Model)
喷泉模型
要点: •体现认识事物的往返过程 •开发活动之间的无间隙性和循环迭代性 •适用于面向对象的开发过程 •强调无明显的活动阶段划分
演化
维护 确认 实现 设计 分析
研究报告,提交管理部门审查。
需求分析和定义
对用户提出的要求进行分析并给出详细的定义; 编写软件需求说明书或系统功能说明书及初步
的系统用户手册; 提交管理机构评审。
软件设计
概要设计 — 把各项需求转换成软件的体系结 构。结构中每一组成部分都是意义明确的模块, 每个模块都和某些需求相对应;
详细设计 — 对每个模块要完成的工作进行具 体的描述,为源程序编写打下基础;
结合瀑布模型与快速原型的基础上增加了风险分析
螺旋模型
螺旋模型沿着螺线旋转,在四个象限上分别表 达四个方面的活动,即:
制定计划──确定软件目标,选定实施方案, 弄清项目开发的限制
风险分析──分析所选方案,考虑如何识别和 消除风险
实施工程──实施软件开发 客户评估──评价开发工作,提出修正建议
第一次只是试验开发,其目标只是在于探索可 行性,弄清软件需求;
第二次则在此基础上获得较为满意的软件产品。
演化模型
增量模型(Incremental Model) 螺旋模型(Sprial Model)
1. 增量模型(递增模型)
先完成一个系统子集的开发,再按同样的开发步骤 增加功能 (系统子集),如此递增下去直至满足全部系 统需求。
计 算 大学生 平均成绩
高数、英语、计算机、线 性代数
3 “面向对象”程序设计的特点
继承和多态性组合,可以生成很多相似但 又独一无二的对象。继承性使得这些对象可 以共享许多相似特性,而多态又使同一个操 作对不同对象产生不同表现形式。这样不仅 提高了程序设计的灵活性,而且减轻了分别 设计的负担。
面向对象模型
快速原型模型带来的问题:
•需要足够的人力资源 •用户和设计都成为关键 •适用于MIS形式的系统
§2.3 软件演化模型 传统开发模型共同特征:线性思维而
大部分复杂软件采用渐增式或迭代的开发方法
演化模型
由于在项目开发的初始阶段人们对软件的需求 认识常常不够清晰,因而使得开发项目难于做 到一次开发成功,出现返工再开发在所难免。 做两次;
可重用部件组装模型
用户 通信
计划
风险 分析
用户 评估
产品开发及发布
标志候 选构件
进行下 一次迭代
查找 构件
将新构件 存入库中
若存在则 提取构件
若不存在则 构造构件
§ 2.5 形式化方法模型
•转换模型(Transformational Model) •净室模型(Cleanroom Model)
转换模型
系统的总体设计在初始子集设计阶段就应作出设想。
增量演化模型
增量1 分析
设计
增量2 分析
要点:
•顺序过程和原型过程相结合
•强调版本升级
编码
测试
•每个版本的开发遵循顺序过程
第1个增量的发布
设计
增量3 分析
编码
设计 增量4
分析
测试 第2个增量的发布
编码
测试 第3个增量的发布
设计
编码
测试 第4增量的发布
2. 螺旋模型
查找构件
未查到构件
生成构件
要点: • 基于软件复用性 • 形成统一开发过程 • 产生统一建模语言
Hale Waihona Puke Baidu
构件库
可重用部件组装模型(构件集成模型)
构件(components):可重用的软件成份 可复用性(Reusability) 集成化软件开发环境(ISEE)
可重用部件组装模型(构件集成模型)
它融合了螺旋模型的很多特征,支持软件开发 的迭代方法
对象
手表
具体到一只圆形的或方形的手表
手表共有的属性(表针、旋钮、内部结构) 和行为(调节旋钮)
一块手表
1基 本 概 念
消息
我们把对象之间产生相互作用所传递的信息称做消息。
发送消息
接收并响应消息
启动
1基 本 概 念
消息
我们把对象之间产生相互作用所传递的信息称做消息。
发送消息
接收并响应消息
转向
2 面向对象的软件开发方法
1基 本 概 念
对 象(object) 类(class) 消 息(message)
1基 本 概 念
对象
属性
表针 旋钮 其他机械机构
行为 调节旋钮
1基 本 概 念

类是一个抽象的概念,用来描述某一类对象所共有的、 本质的属性和行为。
类的一个具体实现,称为实例

描述这类对象共有的、本质的属性和行为
➢ 螺旋模型实例:显像管生产监测系统 (面向对象软件)
系统流程图
早于DFD的一种建模工具。 以图形方式说明系统中的控制流和数据流。
系统流程图示例 启动定货销售
软件生存周期为各项开发活动流程确定一 个合理的框架,软件生存期模型/软件开发 模型( Software Development Model)。
教学目的及要求: ✓ 了解软件生存周期,软件开发模型。
§ 2.1 软件生存周期
§ 2.2 传统软件开发模型
1.瀑布模型 (Waterfall Model)
结合形式化软件开发方法和程序自动 生成技术的一种软件开发模型。
它用严格的、数学的表示体系来表示 软件规格说明,然后进行一系列自动或半自动 的程序变换,最后转换为计算机系统能够接受 的目标程序系统。
1. 转换模型
与需求比 较后修正
形式化开发记录
变换n
形式化 规格说明
系统需求
变换2 变换1
测试
目标系统
.
.
..
增量 #1
需求
盒结构 规约
形式化 设计
正确性 验证
收集
测试计划
代码 检查
统计性
使用测 验证

新的开发模型(技术)
• 并行开发技术 • 基于构件的开发技术 • 形式化方法技术 • 第4代技术 • 过程技术工具
§ 2.6 开发模型选用实例 (P27- P29)
➢ 瀑布模型实例:教材购销系统(面向过 程软件)
面向对象软件开发的根本合理性在于它符合可观 世界的组成方式和大脑的思维方式。
在大型程序开发过程中,编码只是其中很小一部 分,应当采用工程化的方法,并将面向对象的思想 贯穿于软件开发全过程,这就是面向对象的软件工 程。
面相对象的软件工程同样遵循分层抽象、逐步细 化的原则。软件开发过程包括以下五个阶段:
相关文档
最新文档