第1章 软件工程职业道德 1
1.1 职业道德的内涵与作用 2
1.1.1 概念与内涵 2
1.1.2 意义与作用 5
1.2 职业道德的基本标准 7
1.2.1 文明礼貌 7
1.2.2 爱岗敬业 8
1.2.3 诚实守信 9
1.2.4 办事公道 11
1.2.5 团结互助 11
1.2.6 服务群众 12
1.2.7 奉献社会 13
1.3 软件工程人员的职业道德标准 14
1.4 职业道德修养的形成 21
1.5 习题与练习 24
参考文献 24
扩展阅读 职业规划与评测技术 25
一、舒伯的生涯彩虹理论 26
二、马斯洛需求层次理论 28
三、霍兰德职业兴趣理论 31
四、职业人格评估工具——MBTI 38
五、SWOT分析方法 44
参考文献 50
第2章 软件与软件工程 51
2.1 软件危机 54
2.1.1 软件开发史与软件危机 56
2.1.2 软件危机产生原因与消除 60
2.2 软件工程 65
2.2.1 什么是软件工程 65
2.2.2 软件工程的三要素及基本目标 69
2.2.3 软件工程原理 72
2.3 软件生存周期 76
2.3.1 计划过程 77
2.3.2 开发过程 78
2.3.3 软件的使用与维护 79
2.4 软件开发模型 80
2.4.1 瀑布模型 80
2.4.2 原型模型 84
2.4.3 增量模型 86
2.4.4 螺旋模型 88
2.4.5 构件集成模型 90
2.4.6 其他模型 91
2.5 辩论台 92
2.6 历史和您的未来 93
2.7 习题与练习 95
参考文献 95
第3章 软件文档写作基础 97
3.1 文档规范 98
3.1.1 文档与文档工程师 99
3.1.2 文档的语法 100
3.1.3 文档的可读性 103
3.1.4 文档的技巧与案例 107
3.1.5 科技论文写作 112
3.2 代码规范 119
3.2.1 程序排版布局规则 120
3.2.2 命名约定 123
3.2.3 注释约定 126
3.3 流程图 130
3.3.1 流程图概念 130
3.3.2 流程图的基本结构 131
3.3.3 流程图的画法 135
3.4 思维导图 140
3.4.1 掌握思维导图的优势和应用领域 142
3.4.2 绘制思维导图 143
3.5 习题与练习 148
参考文献 148
第4章 项目管理初步 149
4.1 引言 151
4.2 项目的概念和项目管理知识 155
4.2.1 项目 155
4.2.2 项目固有的四项约束 157
4.2.3 项目管理的发展和现状 159
4.2.4 什么是项目管理 162
4.2.5 项目管理过程 173
4.3 立项管理 174
4.3.1 攸关成败的立项管理 174
4.3.2 锁定利益相关者 178
4.3.3 定义项目需求 182
4.3.4 进行可行性分析 184
4.3.5 项目筹备 192
4.4 结项管理 194
4.4.1 什么是结项管理 194
4.4.2 结项管理流程 195
4.5 习题与练习 197
参考文献 197
第5章 需求获取 199
5.1 软件需求的定义 200
5.2 需求的类型 201
5.2.1 功能需求 201
5.2.2 非功能需求 202
5.3 需求获取方法与困难 203
5.3.1 需求获取的方法 203
5.3.2 需求获取常见的困难 209
5.4 需求规格说明书 210
5.4.1 需求说明规格模板 210
5.4.2 优秀需求规格说明书的特性 214
5.5 需求验证 215
5.5.1 引言 215
5.5.2 需求验证的方法 216
5.6 需求变更 218
5.6.1 需求变化 218
5.6.2 变更控制过程 219
5.6.3 变更控制中的注意事项 220
5.7 习题与练习 221
参考文献 222
第6章 用例模型 223
6.1 UML简介 225
6.1.1 UML语言特点 226
6.1.2 UML模型中的基本图形元素 227
6.1.3 UML组织结构 229
6.2 需求分析与用例模型 231
6.3 用例图和用例描述 232
6.3.1 用例图 233
6.3.2 用例描述 238
6.4 建立用例模型 242
6.4.1 确定系统边界 242
6.4.2 查找系统参与者 243
6.4.3 查找系统用例 245
6.4.4 用例图优化 246
6.5 用例模型复审 253
6.6 使用StarUML绘制用例图 254
6.6.1 StarUML简介 255
6.6.2 利用StarUML绘制用例图 256
6.7 习题与练习 262
参考文献 263
第7章 系统架构分析与设计 265
7.1 架构概述 268
7.1.1 架构分析与设计的目标 269
7.1.2 架构的多重性 273
7.1.3 架构的表示 277
7.1.4 架构与应用框架 282
7.2 架构分析 288
7.2.1 架构分析概述 288
7.2.2 定义系统高层结构 290
7.2.3 分析机制及其确定 294
7.2.4 确定关键抽象 298
7.2.5 明确系统所受到的制约和约束 300
7.3 架构设计 302
7.3.1 架构设计概述 303
7.3.2 确定设计机制 305
7.3.3 说明运行时架构 315
7.3.4 说明分布 322
7.4 习题与练习 325
参考文献 325
第8章 用例分析 327
8.1 面向对象分析 328
8.2 识别分析类 330
8.2.1 什么是分析类 330
8.2.2 识别边界类 333
8.2.3 识别控制类 333
8.2.4 识别实体类 334
8.2.5 用例分析示例 335
8.3 定义交互行为 337
8.3.1 时序图 337
8.3.2 协作图 341
8.4 习题与练习 345
参考文献 346
第9章 设计元素与用例设计 347
9.1 确定设计元素 348
9.2 合并现有设计元素 352
9.3 用例设计 354
9.4 习题与练习 364
参考文献 364
第10章 子系统设计 365
10.1 子系统设计概述 367
10.1.1 基本概念 368
10.1.2 子系统设计目标及产入和产出 371
10.1.3 子系统的核心内容 372
10.2 子系统设计的任务 376
10.3 子系统设计的步骤 377
10.3.1 将子系统行为分配给子系统元素 378
10.3.2 记录子系统元素 379
10.3.3 描述子系统依赖关系 380
10.4 复审 383
10.5 习题与练习 383
参考文献 384
第11章 类设计 385
11.1 类设计概述 386
11.2 定义类 387
11.2.1 创建初始设计类 387
11.2.2 定义类的可见性 389
11.2.3 定义操作 390
11.2.4 定义属性 393
11.3 定义类之间的关系 394
11.3.1 依赖 394
11.3.2 关联 395
11.3.3 泛化 396
11.4 解决用例冲突、非功能性需求 399
11.5 评审 399
11.6 习题与练习 400
参考文献 400
第12章 数据库设计 401
12.1 数据库设计概述 402
12.2 将持久类映射到表 404
12.2.1 基本映射方法 404
12.2.2 关联关系的映射 406
12.2.3 继承关系的映射 407
12.2.4 ORM框架 408
12.3 向数据库分配类行为 411
12.4 评审 412
12.5 习题与练习 412
参考文献 412
第13章 人机界面设计 413
13.1 人机界面设计概述 414
13.1.1 人机界面设计产生背景 414
13.1.2 人机界面设计概念及内容 415
13.1.3 人机界面的应用和发展前景 415
13.2 人机界面的风格 417
13.2.1 人机界面的基本特征 417
13.2.2 人机界面设计的黄金法则 419
13.2.3 人机界面的风格分析 420
13.3 人机界面设计的原则和工具 421
13.3.1 人机界面设计原则 421
13.3.2 人机界面的关键:原型设计 423
13.3.3 纸上原型设计 424
13.3.4 人机界面开发工具 424
13.4 人机界面的设计步骤 430
13.4.1 定义阶段 430
13.4.2 开发阶段 430
13.4.3 维护阶段 431
13.5 人机界面设计的方法 432
13.5.1 以用户为中心的设计 433
13.5.2 以活动为中心的设计 433
13.5.3 高瞻远瞩的设计 434
13.5.4 系统设计 435
13.6 人机界面设计的测试与评价 436
13.6.1 人机界面测试和评价的意义 436
13.6.2 人机界面的测试 436
13.6.3 人机界面的评价 437
13.6.4 人机界面的评价形式 437
13.6.5 人机界面的评价方法 438
13.7 习题与练习 439
参考文献 439
第14章 软件测试技术 441
14.1 软件测试概述 443
14.1.1 测试基本概念、目的 443
14.1.2 软件测试的原则 444
14.1.3 软件测试的方法 445
14.1.4 软件测试的基本步骤 446
14.1.5 软件测试的文档 448
14.1.6 软件测试与调试的区别 449
14.1.7 测试团队构成及角色划分 450
14.1.8 软件测试现状及趋势 451
14.2 测试方式 452
14.2.1 黑盒测试概述 452
14.2.2 黑盒测试的设计方法 453
14.2.3 黑盒测试的优缺点 456
14.2.4 白盒测试概述 457
14.2.5 白盒测试的设计方法 458
14.2.6 白盒测试的优缺点 461
14.2.7 灰盒测试 462
14.3 测试过程 462
14.3.1 单元测试 463
14.3.2 集成测试 465
14.3.3 系统测试 469
14.3.4 回归测试 471
14.3.5 验收测试 473
14.4 编写和跟踪测试用例 475
14.4.1 测试用例的重要性 476
14.4.2 测试用例的考虑因素 476
14.4.3 测试用例的基本原则 477
14.4.4 测试用例的组织和跟踪 478
14.5 测试自动化 480
14.5.1 测试自动化的内涵 480
14.5.2 软件测试自动化的意义 481
14.5.3 测试自动化的基本结构 483
14.5.4 测试自动化的原理和方法 483
14.5.5 软件测试自动化工具的分类 485
14.6 自动化测试工具QTP 486
14.6.1 QuickTest工作流程 487
14.6.2 录制/执行测试脚本 487
14.6.3 分析录制的测试脚本 488
14.6.4 执行测试脚本 488
14.6.5 分析测试结果 488
14.7 自动化测试工具LoadRunner 488
14.7.1 LoadRunner简介 488
14.7.2 快速创建虚拟用户 488
14.7.3 LoadRunner组件 489
14.7.4 LoadRunner术语 489
14.7.5 LoadRunner负载测试过程 490
14.8 习题与练习 492
参考文献 492
第15章 软件项目管理 493
15.1 软件项目管理的引入 497
15.1.1 项目与项目管理 498
15.1.2 软件项目管理的定义和内容 501
15.2 软件项目的组织 505
15.2.1 项目的组织形式 506
15.2.2 项目经理 511
15.3 软件项目规划 514
15.3.1 软件项目计划的重要性 515
15.3.2 软件项目的计划 517
15.4 软件项目的控制 523
15.4.1 需求管理 524
15.4.2 时间和成本管理 526
15.4.3 风险分析和质量保证 534
15.4.4 软件配置管理 534
15.4.5 人力资源管理 535
15.5 软件项目管理的成功原则 539
15.6 习题与练习 543
参考文献 544