目 录
第一篇 软件工程知识储备
第1章 软件工程 3
1.1 软件工程概述 4
1.1.1 软件工程的定义 4
1.1.2 软件工程的目标 5
1.1.3 软件工程的基本原则 6
1.1.4 软件工程的作用 6
1.1.5 软件工程基本流程ERCM 7
1.2 现代软件工程 8
1.2.1 开源软件运动 9
1.2.2 SaaS 10
1.3 学习笔记 11
第2章 软件过程 12
2.1 软件过程的定义 13
2.2 软件生命周期 13
2.3 软件过程的模型 14
2.3.1 传统模型 14
2.3.2 快速应用开发模型(RAD) 14
2.3.3 演化模型 14
2.4 软件过程管理 14
2.5 软件工程常用定义及名词 16
2.6 学习笔记 18
第二篇 软件项目启动阶段
第3章 项目可行性研究 21
3.1 可行性研究的目的与意义 22
3.1.1 可行性研究的目的 22
3.1.2 可行性研究的意义 22
3.2 可行性研究的内容 22
3.2.1 可行性研究的总体要求 22
3.2.2 可行性研究的内容 23
3.2.3 项目可行性研究分析报告 24
3.3 实践项目可行性研究 29
3.4 学习笔记 35
第4章 软件需求分析 36
4.1 软件需求概述 37
4.1.1 软件需求的三个层次 37
4.1.2 软件需求的主要内容 38
4.1.3 软件需求的主要特征 39
4.1.4 软件需求的Kano模型 39
4.2 需求分析的目标与过程 40
4.2.1 需求分析的目标 40
4.2.2 需求分析的过程 41
4.2.3 需求分析方法 42
4.3 需求管理 44
4.4 实践项目需求分析实例 44
4.4.1 背景 44
4.4.2 项目特点 44
4.4.3 项目概述 45
4.4.4 主要功能 45
4.5 学习笔记 46
第5章 项目实施的成本效益分析 47
5.1 软件项目实施的成本 48
5.1.1 软件项目实施成本的相关概念 48
5.1.2 软件项目实施成本估算的类型与支持工具 49
5.1.3 软件项目实施成本构成及相应的指标体系 50
5.1.4 软件项目实施成本估算方法 52
5.2 软件项目实施的效益 53
5.2.1 软件项目实施效益的相关概念 53
5.2.2 软件项目实施效益指标体系组成 55
5.2.3 软件项目实施效益分析方法 56
5.3 学习笔记 59
第6章 项目计划与团队建立 60
6.1 制定项目计划 61
6.1.1 为何要制定项目计划 61
6.1.2 怎样设计项目计划 61
6.1.3 项目计划设计实例 65
6.1.4 项目计划修改与维护 71
6.2 建立项目团队 71
6.2.1 项目团队的定义 71
6.2.2 为何要建立项目团队 72
6.2.3 如何建立和管理项目团队 72
6.2.4 项目团队的组织结构 74
6.3 学习笔记 75
第三篇 软件项目实施阶段
第7章 面向对象分析与建模 79
7.1 面向对象需求分析方法 80
7.1.1 面向对象需求分析的基本过程 80
7.1.2 需求陈述 82
7.1.3 对象模型 82
7.1.4 动态模型 86
7.1.5 功能模型 87
7.1.6 定义服务 88
7.2 实践项目面向对象需求分析 89
7.2.1 UML简介 89
7.2.2 核心UML模型图 90
7.2.3 Rational Rose 95
7.2.4 Enterprise Architect 96
7.2.5 开始实践 98
7.3 学习笔记 102
第8章 总体设计 103
8.1 软件架构 104
8.2 数据库设计 106
8.2.1 确定业务行为 107
8.2.2 确定实体 107
8.2.3 确定实体间联系,形成CDM文件 109
8.2.4 将CDM文件转换为PDM文件 111
8.2.5 生成SQL语句 114
8.3 系统运行软件 115
8.3.1 操作系统 115
8.3.2 数据库 116
8.3.3 Web服务器 116
8.4 总体设计例程 116
8.5 学习笔记 124
第9章 详细设计 125
9.1 详细设计阶段的任务 126
9.2 详细设计的原则 126
9.3 实践项目包的设计 127
9.4 实践项目类的设计 129
9.4.1 实体类的设计 129
9.4.2 DAO的设计 130
9.4.3 bo层的设计 132
9.4.4 action层的设计 133
9.4.5 用时序图描述完整的请求逻辑 133
9.5 实践项目界面的设计 135
9.5.1 登录界面设计 135
9.5.2 添加新学生界面设计 135
9.5.3 学生信息管理界面设计 136
9.5.4 学生一览表界面设计 136
9.5.5 学生信息查询界面设计 136
9.5.6 学生成绩管理界面设计 136
9.5.7 学生成绩一览表界面设计 137
9.5.8 学生成绩查询界面设计 137
9.6 编写技术设计文档 137
9.7 学习笔记 144
第10章 编码实现 145
10.1 编码概述 146
10.1.1 编码语言的选择 146
10.1.2 Struts简述 146
10.1.3 Spring简述 147
10.1.4 Hibernate简述 148
10.2 Struts 2、Spring和Hibernate项目实践 149
10.2.1 准备工作 150
10.2.2 建立数据持久化层 150
10.2.3 建立DAO层 155
10.2.4 业务逻辑层 162
10.2.5 创建Action类 168
10.2.6 Web页面 172
10.2.7 配置Struts 2 174
10.2.8 配置Spring 179
10.2.9 web.xml文件配置 181
10.2.10 其他 182
10.3 学习笔记 183
第11章 项目测试 184
11.1 测试计划的制订 185
11.1.1 为何要制订测试计划 185
11.1.2 如何制订测试计划 185
11.1.3 测试计划设计实例 187
11.1.4 测试计划修改与维护 194
11.2 单元测试 194
11.2.1 分析单元测试的任务和目标 194
11.2.2 设计单元测试用例 195
11.2.3 选择单元测试工具 195
11.2.4 执行单元测试 196
11.3 集成测试 207
11.3.1 分析集成测试的任务和目标 208
11.3.2 设计集成测试用例 211
11.3.3 选择集成测试工具 216
11.3.4 执行集成测试 223
11.3.5 集成测试报告 227
11.4 确认测试 228
11.4.1 分析确认测试的任务和目标 228
11.4.2 设计确认测试用例 230
11.4.3 选择确认测试工具 234
11.4.4 执行确认测试用例 234
11.4.5 确认测试报告 238
11.5 系统测试 241
11.5.1 分析系统测试的任务和目标 241
11.5.2 设计系统测试用例 241
11.5.3 利用JMeter进行系统测试实例 245
11.5.4 系统测试报告 253
11.6 验收测试 255
11.6.1 制订项目验收标准 256
11.6.2 设计验收测试用例 259
11.6.3 执行验收测试 262
11.6.4 编写验收质量报告 263
11.7 产品发布报告 268
11.8 学习笔记 271
第12章 软件工程项目管理 272
12.1 软件项目管理简介 273
12.2 项目计划和组织 274
12.2.1 项目计划的制定 274
12.2.2 项目成员的组织和管理 276
12.3 项目进度计划 278
12.4 项目风险管理 279
12.5 项目质量管理 280
12.5.1 软件质量特性 280
12.5.2 软件质量保证 281
12.5.3 技术评审 281
12.5.4 软件质量管理体系 283
12.6 应用Project 2007进行项目管理 284
12.6.1 Project 2007简介 284
12.6.2 Project 2007工作界面 284
12.6.3 项目管理专用术语概览 288
12.7 Project操作入门 290
12.8 利用Project制定实践项目计划 292
12.9 学习笔记 297
第四篇 软件项目部署和维护
第13章 软件项目部署 301
13.1 项目部署任务和目标 302
13.1.1 项目部署的定义 302
13.1.2 项目部署的步骤 302
13.1.3 项目部署需求分析 304
13.2 制定项目部署计划 305
13.3 安全部署项目 306
13.4 部署实践项目 307
13.4.1 项目部署的准备工作 307
13.4.2 项目部署 308
13.4.3 验证部署项目 315
13.5 系统的维护 316
13.5.1 维护的内容 316
13.5.2 系统维护的类型 317
13.5.3 系统维护的组织和管理 318
13.6 学习笔记 319
附录A 大学学籍管理系统安装配制说明书 320
附录B 大学学籍管理系统产品规格说明书V1.0 335
附录C 大学图书管理系统产品需求文档(PRD)V1.0 346
附录D 大学图书管理系统产品规格说明书(SPEC) 348
附录E 作者简介 356
附录F 实践者简介 359
参考文献 361