第一章
一、软件
1. 定义:使计算机运行所需的程序、数据和有关文档的总和。
2. 软件危机:开发软件所需高成本和产品的低质量之间有着尖锐的矛盾。
3. 软件危机的主要表现和原因:
(1)主要表现:开发成本和进度难以预测、用户不满足、产品质量无法保证、产品难以维护、缺少适当文档资料、成本逐年提高、生产率提高的速度远不及计算机应用技术的迅速普及。
(2)原因:硬件生产率大幅提高、软件生产随规模增大复杂度增大、软件生产率很低、硬软件供需失衡、矛盾引发“软件危机”
4. 三个基本要素:方法、工具、过程
5. 三个阶段:定义、开发、运行和维护
二、软件生命周期
定义:软件生命周期是从设计软件产品开始到产品不能使用为止的时间周期。软件产品从问题定义开始,经过开发、使用和维护,直到最后被淘汰的整个过程就是软件生命周期。
1问题定义→2可行性分析→3需求分析→4概要设计→5详细设计→6软件实现→7综合测试→8运行维护
(1~3计划阶段、4~7开发阶段、8运行阶段)
三、软件开发模型
1. 瀑布模型
(1)特点:
①软件生命周期的顺序性和依赖性
②尽可能推迟软件的编码
③保证质量,强调文档、复审
(2)应用范围:
适合于在软件需求比较明确、开发技术比较成熟、工程管理比较严格的场合下使用。
(3)缺点:
①不适合需求模糊或需求经常变动的系统
②不希望存在早期阶段的反馈
③无法预测一个新系统引入一个机构的影响
④用户可能需要较长等待时间来获得一个可供使用的系统
⑤最终产品往往反应用户的初始需求而不是最终需求
2. 快速原型模型
(1)三种原型:
①渐增式的原型
②用于验证软件需求的原型
③用于验证设计方案的原型
(2)应用范围:
适合预先不能确切定义需求的软件系统的开发(克服瀑布模型的缺点)
(3)缺点:
①所选用的开发技术和工具不一定符合主流发展
②快速建立的系统结构和连续修改可能导致产品质量低下
③一定程度上限制创新
(4)特点:
①用户一直参与,不断改进,系统边做边改
3. 增量模型
(1)特点:
①把瀑布模型的顺序特征与快速原型法的迭代特征相结合
②将软件看作一系列相互联系的增量,在各次迭代中,每次完成其中一个增量
(2)优点:
①分批提交,能在较短时间内提交可完成部分工作的产品
②逐步增加产品功能
③不同构件可以并行开发
(3)困难:
可能冒构件无法集成到一起的风险
4. 喷泉模型
5. 螺旋模型
(1)特点:
①强调风险分析
(2)应用范围:
①适用于有一定技术风险的大型软件系统的开发
6. Rational统一过程
(1)特点:
①综合了瀑布模型、增量模型、螺旋模型、快速原型模型优点的混合模型
②它的开发使用UML
第二章
一、可行性研究
1. 可行性研究的目的
(1)用最小的代价在尽可能短的时间内确定问题是否能够解决
(2)不是解决问题,而是确定问题是否值得去解决
2.可行性研究的内容
技术可行性、经济可行性、社会因素可行性
二、需求分析
1. 任务:明确用户对系统的确切要求
2. 依据:可行性研究阶段产生的文档
3. 结果:软件需求规格说明书
4. 确定目标系统的具体要求:
(1)确定系统的运行环境要求
(2)系统的性能要求
(3)系统功能
(4)接口需求
5. 传统结构化分析方法需要建立的需求模型:
(1)数据模型
(2)功能模型
(3)动态模型
6. 面向对象分析需要建立:
(1)用例模型
(2)每个用例的详细描述
(3)术语表
(4)补充规约
三、数据流图
1. 基本组成成分
(1)数据流
(2)加工
(3)数据存储
(4)外部实体
2. 图形表示方法、元素
此外,“*”表示与关系,同时存在;“+”表示或关系;“⊕”表示从几个数据流选一个(互斥)。
3. 例:
第三章
一、软件设计步骤
1. 概要设计的步骤:
(1)确定设计方案
(2)软件结构设计
(3)数据文件设计
(4)制订测试计划
(5)书写概要设计文档
2. 详细设计的基本任务
(1)数据结构设计和数据库设计
(2)接口设计
(3)过程设计
(4)代码设计、输入输出设计和网络设计等
(5)编写详细设计说明书、软件系统的操作手册等文档
(6)复审
3. 软件设计的基本原理:
软件的模块化、模块独立性、抽象、逐步求精、信息隐藏、局部化
4. 模块的独立性评价标准:模块大小、藕合、内聚、信息隐藏程度
5. 软件详细设计表示法:
(1)程序流程图、N-S图、判定表、PAD图的绘制
(2)流程图的基本结构
二、流程图
1. 定义:对某一个问题的定义、分析或解法的图形表示,图中用各种符号表示操作、数据、流向及装置等。
2. 主要缺点:
(1)不利于逐步求精设计
(2)图中箭头可随意将控制进行转移,不符合程序设计精神
(3)不易表示系统中所含的数据结构