上篇 软件工程基础篇 3
第1章 软件工程概述 3
1.1软件的概念 3
1.1.1软件和软件产品 3
1.1.2软件产品的类型 4
1.2软件的发展与软件危机的产生 6
1.2.1软件的发展过程 7
1.2.2软件危机 8
1.2.3软件危机的表现 9
1.3解决软件危机的途径 9
1.4软件工程的定义 10
1.5软件工程的内容 11
1.5.1从计算机科学视角看软件工程 11
1.5.2从工程视角看软件工程 12
1.5.3从管理视角看软件工程 13
1.5.4从基本原理视角看软件工程 14
1.6软件发展的新阶段与新问题 15
1.6.1软件发展的第4阶段和第5阶段 15
1.6.2以面向对象为基础的面向架构技术 16
1.6.3以业务单元为基础的面向服务架构SOA 16
1.6.4以软件作为服务的应用模式 17
1.7软件工程的演变发展 19
1.7.1从软件技术到软件工程 19
1.7.2从传统软件工程到现代软件工程 20
1.7.3从软件工程学到软件经济学 23
1.7.4从软件工程应用到教学 24
本章小结 24
习题 25
第2章 软件过程 27
2.1软件过程概述 27
2.1.1软件过程定义 27
2.1.2软件过程的活动集合 27
2.1.3软件过程贯穿软件工程方法论 28
2.2软件过程与软件生存周期 29
2.2.1软件生存周期 29
2.2.2软件生存周期与软件过程的关系 30
2.3软件过程与软件工程 30
2.3.1工程是管理过程的 30
2.3.2软件过程是软件工程的子集 30
2.4软件开发模型 31
2.4.1瀑布模型 31
2.4.2快速原型模型 32
2.4.3增量模型 33
2.4.4螺旋模型 34
2.4.5统一过程RUP 35
2.4.6敏捷开发与极限编程 40
2.4.7关于RUP与XP之争 44
2.5软件过程与开发方法 44
2.5.1软件开发的本质与开发方法 44
2.5.2面向过程开发方法 45
2.5.3面向对象开发方法 45
2.5.4面向组件开发方法 45
2.5.5面向服务开发方法 46
2.5.6开发方法进步带来的思考 46
2.6软件过程改进与CMM 47
2.6.1过程改进SPI 47
2.6.2软件能力成熟度模型SW-CMM 48
本章小结 51
习题 51
第3章 软件计划 53
3.1软件计划概述 53
3.2问题定义 54
3.3可行性分析 56
3.3.1可行性分析概要介绍 56
3.3.2可行性分析的方法 57
3.3.3可行性分析工具之SFD 60
3.3.4可行性分析之业务建模 62
3.3.5可行性分析报告 67
3.3.6软件项目计划 68
本章小结 68
习题 69
第4章 软件需求基础 71
4.1需求分析概述 71
4.1.1需求分析的必要性 71
4.1.2需求分析的内容和步骤 73
4.2需求获取 75
4.2.1需求获取的内容和手段 75
4.2.2需求的层次 75
4.2.3需求获取方法与策略 76
4.3需求建模 78
4.3.1需求建模的意义 78
4.3.2需求建模的过程 79
4.3.3需求建模的方法 79
4.4需求说明 81
4.4.1需求说明的作用 81
4.4.2需求说明质量要求 81
4.4.3需求规格说明的编制 83
4.5需求评审 85
4.5.1需求评审概述 85
4.5.2需求评审举例说明 87
4.6需求变更管理 88
4.6.1需求变更与需求管理 88
4.6.2变更管理组织与流程 89
本章小结 90
习题 90
第5章 软件设计基础 91
5.1软件开发的逐步求精 91
5.1.1逐步求精的概念 91
5.1.2软件开发的求精过程 92
5.1.3过程求精与数据求精 92
5.2软件设计过程和任务 94
5.2.1软件设计的输入和输出 94
5.2.2软件设计的总体任务 94
5.2.3软件设计的文档 95
5.3模块化与信息隐藏 96
5.3.1模块和模块化 96
5.3.2模块分解原理 96
5.3.3信息隐藏思想 97
5.3.4模块独立性度量 97
5.3.5模块优化的一些概念 100
5.4详细设计 101
5.4.1详细设计的作用 101
5.4.2详细设计的内容 102
5.4.3详细设计的表达方式 103
5.4.4详细设计说明书 105
本章小结 105
习题 105
第6章 面向结构化从分析到设计 107
6.1结构化开发概述 107
6.2面向数据流的结构化分析 108
6.2.1数据流图 109
6.2.2 DFD的分析思想 110
6.2.3 DFD举例 111
6.2.4数据字典 112
6.3面向数据流的结构化设计 113
6.3.1从需求模型到设计模型 113
6.3.2软件结构图 114
6.3.3从DFD映射到SC 115
本章小结 117
习题 117
第7章 面向对象从分析到设计 118
7.1面向对象开发简介 118
7.1.1面向对象的基本概念 118
7.1.2面向对象的软件开发 122
7.1.3面向对象开发的优点 124
7.1.4面向对象是走向高端的基础 126
7.2统一建模语言UM 126
7.2.1建模语言的概念 126
7.2.2 UML发展史 127
7.2.3 UML图形符号概览 129
7.2.4用例图 129
7.2.5类图与对象图 131
7.2.6包图 142
7.2.7活动图与状态图 146
7.2.8对象交互图 150
7.2.9组件图与部署图 154
7.2.10 UML视图简介 157
7.3面向对象分析(OOA) 159
7.3.1 OOA方法的统一 159
7.3.2统一方法的OOA模型 161
7.3.3用例模型 161
7.3.4概念模型 166
7.4面向对象设计 170
7.4.1 OOD概述 170
7.4.2 OOD模型 172
7.4.3问题域部分的设计 173
7.4.4界面交互设计 180
7.4.5数据管理部件设计 186
7.4.6任务管理设计 194
本章小结 196
习题 197
第8章 软件实现 199
8.1编码 199
8.1.1编程语言 199
8.1.2编码风格 200
8.1.3调试 200
8.2测试 201
8.2.1测试的基本概念 201
8.2.2测试计划 205
8.2.3测试方法 207
8.2.4测试过程 217
8.2.5测试设计与测试报告 224
8.2.6测试工具 227
本章小结 229
习题 230
第9章 软件维护 232
9.1软件维护概述 232
9.1.1软件维护的概念 232
9.1.2软件维护的重要性 232
9.2软件维护的分类 233
9.2.1纠错性维护 233
9.2.2适应性维护 233
9.2.3改善性维护 233
9.2.4预防性维护 234
9.2.5各种维护的比重 234
9.3软件的可维护性 234
9.3.1维护的副作用及困难 234
9.3.2软件结构化维护 236
9.4软件维护的实施过程 237
9.4.1维护组织和流程 237
9.4.2维护的决策流程 238
9.4.3维护的报告与审核 240
9.4.4保存维护记录 240
9.4.5评价维护活动 241
9.4.6可维护性复审 241
9.5配置管理 241
9.5.1软件配置 242
9.5.2软件配置管理 242
9.5.3配置管理的功能 244
9.5.4配置管理工具 245
本章小结 247
习题 247
第10章 软件项目管理 248
10.1项目和项目管理的基本概念 248
10.1.1项目的意义 248
10.1.2软件项目管理过程 250
10.2软件度量 252
10.2.1软件度量概述 252
10.2.2面向代码行的度量 255
10.2.3面向功能的度量 256
10.3软件估算 261
10.3.1软件估算概述 261
10.3.2软件规模估算 264
10.3.3软件成本估算 266
10.4开发进度计划 271
10.4.1项目计划与进度计划 271
10.4.2时间管理与进度计划 272
10.4.3进度计划的安排 273
10.4.4开发进度管理 285
10.5团队组织与人力资源计划 286
10.5.1任务分解与人员配备 286
10.5.2人员配备规则 289
10.5.3项目组织 291
10.5.4项目经理 293
本章小结 294
习题 295
下篇 软件工程实用篇 299
第11章 架构与MVC模式 299
11.1软件架构 299
11.1.1软件架构与企业软件架构 300
11.1.2企业架构解决软件开发的什么问题 302
11.1.3架构的容器与组件 305
11.1.4流行的企业架构简介 307
11.2架构的分层 308
11.2.1架构为什么分层 309
11.2.2基本的三层结构 309
11.2.3客户层与业务层 310
11.2.4数据层与DAO 311
11.2.5业务层与DAO层 315
11.2.6 N层体系结构 316
11.3 Java EE架构简介 317
11.3.1 J2EE架构概览 317
11.3.2 J2EE容器和组件 318
11.3.3 J2EE分层模型 323
11.3.4 J2EE的发展 324
11.3.5 J2EE的优势 326
11.4面向企业集成的架构简介 327
11.4.1为什么采用集成 327
11.4.2面向服务架构 329
11.4.3服务组件架构 333
11.4.4应用集成与数据集成 343
11.5 MVC模式 346
11.5.1设计模式 347
11.5.2 WC模式简介 348
11.5.3通过具体用例体验模式的魅力 349
11.6架构分层与MVC分层 357
11.6.1架构分层与MVC分层的区别 357
11.6.2架构分层与MVC分层的统一 358
11.6.3 WC模式与事件驱动模型 359
11.6.4 MVC模式与观察者模式 361
11.6.5 MVC在开发方面塑造的优势 363
11.7开源架构SSH简介 364
11.7.1 MVC框架Struts 365
11.7.2 DAO框架Hibernate 374
11.7.3对象组装框架Spring 381
本章小结 390
习题 391
第12章 面向架构与MVC的一体化开发方法 393
12.1一体化开发介绍 393
12.1.1一体化开发思想的起源 393
12.1.2一体化开发模型 394
12.1.3一体化开发团队 395
12.2一体化与正交设计 395
12.2.1 OOA模型的处理 396
12.2.2正交设计方法 397
12.2.3软件体系结构设计 399
12.2.4领域问题软件结构设计 400
12.2.5有关详细设计 405
12.2.6系统隐喻与设计 407
本章小结 407
习题 408
第13章 一体化开发方法应用实例 409
13.1用户需求 410
13.1.1毕业设计流程 410
13.1.2总体功能要求 410
13.1.3用户需求描述 410
13.2 OOA分析过程 412
13.2.1需求细化 412
13.2.2用例模型 413
13.2.3概念模型 416
13.3 OOD设计过程 418
13.3.1体系结构设计 418
13.3.2选题管理结构设计 419
13.3.3正交设计之横向链设计 419
13.3.4正交设计之纵向按层设计 421
13.3.5本例的详细设计 432
本章小结 436
习题 437
参考文献 438
本书特色 441
教学建议 442
跋 443