第一部分 基 础 理 论
第1章 绪论
1.1软件概述
1.1.1什么是计算机软件
1.1.2软件的特点
1.1.3软件的分类
1.1.4软件的发展
1.1.5软件危机
1.2软件工程
1.2.1软件工程与方法学
1.2.2软件工程的基本原理
1.2.3软件工程的目标
1.2.4软件工程的内容
1.2.5软件工程原则
1.2.6软件工程面临的问题
小结
综合练习一
第2章 基本理论
2.1软件工程过程
2.2软件生命周期
2.2.1软件分析时期
2.2.2软件设计时期
2.2.3编码与测试时期
2.2.4运行与维护时期
2.3软件生命周期模型
2.3.1软件生命周期模型的概念
2.3.2瀑布模型
2.3.3原型模型
2.3.4增量模型
2.3.5螺旋模型
2.3.6喷泉模型
2.3.7基于知识的模型
2.3.8变换模型
2.4软件开发方法
2.4.1结构化方法
2.4.2Jackson方法
2.4.3维也纳开发方法
2.4.4面向对象的开发方法
2.5软件工具与开发
2.5.1软件工具箱
2.5.2软件开发环境
2.5.3计算机辅助软件工程
小结
综合练习二
第3章可行性研究
3.1可行性研究任务与步骤
3.1.1研究任务
3.1.2研究步骤
3.2系统分析
3.2.1系统分析员
3.2.2面临的问题域
3.2.3通信技术
3.3分析原理
3.3.1信息域
3.3.2建立模型
3.3.3分解
3.4系统模型与模拟
3.4.1系统模型
3.4.2系统建模和模拟
3.5成本效益分析
3.6可行性研究的文档
3.7项目开发计划
3.7.1方案选择
3.7.2制定项目开发计划
小结
综合练习三
第二部分结构化方法
第4章软件需求分析
4.1需求分析
4.1.1需求分析的特点
4.1.2需求分析的原则
4.1.3需求分析的任务
4.1.4需求分析的方法
4.2结构化分析
4.2.1自顶向下逐层分解
4.2.2结构化分析步骤
4.3系统流程图
4.4数据流图
4.4.1基本图形符号
4.4.2画数据流图
4.4.3结构化分析方法的应用
4.5数据字典
4.5.1内容及格式
4.5.2数据字典的实现
4.6关系数据理论
4.6.1数据依赖
4.6.2关系模式的操作异常
4.6.3范式
4.6.4EAR方法
小结
综合练习四
第5章 总体设计
5.1软件设计的重要性
5.2设计过程
5.3软件总体设计
5.4设计基本原理
5.4.1抽象
5.4.2细化
5.4.3模块化
5.4.4软件体系结构
5.4.5程序结构
5.4.6数据结构
5.4.7软件过程
5.5体系结构设计
5.5.1软件结构图
5.5.2模块的大小
5.5.3扇出和扇入与深度和宽度
5.5.4模块的耦合
5.5.5模块的内聚
5.5.6结构设计的一般准则
5.5.7模块的作用域与控制域
5.6结构化设计
5.6.1数据流的类型
5.6.2过程步骤
5.6.3变换分析设计
5.6.4事务分析设计
5.6.5混合流设计
5.6.6结构化设计方法应用示例
5.6.7设计的后期处理
5.7软件结构优化
5.7.1软件结构设计优化准则
5.7.2软件结构的HIPO图
小结
综合练习五
第6章 软件详细设计
6.1细节设计的任务与方法
6.1.1细节设计的基本任务
6.1.2细节设计方法
6.2设计表示法
6.2.1结构化语言
6.2.2判定表
6.2.3判定树
6.3结构化程序设计
6.3.1程序流程图
6.3.2三种基本控制结构
6.3.3常用符号
6.4结构化定理
6.4.1程序函数
6.4.2基本定理
6.4.3常见错误
6.4.4过程设计语言
6.5面向数据结构的设计
6.5.1Jackson图
6.5.2纲要逻辑
6.5.3Jackson方法
6.5.4JSP应用
6.5.5JSD方法
小结
综合练习六
第三部分面向对象方法与实现
第7章 面向对象方法概论
7.1面向对象简介
7.1.1什么是面向对象
7.1.2面向对象方法的历史及现状
7.2面向对象的相关概念
7.2.1对象
7.2.2类
7.2.3对象图
7.2.4属性
7.2.5服务(操作或方法)
7.2.6封装
7.2.7继承
7.2.8多重继承
7.2.9消息
7.2.10结构与连接
7.2.11多态性
7.2.12永久对象
7.2.13主动对象
7.2.14对象类的表示方法
7.3链接与关联
7.3.1一般概念
7.3.2重数
7.3.3关联的重要性
7.3.4三元关联
7.3.5关联的候选关键字
7.3.6异或关联
7.3.7资格关联
7.3.8链接属性
7.3.9用关联模型化为类
7.3.10角色名
7.3.11排序
7.3.12资格符
7.4构造分组
7.4.1模块
7.4.2表
小结
综合练习七
第8章模型
8.1统一建模语言
8.1.1模型的建立
8.1.2UML的基本图标
8.1.3UML语义
8.1.4UML的基本元素
8.1.5UML的词别
8.2UML的评价
8.2.1UML成功的因素
8.2.2UML能够起到的积极作用
8.2.3UML不能起到的作用
8.2.4UML存在的缺点与问题
8.2.5从U2P提案看UML的未来
8.3对象模型
8.3.1表示方法
8.3.2表示结构
8.3.3例子
8.4动态模型
8.4.1事件和状态
8.4.2操作
8.4.3嵌套状态图
8.4.4实践技巧
8.5功能模型
8.5.1数据流图
8.5.2指定的操作
8.5.3约束
8.5.4功能模型的实例
8.5.5功能模型与对象模型和动态模型的关系
小结
综合练习八
第9章 对象分析
9.1对象、主动对象以及它们的类
9.2研究问题域和用户需求
9.2.1研究用户需求,明确系统责任
9.2.2研究问题域
9.2.3确定系统边界
9.3发现对象
9.3.1正确地运用抽象原则
9.3.2策略与启发
9.3.3审查和筛选
9.3.4识别主动对象
9.4对象的发现和标识
9.4.1动机
9.4.2方法
9.4.3三视图模型(3VM)
9.4.4语言信息分析
9.5对象分类,建立类图的对象层
9.5.1异常情况的检查和调整
9.5.2类的命名
9.5.3建立类图的对象层
9.6对象的属性和服务
9.7定义属性
9.7.1策略与启发
9.7.2审查与筛选
9.7.3推迟到OOD考虑的问题
9.7.4属性的命名和定位
9.7.5属性的详细说明
9.8定义服务
9.8.1对象的状态与状态转换图
9.8.2行为分类
9.8.3发现服务的策略与启发
9.8.4审查与调整
9.8.5认识对象的主动行为
9.8.6服务的命名和定位
9.8.7服务的详细说明
9.9应用实例
9.9.1功能需求
9.9.2发现对象
9.9.3对象层表示
9.9.4电梯系统的属性描述
9.9.5电梯系统的服务定义
9.9.6电梯系统的特征层
小结
综合练习九
第10章 关系分析
10.1整体部分结构
10.1.1整体部分结构及其用途
10.1.2表示法
10.1.3如何发现整体部分结构
10.1.4审查与筛选
10.1.5简化对象的定义
10.1.6支持软件复用
10.1.7整体部分结构的进一步运用
10.1.8调整对象层和属性层
10.2一般特殊结构
10.2.1一般特殊结构及其用途
10.2.2表示法
10.2.3如何发现一般特殊结构
10.2.4审查与调整
10.2.5多继承及多态性问题
10.2.6一般特殊结构的简化
10.2.7调整对象层和特征层
10.3实例连接
10.3.1简单的实例连接
10.3.2复杂的实例连接及其表示
10.3.3三元关联问题
10.3.4如何建立实例连接
10.3.5对象层、特征层的增补及实例连接说明
10.4消息连接
10.4.1消息的定义
10.4.2顺序系统中的消息
10.4.3并发系统中的消息
10.4.4消息对OOA的意义
10.4.5OOA对消息的表示--消息连接
10.5如何建立消息连接
10.5.1建立控制线程内部的消息连接
10.5.2建立控制线程之间的消息连接
10.5.3对象分布问题及其消息的影响
10.6消息的详细说明
10.7电梯例子
10.7.1一般特殊关系
10.7.2整体部分关系
10.7.3连接
10.7.4电梯控制系统的关系层
小结
综合练习十
第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.3.1对象类的领域
11.3.2依附集
11.3.3类的内聚: 一个类和它的特性
11.4继承与多态性的危险性
11.4.1继承的滥用
11.4.2错误的聚集
11.4.3倒置的层次结构
11.4.4混淆类及其实例
11.4.5误用
11.4.6多态性的危险性
11.5状态空间和行为
11.5.1一个类的状态空间和行为
11.5.2子类的状态空间
11.5.3子类的行为
11.5.4类的不变式
11.5.5前置条件和后置条件
11.5.6类接口中支持的状态
11.5.7类接口中支持的行为
11.5.8类接口中操作的聚合
小结
综合练习十一
第12章 对象设计
12.1对象设计综述
12.1.1从分析和系统结构着手
12.1.2对象设计的步骤
12.1.3对象模型工具
12.2组合三种模型
12.3设计算法
12.3.1选择算法
12.3.2选择数据结构
12.3.3定义内部类和操作
12.3.4指定操作的职责
12.4设计优化
12.4.1添加冗余关联获取有效访问
12.4.2重新安排执行次序以获得效率
12.4.3保存导出属性避免重复计算
12.5控制实现
12.5.1在程序内进行状态设置
12.5.2状态机器引擎
12.5.3控制作为并发任务
12.6继承的调整
12.6.1重新安排类和操作
12.6.2抽象出公共的行为
12.6.3使用授权共享实现
12.7关联设计
12.7.1分析关联遍历
12.7.2单向关联
12.7.3双向关联
12.7.4链接属性
12.8对象的表示
12.9物理打包
12.9.1信息隐藏
12.9.2实体的相关性
12.9.3构造模块
12.10设计决策文档
12.11控制驱动部分
12.12相关技术问题
12.12.1系统总体方案
12.12.2软件体系结构
12.12.3分布式系统的体系结构风格
12.12.4系统的并发性
12.13如何设计控制驱动部分
12.13.1选择软件体系结构风格
12.13.2确定系统分布方案
12.13.3识别控制流
12.13.4用主动对象表示控制流
12.13.5把控制驱动部分看作一个主题
小结
综合练习十二
第13章 接口设计
13.1人的因素
13.1.1分析活动者
13.1.2从Use Case分析人机交互
13.1.3分析处理异常事件的人机交互
13.1.4命令的组织
13.1.5输出信息的组织结构
13.2界面设计风格
13.2.1菜单的选择
13.2.2对话框
13.2.3窗口
13.3人机界面的设计准则
13.4人机界面设计过程
13.4.1用户界面模型
13.4.2界面支持系统
13.4.3界面元素
13.4.4设计的形式
13.5描述方法与技术
13.5.1灵境技术
13.5.2多通道人机交互技术
13.6数据管理系统及其选择
13.7技术整合
13.8数据接口
13.9对象存储方案和数据接口的设计策略
13.9.1针对文件系统的设计
13.9.2针对RDBMS的设计
13.9.3使用OODBMS
小结
综合练习十三
第14章 形式化方法
14.1基础知识
14.1.1形式化方法概念
14.1.2形式化规约语言
14.2有限状态机(FSM)
14.3Petri网基本原理
14.3.1静态结构
14.3.2动态特征
14.3.3转移启动规则
14.3.4行为特性
14.3.5行为特性分析方法
14.3.6结构特性分析方法
14.3.7Petri网到程序结构的转换
小结
综合练习十四
第15章 软件实现
15.1程序设计语言的特性及选择
15.1.1程序设计语言特性
15.1.2程序设计语言的选择
15.2程序设计风格
15.3程序设计效率
15.3.1代码效率
15.3.2内存效率
15.3.3I/O效率
15.4冗余编程
15.5软件容错技术
15.5.1容错软件
15.5.2容错的一般方法
15.5.3容错软件的设计过程
15.5.4软件的容错系统结构
小结
综合练习十五
第四部分质量与工程管理
第16章 软件质量
16.1软件质量概述
16.1.1软件质量的定义
16.1.2软件质量特性
16.1.3软件质量特性之间的竞争
16.2软件质量的度量和评价
16.2.1软件质量的度量
16.2.2软件质量度量的分类
16.2.3软件质量评价
16.3软件质量保证
16.3.1软件质量保证的概述
16.3.2软件质量保证原则
16.3.3软件质量保证计划
16.3.4软件质量保证的措施
16.3.5软件质量管理小组
16.4技术评审与审查
16.4.1评审过程
16.4.2选择参加评审的成员
16.4.3评审的管理和组织
16.4.4评审的方法
16.4.5走查和审查
16.4.6开发过程的评审
16.4.7对评审的综合评价
16.5软件的可靠性
小结
综合练习十六
第17章 软件测试
17.1软件测试概述
17.1.1软件测试的目的
17.1.2软件测试的原则
17.2测试方法
17.2.1静态测试
17.2.2动态测试
17.3测试用例的设计
17.3.1白盒技术
17.3.2黑盒技术
17.4测试过程
17.4.1软件测试过程中的信息
17.4.2软件测试的步骤与各开发阶段的关系
17.4.3单元测试
17.4.4集成测试
17.4.5确认测试
17.5调试
小结
综合练习十七
第18章 软件维护
18.1软件维护概述
18.1.1软件维护的定义
18.1.2影响维护工作的因素
18.1.3维护成本
18.2软件可维护性
18.2.1软件可维护性的定义
18.2.2可维护性的度量
18.3软件维护的特点
18.3.1非结构化维护和结构化维护
18.3.2维护的困难性
18.3.3软件维护的费用
18.4软件维护的实施
18.4.1维护的组织
18.4.2维护的流程
18.4.3维护技术
18.4.4维护的副作用
18.5维护“老化代码”
18.6逆向工程和再工程
18.6.1预防性维护
18.6.2逆向工程的元素
18.6.3再工程中的重构技术
小结
综合练习十八
第19章 软件项目管理与计划
19.1软件项目管理概述
19.1.1软件管理的对象
19.1.2软件开发中的资源
19.1.3分解技术
19.2项目管理过程
19.3软件开发成本估算
19.3.1软件开发成本估算方法
19.3.2软件开发成本估算的经验模型
19.4风险分析
19.4.1风险识别
19.4.2风险估算
19.4.3风险评价
19.4.4风险驾驭和监控
19.5进度安排
19.5.1软件开发小组人数与软件生产率
19.5.2任务的确定与并行性
19.5.3制定开发进度计划
19.5.4进度安排的图形方法
19.5.5项目的追踪和控制
19.6软件项目的组织
19.6.1软件项目管理的特点
19.6.2软件项目组织的建立
19.6.3人员配备
小结
综合练习十九
参考答案
参考文献