第 5章 数据库系统的开发方法
教材:数据库技术及应用 2006年 4月
宁可、吴菁、胡海编著
本章要点
? 方法、模型、工具和技术
? 软件生存期模型
? 结构化方法
? 面向对象方法
目 录
5.1 方法, 模型, 工具和技术
5.1.1 方法
5.1.2 模型
5.1.3 工具
5.1.4 技术
5.2 软件生存期模型
5.2.1 瀑布模型
5.2.2 快速原型模型
5.2.3 螺旋模型
5.2.4 喷泉模型
5.2.5 开发模型的比较
5.3 结构化方法
5.3.1 结构化分析
5.3.2 结构化设计
5.3.3 结构化编程
5.3.4 结构化分析, 结构化设计和结构化编程的联系
目 录
5.4 面向对象方法
5.4.1 面向对象分析
5.4.2 面向对象设计
5.4.3 面向对象编程
5.4.4 面向对象技术的特点
小结
5.1 方法、模型、工具和技术
数据库系统也属于系统设计的范畴, 数据库系
统同其它软件系统一样有多种开发方法, 开发过程
也较为复杂, 在开发数据库系统时, 一方面需要了
解和掌握各种各样的辅助工具, 并可依靠它们来完
成开发过程的每一个步骤;另一方面, 还需要了解
系统开发过程的大致框架和掌握许多概念, 如方法,
模型, 工具和技术等 。
5.1.1 方法
开发方法为系统开发的每一步骤提供指导, 包括具体的模
型, 工具和技术 。 开发方法既可以是通过自己的开发经验总结
出来, 也可以通过其它途径学习得来 。
某些方法需要包含大量的文档,而且文档的格式和内容都遵
循相应的规范,即文档应该如何书写,应该包含哪些内容都有相
应的要求,这种方法使得软件项目在开发中的任何时候所需要做
的工作都是确定的。而另一些方法就没有这样严格,它常常在一
份文档中涵盖了各个工作阶段系统的大致描述。采用何种方法进
行数据库系统的开发,应根据项目的特点、规模及开发单位和用
户的具体要求确定。在开发方法中,常常包含了模型、工具和技
术的使用。
5.1.2 模型
模型是对现实世界的描述 。 在系统的开发中, 常常需对输入,
输出, 过程, 数据, 对象之间的相互作用, 位置, 网络和设备等
进行模型的建立 。 模型可助于理解和明确要解决的问题, 并确定
问题的解决方案, 选择什么样的模型和选择什么样的技术来表达
模型, 对于考虑问题和解决问题有着重大的影响 。 如图 5-1所示,
便是系统设计阶段常用的模型 。
界面布局 报表布局 系统流程图 结构图
数据库模式 网络图 分布图
图 5-1:设计阶段常用的模型
模型的类型与作用
1,模型的类型
? 数学模型:描述系统技术的一系列公式 。
? 描述模型:描述性的备忘录, 报表或列表 。
? 图形模型:用符号或图表进行描述 。
2,模型的作用
? 在建模过程中了解信息 。
? 通过抽象降低复杂性 。
? 有助于回忆所有的细节 。
? 有助于和其它开发小组成员进行交流 。
? 有助于和各种用户及系统相关者进行交流 。
? 为以后的维护和升级提供了文档 。
常用的模型
1,分析阶段常用的模型 ( 逻辑模型 )
2,设计阶段常用的模型 ( 物理模型 )
3,管理系统开发过程的常用的模型
一般而言,虽然不同的开发方法采用不同
的模型,同一开发方法的不同开发阶段采用的
模型也不同。但是,有时在同一开发方法的不
同开发阶段也可采用相同的模型进行描述,只
不过描述的详细程度不同。
5.1.3 工具
软件系统 ( 包括数据库系统 ) 的开发离不开各种各样软件
工具的使用, 在系统开发的各个阶段, 如分析, 设计, 代码生
成, 测试, 版本控制, 配置管理, 项目管理等, 都具有相应的
自动或半自动的工具支持, 这些工具的应用, 可帮助开发人员
控制开发中的复杂性, 有利于提高系统开发的效率和质量 。
1,开发工具的类型
( 1)软件开发工具
( 2)软件维护工具
( 3)软件管理和支持工具
2,计 算 机 辅 助 软 件 工 程 ( CASE, Computer Aided Software
Engineering)
在软件工程活动中, 软件工程师和管理人员按照软件工程的
方法和原则, 借助计算机及其软件工具, 开发, 维护, 管理软件
产品的过程, 称为计算机辅助软件工程 。 与信息系统相关的 CASE
工具库, 如图 5-2所示 。
图形生成器
数据库生成器 反向工程工具
设计生成器
代码生成器 制图工具
检错工具
查询工具
报表生成器
原型建立工具
CASE
工具库
图 5-2 包括系统所有信息的 CASE工具库
计算机辅助软件工程的主要目标是将软件工具集成在一起, 使得
一个工具产生的信息能够被其他工具所用, 使各类软件开发方法能
在分析, 设计, 实现及运行维护各阶段得以全面实施, 以简化系统
的开发工作, 加快系统开发过程, 提高并充分利用软件的可重用性,
通过自动检查来提高软件的质量, 使得系统开发人员能集中精力进
行创造性的工作 。
CASE的集成机制主要有,
? 数据集成一工具间可以交换数据;
? 界面集成 — 工具有相同的界面风格和交互方式;
? 控制集成 — 工具激活后能控制其他工具的操作;
? 过程集成 — 系统嵌入了有关软件过程的知识, 根据软件过程模型辅
助用户启动各种软件开发活动;
? 平台集成 — 工具运行在相同的硬件/操作系统下 。
5.1.4 工具
系统中开发使用的技术是一组方法, 可以帮助开
发人员完成系统的开发活动或任务 。 有些技术可以使
用于整个软件生命周期的各个阶段 。
在方法中,技术、模型和工具将有效的进行结合,如图 5-3
所示,方法包括系统开发过程中每一阶段活动的技术,这些活动
包括完成各种模型及相应的文档和资料,而系统开发人员使用软
件工具来帮助完成这些活动 。
技术 模型
工具
方法
图 5-3 方法中各个技术, 模型和工具之间的关系
5.2 软件生存期模型
软件产品的开发同其它一般工业产品的开发一样, 需经历
若干开发阶段, 软件产品的生产过程也要经过分析, 设计,
制造, 检测和运行使用等几个阶段 。 一个软件从计划开发到
废弃不用的整个过程被称为软件的生存期, 一般包括计划,
开发和运行等时期 。
目前,已提出多种软件生存期模型,软件生存期在很大程
度上反映了信息系统的生存周期,不同的软件生存期模型是针
对不同性质和规模的系统分别规定了不同的工程化活动,如瀑
布模型、快速原型模型、操作模型和软件演进模型、迭代模型
等。
5.2.1 瀑布模型
瀑布模型是最早的软件开发模型, 该模型由于酷似瀑布而得
名 。 在该模型中, 包括三个阶段, 即计划阶段, 开发阶段和维
护阶段, 每一阶段又再细化为若干个阶段 。 瀑布模型和各阶段
对应的需提交的文档, 如图 5-4所示 。
计划
阶段
开发
阶段
维护阶段
可行性研究
问题定义
概要设计
编码
测试
运行维护
需求分析
详细设计
可行性分析报告
需求说明书
概要设计说明书
详细设计说明书
程序代码
测试报告
图 5-4 瀑布模型
5.2.2 快速原型模型
由于在项目初始阶段人们对软件的需求认识常常不够清晰,因此需要试
验性开发, 其目标是在于探索可行性, 弄清楚软件需求:并在此基础上获
得较满意的软件产品, 再进行原型设计等 。 通常把试验性产品称为原型 。
典型的快速原型模型是需求和设计之间进行迭代设计的 。 从模糊的需
求到初始的原型, 经过对原型的更改, 得到清晰的需求, 最后逐步演化为
最终的产品 。 典型的快速原型模型如图 5-5所示 。
图 5-5 快速原型模型
原
型
完
否
否
需求分析
计划
设计
编码
测试
运行维护
定义基本需求
开发工作模型
演示、求精
修改/增加
是
5.2.3 螺旋模型
螺旋模型将瀑布模型与演化模型结合起来, 并且增加风险分析这一环
节, 如图 5-6所示 。 在直角坐标上分别表达了四个象限上的活动, 即:制定
计划, 风险分析, 工程实施, 客户评价 。 沿螺旋线自内向外每旋转一圈便
开发出更为完善的一个新的软件版本 。
图 5-6 将瀑布模型与演化模型结合起来的螺旋模型
需求计划
风险分析
风险分析
风险分析
原型 1
原型 2
原型 3
可运
行原型
风险分析,
评价方案
识别风险
消除风险
累计成本
指定计划,
决定目标
方案限制
提交线
评审
生存期
计划
开发计划
组装测试 客户评价
软件
需求
需求
确认
设计确认验证
软件产品
设计
实现
验收
测试
编码
组装
测试
单元
测试
实施工程,
开发、验 证
形成产品
5.2.4 喷泉模型
喷泉模型是一类支持面向对象的, 自底向上的开发模型, 在实施中体现了迭代和
无间隙的特征, 其过程如图 5-7所示 。 它在实施中, 对系统的某个部分常常重复迭代,
相关的功能在迭代中逐步地演化到系统中, 并且能体现无间隙特征, 即与瀑布模型
相比, 其分析, 设计和编码之间没有明显的界限 。
喷泉模型是以用户需求为动力, 以对象为驱动模型, 适合于面向对象开发方法 。
图 5-7 喷泉模型
分析
设计
实现
确认
维护
演化
5.2.5 开发模型的比较
模型
名称
特点
驱动类型
适用范围
瀑布模型
各个阶段的固定顺序上 — 个阶段完成后才能进入
下个阶段 。
文档驱动
普遍的方法
快速原型
模型
从初始的原型逐步演化为最终的产品 。
数据字典驱
动
对软件需求缺乏准确
认识的情况
螺旋模型
软件开发沿螺线自内向外旋转, 每旋转一周都对
风险进行识别和分析, 采取对策以减少风险, 从
而开发更为完善的新版本 。
风险驱动
适合大型软件的开发
喷泉模型
体现面向对象开发过程的迭代和无间隙特征 。
对象驱动
适合中小型规模的软
件
5.3 结构化方法
结构化编程, 结构化设计和结构化分析是组成系统结构化开发
方法的三种技术, 我们可把这三种技术统称为结构化分析与设计技
术 。
5.3.1 结构化分析
结构化分析技术使帮助开发人员定义系统需要做什么, 系统需要存储
和使用哪些数据, 需要什么样的输入和输出以及如何将系统的各种功能
结合在一起完成既定的任务 。
在结构化分析中,常常通过多种图形工具来表示系统的需求,主要
有,
1.数据流图 ( DFD,Data Flow Diagram)
2,实体 -关系图( D-R,Entity Relationship Diagram)
5.3.2 结构化设计
结构化设计是用于描述程序集中各个程序应实现的功能和这些程
序间的层次关系 。 在结构化设计中常常通过结构图这种图形模型来
显示程序模块的层次关系 。
1,结构化设计的基本原则
结构化设计的基本原则是程序模块应该设计成松耦合与高
内聚。
2,数据库设计、用户界面设计与结构化设计
由于目前大多软件项目中, 一方面都涉及到使用数据库管理系统,
程序模块需和数据库进行交互;另一方面越来越多的非技术人员
参与系统的设计和应用中, 用户界面的设计也逐渐重要起来, 因
此, 数据库设计, 用户界面设计与结构化设计常常是一起完成的 。
5.3.3 结构化编程
也称结构化程序设计, 是采用自顶向下, 逐步求精的思想并利
用顺序, 选择和循环三种基本结构来构筑程序, 使得设计的程序只
有一个入口一个出口 。 顺序, 选择和循环三种基本结构
采用结构化编程技术, 可把复杂的程序分解为简单的程序模块
层次图, 使程序结构呈现出清晰的层次和控制方式, 易于阅读和
理解, 提高了程序的可维护性 。 模块层次图如图 5-12所示, 上层
程序模块通过, 调用, 底层程序模块来控制程序的执行 。 其中,
这里的程序模块也可称为程序段或过程 。
控制模块
调用程序模块 A
调用程序模块 B
调用程序模块 C
程序模块 A
调用程序模块 1
调用程序模块 2
程序模块 B
调用程序模块 x
程序模块 C
调用程序模块 y
图 5-12 自顶向下的模块化程序设计
5.3.4结构化分析、结构化设计和结构化编程的联系
结构化分析
事件
数据流图
实体联系图
结构化设计
根据数据流图定义程序
模块结构图
结构化编程
使用结构化编程为每一
个程序模块编写代码
图 5-13 从结构化分析、结构化涉及到结构化编程
5.4 面向对象方法
面 向 对 象 的 方 法 由 面 向 对 象 分 析 ( Object-Oriented
Analysis), 面向对象设计 ( Object-Oriented Design), 面向
对象程序设计 ( Object-Oriented Programming) 等组成, 其开发
过程如图 5-14所示 。 在面向对象方法中的概念和表示符号, 可以
适用于软件开发的整个过程 。 在面向对象方法中, 软件开发阶段
的划分是比较模糊的, 通常要在分析, 设计与实现等阶段间进行
多次迭代 。
真实世界
真实世界的
面向对象模型
面向对象的设计
面向对象的编码
该模型是用户易于理解的方式反映
真实世界 。
设计应该与模型具有相同的基本结构 。
编码应该从设计中尽可能自动生成 。
图 5-14 面向对象方法的开发过程
5.3.1 面向对象分析
OOA( Object-Oriented Analysis,面向对象分析 ) 是软件开发过
程中分析并综合用户需求, 建立问题域精确模型的过程 。 Rumbaugh等
人提出对象模型技术, 它把分析时收集的信息构造在 3类模型中, 即
对象模型, 功能模型和动态模型 。 图 5-15给出了这 3个模型的建立次
序 。
对象模型 动态模型 功能模型
图 5-15 在分析阶段的 3个模型之间的关系
5.4.2 面向对象设计
定义系统中所有类型的对象 ( 包括在面向对象分析中没有定义的用于
通信所必需的其它对象类型 ), 并对每一种类型的对象进行细化, 以便
可以使用一种具体语言或环境来实现这些对象 。
OOD的活动如下,
1.设计问题域组件
2,设计人机交互组件
3.设计任务管理组件
4.设计数据管理组件
5.4.3 面向对象编程
在面向对象编程中, 程序被看作是相互协作的对象集合, 每个
对象都是某个类的实例, 所有的类构成一个通过继承关系相联系的
层次结构 。 面向对象的语言常常具有以下特征:对象生成功能, 消
息传递机制, 类和遗传机制 。 在面向对象语言中, 它们以一种独特
方式互相协作, 互相补充 。
1.类、对象和消息
把具有相同结构和相同行为的对象进行组合、再次抽象
成一种类型,称此类型为类。 而任何单个对象都是某个类的
实例,这些实例具有由它们的类定义的共同特征。
消息是对象之间进行联系的一种方式,对象的存取和使
用都是通过消息的发送来实现的,而向某个对象发送消息,
就是要求其执行它的一个操作。
消息与对象间的关系如图 5-16所示。
消息
对象 A
状态 行为
对象 A
状态 行为
图 5-16 消息是对象之间的唯一联系方式
2.封装、继承与多态性
封装是面向对象的一个的基本特点。封装是指将对象的属性和方
法进行所谓的包装,使该对象具有信息的隐蔽能力,即外界不能直接修
改对象的状态,只能通过向它发送消息对它产生影响。对象隐蔽了其数
据及操作的具体实现,对外可见的只是对象提供的消息接口。
继承是从一个己存在的类(基类)派生出一个新生类(派生类)的
功能,派生类继承了基类的所有变量和函数(私有型变量和函数除外),
用户通过在派生类中添加一些新的数据成员和函数,可得到一个功能更
为强大的类。
图 5-17反映了类的层次结构,最顶端的类是基类,是所有类的始祖。
一个类可以有多个子类,也可以没有子类,但它必须有一个父类(基类
除外)。
图 5-17 类的层次结构
基类
B2类
C类
A类
B1类
B类
3,多态性
多态性是指当不同的对象收到相同的消息时, 产生不同的
动作 。 这里的消息可为函数名或事件名, 也就是说多态性允
许使用相同的名称来定义不同的函数, 这些函数执行类似的
但又不相同的操作 。 我们可通过相同的接口来访问功能不同
的函数, 从而实现, 一个接口, 多种方法, 。
例如,函数重载(同一函数名有着不同的参数和返回值)
可使程序设计人员在只知道一般含义而不知道操作的具体细
节的情况下,仍能够正确的完成有关操作。
5.4.4 面向对象技术的特点
采用面向对象方法来分析和解决问题, 既是将客观世界的具体事
物, 事件, 抽象的概念及规则等称为对象, 并以此作为我们研究的
基本元素和分析问题, 解决问题的核心 。 面向对象的技术有以下主
要优点,
( 1) 模块性
( 2) 封装功能
( 3) 代码共享
( 4) 灵活性
( 5) 易维护性
小结
本章主要对数据库应用系统开发中涉及的有关概念, 方法和工具进行简单的介
绍 。
开发方法为系统开发的每一步骤提供指导, 包括具体的模型, 工具和技术;
模型是对现实世界的描述, 模型有助于我们理解和明确要解决的问题, 并确定
问题的解决方案;在软件系统开发的各个阶段中都存在各种各样的软件工具,
工具的应用可帮助开发人员控制开发中的复杂性, 有利于提高系统开发的效率
和质量 。
软件从计划开发到废弃不用的整个过程被称为软件的生存期, 软件生存期
模型也称为软件开发模型 。 目前, 已提出多种软件生存期模型, 如瀑布模型,
快速原型模型, 螺旋模型, 操作模型和喷泉模型等 。 在实际项目的开发上, 可
根据项目的特点选取相适应的软件开发模型 。
习 题
1,数据库系统的分析和设计过程中, 常常使用各种辅助工具来帮助进行分析和
设计工作, 这些工具包括方法, _______________,____________和技术 。
2,目前由多种软件生存期模型, 其中使用较多的有瀑布模型, ____________、
___________和喷泉模型 。
3,结构化分析与设计技术包括结构化分析, ____________和 __________。
4,在对象模型技术中, 把分析时收集的信息构造在 3类模型中, 即 ____________、
___________和动态模型
5, 面向对象技术的主要优点有模块性, 封装功能, _____________、
_____________和 _______________。
6,统一开发过程分为四个迭代阶段, 分别为初始阶段, _____________、
_____________和提交阶段 。
7,实践题,如果我们做一个功能明确, 需求稳定的一个项目 ( 如帐务管理统 ),
该采用软件生存期模型来进行开发? 试说明理由 。
教材:数据库技术及应用 2006年 4月
宁可、吴菁、胡海编著
本章要点
? 方法、模型、工具和技术
? 软件生存期模型
? 结构化方法
? 面向对象方法
目 录
5.1 方法, 模型, 工具和技术
5.1.1 方法
5.1.2 模型
5.1.3 工具
5.1.4 技术
5.2 软件生存期模型
5.2.1 瀑布模型
5.2.2 快速原型模型
5.2.3 螺旋模型
5.2.4 喷泉模型
5.2.5 开发模型的比较
5.3 结构化方法
5.3.1 结构化分析
5.3.2 结构化设计
5.3.3 结构化编程
5.3.4 结构化分析, 结构化设计和结构化编程的联系
目 录
5.4 面向对象方法
5.4.1 面向对象分析
5.4.2 面向对象设计
5.4.3 面向对象编程
5.4.4 面向对象技术的特点
小结
5.1 方法、模型、工具和技术
数据库系统也属于系统设计的范畴, 数据库系
统同其它软件系统一样有多种开发方法, 开发过程
也较为复杂, 在开发数据库系统时, 一方面需要了
解和掌握各种各样的辅助工具, 并可依靠它们来完
成开发过程的每一个步骤;另一方面, 还需要了解
系统开发过程的大致框架和掌握许多概念, 如方法,
模型, 工具和技术等 。
5.1.1 方法
开发方法为系统开发的每一步骤提供指导, 包括具体的模
型, 工具和技术 。 开发方法既可以是通过自己的开发经验总结
出来, 也可以通过其它途径学习得来 。
某些方法需要包含大量的文档,而且文档的格式和内容都遵
循相应的规范,即文档应该如何书写,应该包含哪些内容都有相
应的要求,这种方法使得软件项目在开发中的任何时候所需要做
的工作都是确定的。而另一些方法就没有这样严格,它常常在一
份文档中涵盖了各个工作阶段系统的大致描述。采用何种方法进
行数据库系统的开发,应根据项目的特点、规模及开发单位和用
户的具体要求确定。在开发方法中,常常包含了模型、工具和技
术的使用。
5.1.2 模型
模型是对现实世界的描述 。 在系统的开发中, 常常需对输入,
输出, 过程, 数据, 对象之间的相互作用, 位置, 网络和设备等
进行模型的建立 。 模型可助于理解和明确要解决的问题, 并确定
问题的解决方案, 选择什么样的模型和选择什么样的技术来表达
模型, 对于考虑问题和解决问题有着重大的影响 。 如图 5-1所示,
便是系统设计阶段常用的模型 。
界面布局 报表布局 系统流程图 结构图
数据库模式 网络图 分布图
图 5-1:设计阶段常用的模型
模型的类型与作用
1,模型的类型
? 数学模型:描述系统技术的一系列公式 。
? 描述模型:描述性的备忘录, 报表或列表 。
? 图形模型:用符号或图表进行描述 。
2,模型的作用
? 在建模过程中了解信息 。
? 通过抽象降低复杂性 。
? 有助于回忆所有的细节 。
? 有助于和其它开发小组成员进行交流 。
? 有助于和各种用户及系统相关者进行交流 。
? 为以后的维护和升级提供了文档 。
常用的模型
1,分析阶段常用的模型 ( 逻辑模型 )
2,设计阶段常用的模型 ( 物理模型 )
3,管理系统开发过程的常用的模型
一般而言,虽然不同的开发方法采用不同
的模型,同一开发方法的不同开发阶段采用的
模型也不同。但是,有时在同一开发方法的不
同开发阶段也可采用相同的模型进行描述,只
不过描述的详细程度不同。
5.1.3 工具
软件系统 ( 包括数据库系统 ) 的开发离不开各种各样软件
工具的使用, 在系统开发的各个阶段, 如分析, 设计, 代码生
成, 测试, 版本控制, 配置管理, 项目管理等, 都具有相应的
自动或半自动的工具支持, 这些工具的应用, 可帮助开发人员
控制开发中的复杂性, 有利于提高系统开发的效率和质量 。
1,开发工具的类型
( 1)软件开发工具
( 2)软件维护工具
( 3)软件管理和支持工具
2,计 算 机 辅 助 软 件 工 程 ( CASE, Computer Aided Software
Engineering)
在软件工程活动中, 软件工程师和管理人员按照软件工程的
方法和原则, 借助计算机及其软件工具, 开发, 维护, 管理软件
产品的过程, 称为计算机辅助软件工程 。 与信息系统相关的 CASE
工具库, 如图 5-2所示 。
图形生成器
数据库生成器 反向工程工具
设计生成器
代码生成器 制图工具
检错工具
查询工具
报表生成器
原型建立工具
CASE
工具库
图 5-2 包括系统所有信息的 CASE工具库
计算机辅助软件工程的主要目标是将软件工具集成在一起, 使得
一个工具产生的信息能够被其他工具所用, 使各类软件开发方法能
在分析, 设计, 实现及运行维护各阶段得以全面实施, 以简化系统
的开发工作, 加快系统开发过程, 提高并充分利用软件的可重用性,
通过自动检查来提高软件的质量, 使得系统开发人员能集中精力进
行创造性的工作 。
CASE的集成机制主要有,
? 数据集成一工具间可以交换数据;
? 界面集成 — 工具有相同的界面风格和交互方式;
? 控制集成 — 工具激活后能控制其他工具的操作;
? 过程集成 — 系统嵌入了有关软件过程的知识, 根据软件过程模型辅
助用户启动各种软件开发活动;
? 平台集成 — 工具运行在相同的硬件/操作系统下 。
5.1.4 工具
系统中开发使用的技术是一组方法, 可以帮助开
发人员完成系统的开发活动或任务 。 有些技术可以使
用于整个软件生命周期的各个阶段 。
在方法中,技术、模型和工具将有效的进行结合,如图 5-3
所示,方法包括系统开发过程中每一阶段活动的技术,这些活动
包括完成各种模型及相应的文档和资料,而系统开发人员使用软
件工具来帮助完成这些活动 。
技术 模型
工具
方法
图 5-3 方法中各个技术, 模型和工具之间的关系
5.2 软件生存期模型
软件产品的开发同其它一般工业产品的开发一样, 需经历
若干开发阶段, 软件产品的生产过程也要经过分析, 设计,
制造, 检测和运行使用等几个阶段 。 一个软件从计划开发到
废弃不用的整个过程被称为软件的生存期, 一般包括计划,
开发和运行等时期 。
目前,已提出多种软件生存期模型,软件生存期在很大程
度上反映了信息系统的生存周期,不同的软件生存期模型是针
对不同性质和规模的系统分别规定了不同的工程化活动,如瀑
布模型、快速原型模型、操作模型和软件演进模型、迭代模型
等。
5.2.1 瀑布模型
瀑布模型是最早的软件开发模型, 该模型由于酷似瀑布而得
名 。 在该模型中, 包括三个阶段, 即计划阶段, 开发阶段和维
护阶段, 每一阶段又再细化为若干个阶段 。 瀑布模型和各阶段
对应的需提交的文档, 如图 5-4所示 。
计划
阶段
开发
阶段
维护阶段
可行性研究
问题定义
概要设计
编码
测试
运行维护
需求分析
详细设计
可行性分析报告
需求说明书
概要设计说明书
详细设计说明书
程序代码
测试报告
图 5-4 瀑布模型
5.2.2 快速原型模型
由于在项目初始阶段人们对软件的需求认识常常不够清晰,因此需要试
验性开发, 其目标是在于探索可行性, 弄清楚软件需求:并在此基础上获
得较满意的软件产品, 再进行原型设计等 。 通常把试验性产品称为原型 。
典型的快速原型模型是需求和设计之间进行迭代设计的 。 从模糊的需
求到初始的原型, 经过对原型的更改, 得到清晰的需求, 最后逐步演化为
最终的产品 。 典型的快速原型模型如图 5-5所示 。
图 5-5 快速原型模型
原
型
完
否
否
需求分析
计划
设计
编码
测试
运行维护
定义基本需求
开发工作模型
演示、求精
修改/增加
是
5.2.3 螺旋模型
螺旋模型将瀑布模型与演化模型结合起来, 并且增加风险分析这一环
节, 如图 5-6所示 。 在直角坐标上分别表达了四个象限上的活动, 即:制定
计划, 风险分析, 工程实施, 客户评价 。 沿螺旋线自内向外每旋转一圈便
开发出更为完善的一个新的软件版本 。
图 5-6 将瀑布模型与演化模型结合起来的螺旋模型
需求计划
风险分析
风险分析
风险分析
原型 1
原型 2
原型 3
可运
行原型
风险分析,
评价方案
识别风险
消除风险
累计成本
指定计划,
决定目标
方案限制
提交线
评审
生存期
计划
开发计划
组装测试 客户评价
软件
需求
需求
确认
设计确认验证
软件产品
设计
实现
验收
测试
编码
组装
测试
单元
测试
实施工程,
开发、验 证
形成产品
5.2.4 喷泉模型
喷泉模型是一类支持面向对象的, 自底向上的开发模型, 在实施中体现了迭代和
无间隙的特征, 其过程如图 5-7所示 。 它在实施中, 对系统的某个部分常常重复迭代,
相关的功能在迭代中逐步地演化到系统中, 并且能体现无间隙特征, 即与瀑布模型
相比, 其分析, 设计和编码之间没有明显的界限 。
喷泉模型是以用户需求为动力, 以对象为驱动模型, 适合于面向对象开发方法 。
图 5-7 喷泉模型
分析
设计
实现
确认
维护
演化
5.2.5 开发模型的比较
模型
名称
特点
驱动类型
适用范围
瀑布模型
各个阶段的固定顺序上 — 个阶段完成后才能进入
下个阶段 。
文档驱动
普遍的方法
快速原型
模型
从初始的原型逐步演化为最终的产品 。
数据字典驱
动
对软件需求缺乏准确
认识的情况
螺旋模型
软件开发沿螺线自内向外旋转, 每旋转一周都对
风险进行识别和分析, 采取对策以减少风险, 从
而开发更为完善的新版本 。
风险驱动
适合大型软件的开发
喷泉模型
体现面向对象开发过程的迭代和无间隙特征 。
对象驱动
适合中小型规模的软
件
5.3 结构化方法
结构化编程, 结构化设计和结构化分析是组成系统结构化开发
方法的三种技术, 我们可把这三种技术统称为结构化分析与设计技
术 。
5.3.1 结构化分析
结构化分析技术使帮助开发人员定义系统需要做什么, 系统需要存储
和使用哪些数据, 需要什么样的输入和输出以及如何将系统的各种功能
结合在一起完成既定的任务 。
在结构化分析中,常常通过多种图形工具来表示系统的需求,主要
有,
1.数据流图 ( DFD,Data Flow Diagram)
2,实体 -关系图( D-R,Entity Relationship Diagram)
5.3.2 结构化设计
结构化设计是用于描述程序集中各个程序应实现的功能和这些程
序间的层次关系 。 在结构化设计中常常通过结构图这种图形模型来
显示程序模块的层次关系 。
1,结构化设计的基本原则
结构化设计的基本原则是程序模块应该设计成松耦合与高
内聚。
2,数据库设计、用户界面设计与结构化设计
由于目前大多软件项目中, 一方面都涉及到使用数据库管理系统,
程序模块需和数据库进行交互;另一方面越来越多的非技术人员
参与系统的设计和应用中, 用户界面的设计也逐渐重要起来, 因
此, 数据库设计, 用户界面设计与结构化设计常常是一起完成的 。
5.3.3 结构化编程
也称结构化程序设计, 是采用自顶向下, 逐步求精的思想并利
用顺序, 选择和循环三种基本结构来构筑程序, 使得设计的程序只
有一个入口一个出口 。 顺序, 选择和循环三种基本结构
采用结构化编程技术, 可把复杂的程序分解为简单的程序模块
层次图, 使程序结构呈现出清晰的层次和控制方式, 易于阅读和
理解, 提高了程序的可维护性 。 模块层次图如图 5-12所示, 上层
程序模块通过, 调用, 底层程序模块来控制程序的执行 。 其中,
这里的程序模块也可称为程序段或过程 。
控制模块
调用程序模块 A
调用程序模块 B
调用程序模块 C
程序模块 A
调用程序模块 1
调用程序模块 2
程序模块 B
调用程序模块 x
程序模块 C
调用程序模块 y
图 5-12 自顶向下的模块化程序设计
5.3.4结构化分析、结构化设计和结构化编程的联系
结构化分析
事件
数据流图
实体联系图
结构化设计
根据数据流图定义程序
模块结构图
结构化编程
使用结构化编程为每一
个程序模块编写代码
图 5-13 从结构化分析、结构化涉及到结构化编程
5.4 面向对象方法
面 向 对 象 的 方 法 由 面 向 对 象 分 析 ( Object-Oriented
Analysis), 面向对象设计 ( Object-Oriented Design), 面向
对象程序设计 ( Object-Oriented Programming) 等组成, 其开发
过程如图 5-14所示 。 在面向对象方法中的概念和表示符号, 可以
适用于软件开发的整个过程 。 在面向对象方法中, 软件开发阶段
的划分是比较模糊的, 通常要在分析, 设计与实现等阶段间进行
多次迭代 。
真实世界
真实世界的
面向对象模型
面向对象的设计
面向对象的编码
该模型是用户易于理解的方式反映
真实世界 。
设计应该与模型具有相同的基本结构 。
编码应该从设计中尽可能自动生成 。
图 5-14 面向对象方法的开发过程
5.3.1 面向对象分析
OOA( Object-Oriented Analysis,面向对象分析 ) 是软件开发过
程中分析并综合用户需求, 建立问题域精确模型的过程 。 Rumbaugh等
人提出对象模型技术, 它把分析时收集的信息构造在 3类模型中, 即
对象模型, 功能模型和动态模型 。 图 5-15给出了这 3个模型的建立次
序 。
对象模型 动态模型 功能模型
图 5-15 在分析阶段的 3个模型之间的关系
5.4.2 面向对象设计
定义系统中所有类型的对象 ( 包括在面向对象分析中没有定义的用于
通信所必需的其它对象类型 ), 并对每一种类型的对象进行细化, 以便
可以使用一种具体语言或环境来实现这些对象 。
OOD的活动如下,
1.设计问题域组件
2,设计人机交互组件
3.设计任务管理组件
4.设计数据管理组件
5.4.3 面向对象编程
在面向对象编程中, 程序被看作是相互协作的对象集合, 每个
对象都是某个类的实例, 所有的类构成一个通过继承关系相联系的
层次结构 。 面向对象的语言常常具有以下特征:对象生成功能, 消
息传递机制, 类和遗传机制 。 在面向对象语言中, 它们以一种独特
方式互相协作, 互相补充 。
1.类、对象和消息
把具有相同结构和相同行为的对象进行组合、再次抽象
成一种类型,称此类型为类。 而任何单个对象都是某个类的
实例,这些实例具有由它们的类定义的共同特征。
消息是对象之间进行联系的一种方式,对象的存取和使
用都是通过消息的发送来实现的,而向某个对象发送消息,
就是要求其执行它的一个操作。
消息与对象间的关系如图 5-16所示。
消息
对象 A
状态 行为
对象 A
状态 行为
图 5-16 消息是对象之间的唯一联系方式
2.封装、继承与多态性
封装是面向对象的一个的基本特点。封装是指将对象的属性和方
法进行所谓的包装,使该对象具有信息的隐蔽能力,即外界不能直接修
改对象的状态,只能通过向它发送消息对它产生影响。对象隐蔽了其数
据及操作的具体实现,对外可见的只是对象提供的消息接口。
继承是从一个己存在的类(基类)派生出一个新生类(派生类)的
功能,派生类继承了基类的所有变量和函数(私有型变量和函数除外),
用户通过在派生类中添加一些新的数据成员和函数,可得到一个功能更
为强大的类。
图 5-17反映了类的层次结构,最顶端的类是基类,是所有类的始祖。
一个类可以有多个子类,也可以没有子类,但它必须有一个父类(基类
除外)。
图 5-17 类的层次结构
基类
B2类
C类
A类
B1类
B类
3,多态性
多态性是指当不同的对象收到相同的消息时, 产生不同的
动作 。 这里的消息可为函数名或事件名, 也就是说多态性允
许使用相同的名称来定义不同的函数, 这些函数执行类似的
但又不相同的操作 。 我们可通过相同的接口来访问功能不同
的函数, 从而实现, 一个接口, 多种方法, 。
例如,函数重载(同一函数名有着不同的参数和返回值)
可使程序设计人员在只知道一般含义而不知道操作的具体细
节的情况下,仍能够正确的完成有关操作。
5.4.4 面向对象技术的特点
采用面向对象方法来分析和解决问题, 既是将客观世界的具体事
物, 事件, 抽象的概念及规则等称为对象, 并以此作为我们研究的
基本元素和分析问题, 解决问题的核心 。 面向对象的技术有以下主
要优点,
( 1) 模块性
( 2) 封装功能
( 3) 代码共享
( 4) 灵活性
( 5) 易维护性
小结
本章主要对数据库应用系统开发中涉及的有关概念, 方法和工具进行简单的介
绍 。
开发方法为系统开发的每一步骤提供指导, 包括具体的模型, 工具和技术;
模型是对现实世界的描述, 模型有助于我们理解和明确要解决的问题, 并确定
问题的解决方案;在软件系统开发的各个阶段中都存在各种各样的软件工具,
工具的应用可帮助开发人员控制开发中的复杂性, 有利于提高系统开发的效率
和质量 。
软件从计划开发到废弃不用的整个过程被称为软件的生存期, 软件生存期
模型也称为软件开发模型 。 目前, 已提出多种软件生存期模型, 如瀑布模型,
快速原型模型, 螺旋模型, 操作模型和喷泉模型等 。 在实际项目的开发上, 可
根据项目的特点选取相适应的软件开发模型 。
习 题
1,数据库系统的分析和设计过程中, 常常使用各种辅助工具来帮助进行分析和
设计工作, 这些工具包括方法, _______________,____________和技术 。
2,目前由多种软件生存期模型, 其中使用较多的有瀑布模型, ____________、
___________和喷泉模型 。
3,结构化分析与设计技术包括结构化分析, ____________和 __________。
4,在对象模型技术中, 把分析时收集的信息构造在 3类模型中, 即 ____________、
___________和动态模型
5, 面向对象技术的主要优点有模块性, 封装功能, _____________、
_____________和 _______________。
6,统一开发过程分为四个迭代阶段, 分别为初始阶段, _____________、
_____________和提交阶段 。
7,实践题,如果我们做一个功能明确, 需求稳定的一个项目 ( 如帐务管理统 ),
该采用软件生存期模型来进行开发? 试说明理由 。