第1章 软件工程概述 1
1.1 软件技术的发展 2
1.1.1 软件的概念 2
1.1.2 软件的分类 2
1.1.3 软件的发展概述 3
1.2 软件危机 4
1.2.1 什么是软件危机 4
1.2.2 软件危机产生的原因 5
1.2.3 解决软件危机的方法 5
1.3 软件工程 6
1.3.1 软件工程的概念 6
1.3.2 软件工程学的概念 6
1.3.3 软件工程过程 7
1.3.4 软件生存期及各阶段的基本任务 7
1.3.5 软件工程的目标和原则 9
1.3.6 软件工程的方法学 9
习题一 10
第2章 软件可行性研究 11
2.1 提出问题 11
2.2 可行性研究 11
2.2.1 技术可行性的研究 12
2.2.2 经济可行性的研究 13
2.2.3 操作可行性的研究 19
2.3 可行性研究的步骤 19
习题二 20
第3章 软件需求分析 21
3.1 需求分析的任务 21
3.1.1 分析系统要求 21
3.1.2 确定系统模型 22
3.2 需求分析的过程 24
3.2.1 问题识别 24
3.2.2 分析与综合 25
3.2.3 书写需求分析阶段的文档 25
3.2.4 需求分析审查与评审 29
3.3 需求分析的方法 29
3.3.1 系统流程图 29
3.3.2 数据流图 31
3.3.3 数据字典 34
3.4 图形工具 35
3.4.1 E-R图 35
3.4.2 层次方框图 36
3.4.3 warnier方法 37
3.4.4 IPO图 37
习题三 39
第4章 软件设计 41
4.1 软件设计的过程 41
4.1.1 总体设计 41
4.1.2 详细设计 45
4.2 软件设计的原则 47
4.2.1 抽象化设计原则 47
4.2.2 模块化设计原则 47
4.2.3 自顶向下,逐步细化原则 48
4.3 有效的模块设计 49
4.3.1 模块 50
4.3.2 内聚性 50
4.3.3 耦合性 53
4.4 结构化程序设计方法 57
4.4.1 程序流程图 57
4.4.2 N-S图 59
4.4.3 PAD图 60
4.5 Jackson程序设计方法 61
4.5.1 Jackson程序设计方法 62
4.5.2 Jackson程序设计方法步骤 62
4.6 设计规格说明与设计评审 64
习题四 65
第5章 程序编码 66
5.1 程序设计语言 66
5.1.1 程序设计语言的分类 66
5.1.2 如何选择程序设计语言 68
5.2 程序设计风格 68
5.3 程序复杂性的度量 71
习题五 74
第6章 软件测试 75
6.1 软件测试的基本概念 75
6.1.1 软件测试的目标 75
6.1.2 软件测试的原则 77
6.1.3 确认和验证的关系 79
6.1.4 软件测试的信息流 79
6.2 程序错误分类 80
6.2.1 按错误的影响和后果分类 80
6.2.2 按错误的性质和范围分类 81
6.2.3 按软件生存期阶段分类 83
6.2.4 错误统计 84
6.3 软件测试方法 84
6.3.1 黑盒测试的方法 84
6.3.2 白盒测试的方法——静动测试两齐全 86
6.4 软件测试的过程与步骤 88
6.4.1 单元测试 89
6.4.2 集成测试的基本方法 91
6.4.3 确认测试的基本方法 93
6.4.4 系统测试的基本方法 95
6.5 软件测试用例设计 96
6.5.1 软件测试用例 96
6.5.2 软件测试的复杂性与经济性 98
6.6 软件测试计划与软件测试分析报告 99
6.6.1 测试计划的内容 100
6.6.2 测试分析报告的内容 101
习题六 102
第7章 面向对象的软件工程 103
7.1 面向对象的基本概念 103
7.1.1 对象与类 104
7.1.2 其他主要概念 106
7.2 面向对象的分析方法 109
7.2.1 面向对象的软件开发周期 109
7.2.2 面向对象分析的基本过程 110
7.2.3 对象模型 110
7.2.4 动态模型 116
7.2.5 功能模型 119
7.3 面向对象的设计 122
7.3.1 面向对象设计的特点和设计原则 122
7.3.2 系统设计过程 123
7.3.3 对象设计过程 127
7.3.4 面向对象编程 128
7.3.5 面向对象的测试 129
习题七 130
第8章 软件运行与维护 132
8.1 软件的维护 132
8.1.1 软件维护的概念 132
8.1.2 软件维护的特点 132
8.2 维护组织 133
8.3 软件维护活动 134
8.4 维护的工作流程 136
8.5 软件维护文档的编写 137
8.6 软件的可维护性 139
8.6.1 软件维护存在的问题 139
8.6.2 维护费用的估计 139
8.6.3 影响软件维护的因素 140
8.6.4 提高软件可维护性的方法 141
习题八 145
第9章 软件项目管理 146
9.1 软件项目的管理过程 146
9.1.1 软件的范围与资源 146
9.1.2 软件项目的管理过程 148
9.2 软件项目的组织管理 149
9.2.1 人员组织管理 149
9.2.2 项目进度安排 151
9.3 软件开发成本估计 154
9.4 配置管理 159
9.5 质量管理 162
习题九 164
附录 习题参考答案 165
主要参考文献 173