软件工程是当代迅速发展起来的新兴学科,是软件开发的重要指导。本书以软件生命周期为主线,着重介绍软件开发的原理、方法与技术。主要内容包括软件工程概述、项目计划、需求分析、概要设计、详细设计、编码、测试、软件维护、面向对象方法、面向对象系统的测试、软件项目管理、软件质量与可靠性、统一建模语言UML和RationalRose工具。
本书由浅人深,通俗易懂,内容丰富,图文并茂。可作为高等院校高年级本科生或研究生教材,也可供从事计算机软件工作的人员学习。
第1章软件工程概述
1.1计算机软件概念
1.1.1计算机软件
1.1.2软件的特点
1.1.3软件与硬件的关系
1.1.4软件分类
1.2软件的发展
1.3软件危机与软件问题
1.3.1软件危机
1.3.2软件危机的表现
1.3.3软件开发中的问题
1.4软件工程与开发准则
1.4.1软件工程概念
1.4.2软件工程的内容
1.4.3软件开发的基本准则
1.5软件生命周期
1.5.1软件生命周期的划分
1.5.2各阶段的基本任务
1.6软件开发模型
1.6.1瀑布模型
1.6.2原型模型
1.6.3螺旋模型
1.6.4基于4GL模型
1.6.5面向对象开发模型
1.7小结
习题
第2章项目计划
2.1问题定义
2.2可行性研究
2.2.1可行性研究的目的和任务
2.2.2可行‘陛研究的过程
2.2.3初步的项目方案
2.2.4风险评估
2.3系统流程图
2.4示例
2.5项目可行性及计划编制文档
2.5.1可行性研究报告
2.5.2项目开发计划
2.6小结
习题
第3章需求分析
3.1需求分析概述
3.1.1需求分析任务
3.1.2需求类型
3.1.3需求特性
3.1.4获取需求的步骤
3.2数据流图
3.2.1符号
3.2.2作用
3.3数据字典
3.3.1定义方法
3.3.2实现
3.4加工逻辑描述工具
3.5结构化分析方法
3.5.1数据流图的分层思想
3.5.2结构化分析的步骤
3.5.3画数据流图的注意事项
3.5.4示例
3.6需求规格说明书
3.7复审
3.7.1复审的必要性
3.7.2复审的内容
3.8需求分析人员
3.8.1需求分析人员面临的挑战
3.8.2需求分析人员的原则和策略
3.8.3需求分析人员应采用的技术
3.9小结
习题
第4章概要设计
4.1概要设计的任务与准备
4.1.1设计的任务
4.1.2启动概要设计
4.1.3明确技术方案
4.2软件结构设计及优化
4.2.1模块和模块化
4.2.2软件结构的风格与策略
4.2.3耦合与内聚-.
4.2.4好的软件设计特性
4.3图形工具
4.3.1层次图和HIPO图
4.3.2结构图
4.4结构化设计
4.4.1概念与步骤
4.4.2变换映射
4.4.3事务映射
4.4.4优化设计
4.5数据结构设计
4.5.1数据结构设计的任务
4.5.2数据库设计:
4.5.3概念模型设计工具
4.6概要设计说明指南
4.?小结
习题
第5章详细设计
5.1详细设计的任务与内容
5.1.1详细设计的目标和原则
5.1.2详细设计过程
5.1.3详细设计内容
5.1.4详细设计优化
5.2详细设计工具
5.2.1程序流程图
5.2.2N—S图
5.2.3PAD图
5.2.4各种设计工具的比较
5.3人机界面设计
5.3.1人机界面应具备的特性
5.3.2数据输入界面设计
5.3.3数据显示界面设计
5.3.4控制界面的设计
5.4小结
习题
第6章编码
6.1编码概念
6.2程序设计语言
6.2.1程序设计语言分类
6.2.2程序设计语言的基本成分
6.2.3程序设计语言选择
6.3编码风格
6.4编码策略与编码工具
6.4.1编码策略
6.4.2编码工具
6.5小结
习题
第7章测试
7.1软件测试概述
7.1.1软件测试的定义
7.1.2软件测试的目的
7.2软件测试的组织与管理
7.2.1软件测试的人员组织
7.2.2软件测试的步骤
7.3测试方法
7.3.1代码复审
7.3.2黑盒测试
7.3.3白盒测试
7.4测试用例的设计
7.4.1白盒法测试用例设计
7.4.2黑盒法测试用例设计
7.4.3实用测试策略
7.5单元测试
7.5.1单元测试策略
7.5.2单元测试过程
7.5.3驱动模块和桩模块
7.6集成测试
.7.6.1集成测试的主要任务
7.6.2集成测试策略
7.6.3自顶向下集成
7.6.4自底向上集成
7.6.5混合式集成
7.7系统测试
7.7.1系统测试的种类
7.7.2系统测试标准
7.7.3软件配置的复审
7.7.4a测试与B测试
7.8调试
7.8.1调试技术
7.8.2调试策略
7.9自动测试工具
7.9.1测试工具的分类
7.9.2几种常见的测试工具简介
7.10测试文件
7.11实例
7.12小结
习题
第8章软件维护
8.1软件维护的概念
8.2软件维护的代价
8.3维护过程
8.3.1维护组织
8.3.2维护申请单
8.3.3维护流程
8.3.4维护报告单
8.3.5维护评价
8.4可维护性
8.4.1可维护性的决定因素
8.4.2对可维护性的定量度量
8.4.3提高可维护性的途径
8.4.4文档
8.5维护的副作用
8.6维护复审
8.7小结
习题
第9章面向对象方法
9.1概述
9.1.1oo软件开发方法的发展
9.1.23种有影响的OO方法
9.1.3各种00方法的差异
9.1.4面向对象与传统开发方法的比较
9.2面向对象的基本概念
9.3面向对象分析
9.3.1对象模型
9.3.2动态模型
9.3.3功能模型
9.4面向对象设计
9.4.1问题论域部分的设计
9.4.2用户界面部分的设计
9.4.3任务管理部分的设计
9.4.4数据管理部分的设计
9.5小结
习题
第10章面向对象系统的测试
10.1面向对象测试模型
10.2分析测试
10.2.1对认定的对象测试
10.2.2对认定的结构测试
10.2.3对认定的主题测试
10.2.4对属性和实例关联的测试
10.2.5对服务和消息关联的测试
10.3设计测试
10.3.1对类的测试
10.3.2对类层次结构的测试
10.3.3对类库支持的测试
10.4编程测试
10.4.1数据成员的封装要求
10.4.2类是否实现要求的功能
10.5单元测试
10.6集成测试
10.7系统测试
10.8面向对象测试用例设计
10.8.1OO概念对测试用例设计的影响
10.8.2类测试用例设计
10.8.3类间测试用例设计
10.9小结
习题
第11章软件项目管理
11.1概述
11.1.1软件项目管理的内容与特点
11.1.2软件项目管理与软件工程
11.1.3软件项目管理过程
11.2软件度量
11.2.1软件度量的任务
11.2.2面向规模的度量
11.2.3面向功能的度量
11.2.4面向特征点的度量
11.3软件开发成本估算
11.4进度安排
11.4.1任务的确定性与并行性
11.4.2进度安排的方法
11.4.3项目的追踪和控制
11.5软件文档管理
11.5.1软件文档的作用和分类
11.5.2文档的管理和维护
11.6小结
习题
第12章软件质量与可靠性
12.1软件质量保证
12.1.1软件的质量要求
12.1.2软件质量保证的内容
12.2软件能力
12.2.1软件能力的概念
12.2.2CMM模型
12.3软件可靠性
12.3.1可靠性概念
12.3.2可靠性模型
12.3.3程序正确性证明
12.4软件质量管理标准
12.4.1软件质量国际标准
12.4.21SO9001、ISO9000—3和ISO9001—2000
12.4.31SO9001和CMM标准
12.4.41SO9000系列标准对软件业的作用
12.5小结
习题
第13章统一建模语言UML
13.1UML概述
13.1.1UML的产生与发展
13.1.2UML的主要内容
13.1.3UML的主要特点
13.1.4UML的应用
13.2静态建模
13.2.1用例图
13.2.2类图和对象图
13.2.3包
13.2.4构件图
13.2.5配置图
13.3动态建模
13.3.1顺序图
13.3.2协作图
13.3.3状态图
13.3.4活动图
13.4统一建模过程
13.5小结
习题
第14章RationalRose
14.1Rose概述
14.1.1Rose概念
14.1.2Rose的功能与特点
14.2Rose主界面
14.3Rose的基本操作
14.3.1模型的操作
14.3.2框图操作
14.3.3元素的操作
14.4Rose的模型视图
14.4.1业务用例图
14.4.2活动图
14.4.3用例图
14.4.4交互图
14.4.5类与包
14.4.6状态图
14.4.7构件图
14.4.8配置图
14.5Rose的双向工程
14.5.1模型生成代码
14.5.2VisualC+十的逆向工程
14.6小结
习题
参考文献
自20世纪60年代末以来,为了克服“软件危机”,人们在软件工程领域做了大量的工作,开拓了软件工程方法和技术,积累了一定的经验,使软件开发技术逐步趋于成熟,并形成了较为完整的计算机软件开发方法,使软件开发过程按照工程化的原理、方法、技术进行。 进而软件工程学诞生了,它不仅规范了软件开发方法、过程和相应的文档,而且大大提高了软件生产的速度、数量和软件质量。
信息社会在2l世纪以更快的速度,更高的要求,更新的技术飞速发展。 其原因在于因特网和丌技术在全球的广泛应用和迅猛发展,地球村已经成为现实。 以计算机作为信息处理工具几乎被越来越多的人接受。因此无论在数量上还是技术上都对软件开发提出了更高的要求,软件工程和软件产业面临着更大的挑战。 多年来,软件工程一直是计算机科学研究的一个热点,备受人们的关注,同时也展示了软件工程的生机和活力。
为了适应新技术发展的需要,特编写此书,为有关方面的教学和众多的爱好者提供该领域有价值的资料。 本书既入选“普通高校本科计算机专业特色教材精选”,同时也是中国矿业大学“新世纪教材建设工程”教材。
本书以软件生命周期为主线,以面向数据流的结构化技术为核心,重点介绍了结构化分析、结构化设计、编码、测试和维护,并在此基础上简洁地介绍了面向对象的开发方法。 为了紧密配合软件开发方法和技术的应用,本书还介绍了统一建模语言UML和Rational Rose软件开发工具。
本书各章介绍以基本原理、方法、技术为前导,向工具和其他内容展开。 由浅入深的表述方式有助于读者的理解。 书中内容尽量做到通俗易懂,图文并茂,理论结合实际。 每章有总结和练习,帮助读者进一步掌握和巩固知识。
全书共分为14章。
第1章,软件工程概述。 概括介绍计算机软件概念、软件危机、软件生命周期、软件瀑布模型和其他模型。
第2章,项目计划。 主要介绍问题定义和可行性研究。
第3章,需求分析。 主要介绍需求分析的任务、需求类型、特点,数据流图以及数据字典等需求分析工具。 着重介绍面向数据流的结构化分析方法。
第4章,概要设计。 主要介绍结构化设计及优化,包括模块化、耦合与内聚等。重点介绍结构化设计方法、技术和工具以及数据库设计等。
第5章,详细设计。 主要介绍详细设计的任务与内容、设计规则以及几种常用的详细设计工具。
第6章,编码。 主要介绍程序设计语言的特点与分类、编码风格。
第7章,测试。 主要介绍软件测试概述,测试方法与策略,测试用例的设计以及单元、集成与系统测试方法。
第8章,软件维护。 主要介绍软件维护的类型和维护过程。
第9章,面向对象方法。 主要介绍面向对象的基本概念、面向对象分析和面向对象设计。
第10章,面向对象系统的测试。 主要介绍面向对象测试模型,分析、设计和编程测试,单元、集成和系统测试以及面向对象测试用例设计。
第11章,软件项目管理。 主要介绍软件度量、软件开发成本估算、进度安排以及软件文档管理。
第12章,软件质量与可靠性。 主要介绍软件的质量要求、软件能力的概念、CMM模型、软件可靠性和软件质量管理标准。
第13章,统一建模语言UML。 主要介绍UML的特点与内容,UML的静态建模、动态建模的方法和标示。
第14章,Rational Rose。 主要介绍Rose的功能与特点,Rose工具的基本操作和符号表示,Rose的各种模型视图以及Rose的双向工程。
本书由张虹教授主编。 第1、12章由张虹和荣新节编写;第2、3、4、5、ll章由刘迎春编写;第6、7、8、10章由姜淑娟编写;第9章由刘迎春和李宁编写;第13、14章由张虹和曾文斌编写。 全书由张虹统一修改定稿。
本书可作为高等院校高年级本科生或研究生教材,也可供从事计算机软件工作的人员或用户阅读。
该书在编写过程中参考了有关著作,同时也得到了有关方面的专家和老师们的帮助。 笔者在此一并表示深切感谢。 由于时间仓促,水平有限,书中难免有表达不当和错误之处,敬请读者批评指正。