内容简介
第1篇 面向过程的软件工程
第1章 概述
1.1软件和软件危机
1.1.1软件的定义、特点及分类
1.1.2软件危机的定义及表现形式
1.1.3软件危机的产生原因及解决途径
1.2软件工程
1.2.1软件工程的定义及目标
1.2.2软件工程的研究内容和基本原理
1.2.3软件工程的发展史
1.3软件过程和软件的生存周期
1.3.1软件过程
1.3.2软件生存周期
1.4软件开发模型
1.4.1瀑布模型
1.4.2快速原型模型
1.4.3增量模型
1.4.4螺旋模型
1.4.5喷泉模型
1.4.6基于构件的开发模型
1.4.7统一过程(RUP)模型
1.4.8基于形式化的开发模型
1.5传统的软件工程和面向对象的软件工程
1.5.1传统软件工程方法
1.5.2面向对象软件工程方法
1.5.3传统软件工程和面向对象软件工程的分析方法对比
本章小结
习题1
第2章 可行性研究
2.1可行性研究的目的和任务
2.2可行性研究的步骤
2.3系统流程图
2.3.1系统流程图的符号
2.3.2系统流程图示例
2.4成本—效益分析
2.4.1货币的时间价值
2.4.2投资回收期
2.4.3纯收入
2.5可行性研究报告的主要内容
本章小结
习题2
第3章 软件需求分析
3.1需求分析的任务和步骤
3.1.1需求分析的任务
3.1.2需求分析的步骤
3.2需求获取的常用方法
3.2.1需求获取的常用方法
3.2.2快速建立软件原型模型来获取需求
3.3需求分析的常用方法
3.3.1功能分解方法
3.3.2结构化分析方法
3.3.3信息建模方法
3.3.4面向对象方法
3.4结构化分析方法
3.4.1自顶向下逐层分解的分析策略
3.4.2结构化分析描述工具
3.4.3数据流图
3.4.4数据字典
3.4.5加工逻辑的描述
3.5需求分析图形工具
3.5.1层次方框图
3.5.2维纳图
3.5.3 IPO图
3.6 SA方法的应用
3.7数据库内容的需求分析和描述
3.7.1数据库内容的需求分析
3.7.2数据库内容的需求分析描述
3.8需求规格说明书
本章小结
习题3
第4章 软件总体设计
4.1软件总体设计的目标和任务
4.2软件结构设计准则
4.2.1软件体系结构设计准则
4.2.2软件模块设计准则
4.3软件设计的概念和原理
4.3.1模块和模块化
4.3.2抽象
4.3.3信息隐蔽和局部化
4.3.4模块独立性及其度量
4.4数据库设计
4.4.1数据库系统的三级模式概念
4.4.2数据库逻辑设计原则
4.4.3关系数据库规范化
4.5软件结构设计的图形工具
4.5.1软件结构图
4.5.2层次图
4.5.3 HIPO图
4.6结构化设计方法
4.6.1数据流图及其类型
4.6.2结构化设计方法的步骤
4.6.3变换型数据流图的分析设计
4.6.4事务型数据流图的分析设计
4.6.5综合分析设计
4.7总体设计说明书
本章小结
习题4
第5章 软件详细设计
5.1详细设计的目的与任务
5.2结构化程序设计
5.3详细设计工具
5.3.1程序流程图
5.3.2盒图(N-S图)
5.3.3问题分析图(PAD图)
5.3.4过程设计语言(PDL)
5.4人机界面设计
5.4.1人机界面设计问题
5.4.2人机界面设计原则
5.4.3人机界面设计过程
5.5详细设计说明书
本章小结
习题5
第6章 软件编码
6.1程序设计语言的分类
6.1.1基础语言
6.1.2结构化语言
6.1.3面向对象语言
6.2程序设计语言的选择
6.3程序设计风格
6.3.1程序内部文档
6.3.2数据说明
6.3.3语句构造
6.3.4输入/输出
6.3.5效率
本章小结
习题6
第7章 软件测试
7.1软件测试的目标
7.2软件测试的原则
7.3软件测试方法及分类
7.3.1静态测试与动态测试
7.3.2黑盒测试与白盒测试
7.4软件测试用例的设计
7.4.1白盒技术
7.4.2黑盒技术
7.5软件测试过程
7.5.1单元测试
7.5.2集成测试
7.5.3确认测试
7.5.4系统测试
7.5.5α测试和β测试
7.6调试
7.6.1调试的目的和任务
7.6.2常用调试技术
7.7软件测试阶段终止的条件
本章小结
习题7
第8章 软件维护
8.1软件维护概述
8.1.1软件维护的定义
8.1.2软件维护的分类
8.1.3软件维护的特点
8.2软件维护的过程
8.2.1结构化维护与非结构化维护
8.2.2维护组织
8.2.3维护工作的流程
8.2.4维护工作的组织管理
8.3软件可维护性
8.3.1软件可维护性的定义
8.3.2软件可维护性的度量
8.3.3提高软件可维护性的方法
8.4软件维护中存在的问题
8.4.1软件维护困难的表现
8.4.2软件维护的副作用
8.4.3软件维护的代价
8.5再工程和逆向工程
8.5.1再工程与逆向工程的概念
8.5.2为什么要实施软件再工程
8.5.3软件再工程技术
本章小结
习题8
第2篇 面向对象的软件工程
第9章 面向对象方法学
9.1面向对象方法概述
9.1.1面向对象方法学的发展
9.1.2面向对象方法学的优点和不足
9.2面向对象的软件工程
9.2.1面向对象基本概念
9.2.2对象、类及类之间关系的分析
9.2.3典型的面向对象开发方法
9.3统一建模语言UML
9.3.1 UML的发展
9.3.2 UML的定义及主要内容
9.3.3 UML的特点和用途
9.3.4 UML的模型视图简介
9.3.5 UML常用软件开发工具
9.4统一软件开发过程RUP概述
9.4.1 RUP的历史
9.4.2 RUP的特色
9.4.3 RUP软件开发的生存周期
9.4.4 RUP过程的建模
本章小结
习题9
第10章 面向对象的分析
10.1面向对象的分析过程
10.1.1用例模型
10.1.2对象模型
10.1.3动态模型
10.1.4物理(实现)模型
10.1.5 4种模型之间的关系
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.3.4建立对象类图
10.3.5划分主题
10.3.6优化对象模型
10.4建立动态行为模型
10.4.1建立顺序图
10.4.2建立通信图
10.4.3建立状态图
10.4.4建立活动图
10.5建立物理实现模型
10.5.1建立构件图
10.5.2建立部署图
10.6面向对象软件开发过程的案例分析
10.6.1系统需求
10.6.2系统用例模型
10.6.3系统对象模型
10.6.4系统动态行为模型
10.6.5系统物理实现模型
本章小结
习题10
第11章 面向对象的设计与实现
11.1面向对象的设计准则和启发式规则
11.1.1面向对象设计准则
11.1.2启发式规则
11.2系统设计
11.2.1问题域子系统设计
11.2.2人机交互子系统设计
11.2.3任务管理子系统设计
11.2.4数据管理子系统设计
11.3服务、关联与聚合关系设计
11.3.1服务设计
11.3.2关联设计
11.3.3聚合关系设计
11.4面向对象设计优化
11.5面向对象系统的实现
11.5.1面向对象程序设计语言的选择
11.5.2面向对象程序设计风格
本章小结
习题11
第12章 软件开发工具StarUML及其应用
12.1软件开发工具StarUML概述
12.1.1 StarUML的安装及使用
12.1.2 StarUML的主要功能
12.2 StarUML环境下的UML图形建模
12.2.1 StarUML的用例图、类图和包图
12.2.2 StarUML的交互图和状态机图
12.2.3 StarUML的构件图与部署图
12.2.4 StarUML的正向工程和逆向工程
12.3一个简易教学管理系统的分析和设计
12.3.1系统需求描述及分析
12.3.2系统问题领域分析
12.3.3静态结构模型的建立
12.3.4动态行为模型的建立
12.3.5系统物理模型的建立
12.3.6代码框架自动生成的过程
本章小结
习题12
第13章 软件体系结构
13.1软件体系结构概述
13.2经典的软件体系结构风格
13.2.1管道-过滤器(流程处理)体系结构
13.2.2分层体系结构
13.2.3客户机/服务器体系结构
13.2.4浏览器/服务器体系结构(B/S)
13.3现代的软件体系结构风格
13.3.1公共对象请求代理体系结构
13.3.2基于层次消息总线的体系结构风格
13.3.3异构结构风格
本章小结
习题13
第14章 设计模式
14.1设计模式概述
14.1.1设计模式的出现和发展
14.1.2设计模式和软件体系结构的关系
14.1.3设计模式的优点和分类
14.2 GRASP设计模式及其应用
14.2.1 GRASP设计模式概念及其分类
14.2.2几种典型的GRASP设计模式应用简介
14.3 GoF设计模式及其应用
14.3.1 GoF设计模式的组成及其分类
14.3.2创建型GoF设计模式应用实例
14.3.3结构型GoF设计模式应用实例
14.3.4行为型GoF设计模式应用实例
本章小结
习题14
第15章 软件工程新技术
15.1软件复用技术
15.1.1软件复用概念及分类
15.1.2软件复用的关键技术和复用粒度
15.2基于构件的软件工程技术
15.2.1中间件技术
15.2.2构件与构件化
15.2.3构件模型及描述语言
15.2.4构件的检索与组装
15.2.5基于构件的软件工程方法
15.2.6 SOA与SaaS
15.3软件过程与标准化
15.3.1软件过程及其改进
15.3.2 ISO 9000标准
15.3.3软件能力成熟度模型(CMM)
15.3.4 PSP、TSP和CMMI
15.4敏捷软件开发过程
15.4.1敏捷及敏捷过程相关概念
15.4.2典型的敏捷过程模型
15.5 Web软件工程
15.5.1 Web软件工程概述
15.5.2 Web软件的需求分析
15.5.3 Web软件的设计
15.5.4 Web软件的测试
15.6软件产品线技术
15.6.1软件产品线基本概念
15.6.2软件产品线方法
15.6.3北大青鸟工程
本章小结
习题15
第3篇 软件工程实验
第16章 软件工程实验
16.1面向过程的软件工程实验
实验1图书管理系统的可行性分析
实验2图书管理系统的项目开发计划
实验3图书管理系统的需求分析
实验4图书管理系统的总体设计
实验5图书管理系统的详细设计及编码实现
实验6图书管理系统的测试
实验7图书管理系统用户手册的撰写
实验8图书管理系统项目开发总结报告的撰写
16.2面向对象的软件工程实验
实验9浏览器系统的可行性分析
实验10浏览器系统的项目开发计划
实验11浏览器系统的需求分析
实验12浏览器系统的体系结构设计
实验13采用面向对象方法进行浏览器系统的详细设计
实验14利用StarUML正向工程功能完成代码框架的自动生成实验
实验15利用StarUML逆向工程功能完成修改设计的实验
实验16浏览器系统的测试
实验17浏览器系统用户手册的撰写
实验18浏览器系统项目开发总结报告的撰写
附录A UML图总结
A.1活动图
A.2类图
A.3通信图
A.4构件图
A.5组合结构图
A.6部署图
A.7对象图
A.8包图
A.9参数化通信图
A.10顺序图
A.11状态图
A.12计时图
A.13用例图
附录B UML中定义的常用版型(stereotype)、约束(constraint)和标记(tag)
附录C GOF给出的软件设计模式
C.1创建型模式(Creational)
C.2结构型(Structural)模式
C.3行为(Behavioral)模式
参考文献