本书从CDIO工程理念出发,围绕构思(Conceive)、设计(Design)、实现(Implement)、运作(Operate)四个方面展开阐述,以一种崭新的视角展现软件设计和体系结构的内容,尽可能做到覆盖面广和内容新颖,在保持经典内容的基础上,力求提供来自业界最新的内容和进展。
构思(C)给出一个软件要做什么的总体思路;设计(D)给出一个软件怎么做的方法和手段;实现(I)给出一个软件实际做出来的实现技术和路线;运作(O)给出一个软件如何成功运作的模式和方法。CDIO各个部分相对独立但又互有联系,能够让读者以全面的、主动的和实用的方式学习和掌握相关内容,并着重强调工程实践训练和综合能力培养。
样章试读
目录
- 目录
第一篇 构思篇 (Conceive)
第1章 软件环境 2
1.1 软件与软件分类 2
1.1.1 软件的特点 2
1.1.2 软件的分类 3
1.2 程序设计语言与开发环境 4
1.2.1 程序设计语言 4
1.2.2 开发环境 5
1.3 数据库环境 6
1.3.1 关系数据库 6
1.3.2 面向对象数据库 11
1.3.3 非结构化数据库 13
1.4 平台环境 14
1.4.1 集成平台 14
1.4.2 虚拟化平台 15
1.4.3 云平台 18
1.5 软件工程环境 23
1.5.1 软件过程模型 23
1.5.2 软件工程经济学 30
1.5.3 软件过程管理 31
1.5.4 软件维护及演化 44
1.6 习题与思考题 56
第2章 软件需求 58
2.1 软件需求与需求工程概述 58
2.1.1 需求的定义 58
2.1.2 需求工程概述 59
2.2 需求获取 60
2.2.1 引言 60
2.2.2 需求获取的实质 60
2.2.3 常用方法 61
2.3 需求建模与分析 62
2.3.1 面向对象建模 62
2.3.2 过程建模 67
2.3.3 数据建模 74
2.4 需求规约与验证 76
2.4.1 需求规约 76
2.4.2 需求验证 78
2.5 需求管理 78
2.6 习题与思考题 79
第3章 软件体系结构 81
3.1 “4+1”视图模型 81
3.1.1 逻辑视图 81
3.1.2 开发视图 82
3.1.3 进程视图 82
3.1.4 物理视图 83
3.1.5 场景 83
3.2 软件体系结构的定义 83
3.3 软件体系结构的核心模型 85
3.4 软件体系结构描述方法 85
3.5 软件体系结构描述语言(ADL) 86
3.6 软件体系结构设计原则 87
3.7 基于体系结构的软件开发过程 89
3.8 软件体系结构的风格 90
3.8.1 管道-过滤器风格 90
3.8.2 分层风格 91
3.8.3 客户/服务器风格 92
3.8.4 浏览器/服务器风格 93
3.8.5 事件驱动风格 94
3.9 体系结构模式 95
3.9.1 从混沌到结构 95
3.9.2 分布式系统 104
3.9.3 交互系统 107
3.9.4 适应性系统 109
3.10 习题与思考题 112
第二篇 设计篇 (Design)
第4章 软件设计 114
4.1 设计目标及要素 115
4.2 设计原则 115
4.2.1 抽象化 116
4.2.2 模块化 117
4.2.3 信息隐藏 118
4.2.4 模块的功能独立性 118
4.2.5 降低模块间耦合度的方法 122
4.3 设计规约 122
4.4 设计方法 123
4.4.1 结构化设计方法 123
4.4.2 面向对象的设计 133
4.5 习题与思考题 141
第5章 统一建模语言UML 142
5.1 UML核心概念 142
5.1.1 元素 142
5.1.2 具名元素 143
5.1.3 命名空间 143
5.1.4 可打包元素 143
5.1.5 可重定义元素 144
5.1.6 分类器 144
5.1.7 特性 144
5.1.8 注解 144
5.1.9 关系 145
5.2 UML关键字与版型 148
5.2.1 关键字 148
5.2.2 版型 149
5.3 UML图示 151
5.3.1 类图 152
5.3.2 对象图 153
5.3.3 包图 154
5.3.4 组件图 156
5.3.5 合成结构图 157
5.3.6 部署图 159
5.3.7 用例图 160
5.3.8 活动图 164
5.3.9 状态机图 173
5.3.10 交互图 176
5.3.11 顺序图 177
5.3.12 通信图 180
5.3.13 计时图 180
5.4 习题与思考题 182
第6章 设计模式 183
6.1 模式思维方法 183
6.1.1 模式的概念 183
6.1.2 模式的重要性 184
6.1.3 软件设计模式的分类 184
6.1.4 模式描述模板 185
6.1.5 模式思维的步骤 187
6.2 设计模式概述 188
6.2.1 创建型模式 189
6.2.2 结构型模式 195
6.2.3 行为型模式 199
6.3 习题与思考题 203
第7章 软件复用 204
7.1 概述 204
7.1.1 概念 204
7.1.2 软件复用的发展 206
7.1.3 可复用的软件制品 207
7.1.4 软件复用的分类 208
7.1.5 软件复用的困难与建议 208
7.1.6 软件复用的宗旨 210
7.2 分析复用 210
7.2.1 分析过程复用 210
7.2.2 分析制品复用 211
7.3 设计复用 212
7.3.1 设计过程复用 212
7.3.2 基于构件的设计复用 213
7.4 代码复用 215
7.5 测试复用 219
7.5.1 面向复用的测试用例设计过程 219
7.5.2 复用测试用例描述要素 220
7.6 习题与思考题 221
第8章 软件界面设计 223
8.1 软件界面设计概述 223
8.1.1 软件界面分析 223
8.1.2 软件界面开发过程 226
8.1.3 软件界面设计基本原则 228
8.2 人机界面基础知识 230
8.2.1 认知心理学 230
8.2.2 软件人机工程学 230
8.2.3 艺术设计 231
8.3 界面的定量分析 231
8.3.1 GOMS击键层模型 231
8.3.2 界面效率的测量 232
8.3.3 Fitts律和Hick律 234
8.4 人本界面 235
8.4.1 认知和关注点 235
8.4.2 界面模式与单调性 236
8.4.3 统一性和元动作 239
8.4.4 易用性和帮助机制 240
8.5 移动设备界面设计 241
8.6 习题与思考题 242
第三篇 实现篇 (Implement)
第9章 Web开发技术 244
9.1 Web开发概述 244
9.1.1 运作原理及概念 244
9.1.2 开发语言及技术概述 247
9.1.3 Web应用的特点 249
9.2 Web服务器 249
9.2.1 Microsoft IIS 250
9.2.2 Apache 250
9.2.3 Tomcat 251
9.2.4 J2EE服务器 251
9.2.5 Nginx 252
9.3 服务器端开发技术及框架 253
9.3.1 Java技术 253
9.3.2 .Net技术 255
9.3.3 PHP技术 260
9.3.4 Ruby技术 261
9.3.5 MVC框架 262
9.3.6 Spring框架 263
9.4 Web前端开发技术 267
9.4.1 HTML 267
9.4.2 CSS层叠样式表 270
9.4.3 JavaScript技术 272
9.4.4 AJAX技术 274
9.4.5 Silverlight技术 276
9.5 习题与思考题 278
第10章 数据库开发技术 279
10.1 SQL语言 279
10.2 数据库和表 279
10.2.1 创建及删除数据库 279
10.2.2 创建表 280
10.2.3 修改表 280
10.2.4 删除表 281
10.3 索引 281
10.3.1 创建索引 281
10.3.2 刪除索引 282
10.4 查询 282
10.4.1 SELECT语句 282
10.4.2 多表査询 284
10.4.3 子查询 286
10.4.4 集合运算 287
10.4.5 聚集函数 288
10.5 数据维护 289
10.5.1 插入 289
10.5.2 更新 290
10.5.3 删除 290
10.6 视图 291
10.6.1 创建视图 291
10.6.2 刪除视图 292
10.7 游标 292
10.7.1 声明游标 292
10.7.2 打开和关闭游标 293
10.7.3 删除游标 293
10.7.4 应用游标 293
10.8 存储过程 294
10.8.1 存储过程创建与修改 294
10.8.2 执行存储过程 296
10.8.3 删除存储过程 296
10.9 触发器 296
10.9.1 创建触发器 297
10.9.2 删除触发器 298
10.10 习题与思考题 298
第11章 软件成本估算技术 299
11.1 软件成本估算的步骤 299
11.1.1 建立目标 299
11.1.2 计划所需的数据与资源 301
11.1.3 准确说明软件需求 303
11.1.4 尽可能详细地做出估算 303
11.1.5 采用多个独立的方法与资源 308
11.1.6 比较与迭代估算 308
11.1.7 跟踪与变更 309
11.2 软件成本估算的方法 310
11.2.1 算法模型 310
11.2.2 专家判断 311
11.2.3 通过推理来进行估算 312
11.2.4 帕金森估算 312
11.2.5 价格策略估算 312
11.2.6 自顶向下估算 313
11.2.7 自底向上估算 313
11.2.8 各方法的总结比较 314
11.3 基本COCOMO模型软件成本估算 315
11.3.1 模型定义与假设 315
11.3.2 软件开发模式分类 316
11.3.3 组织型基本COCOMO模型 317
11.3.4 其他模式COCOMO模型 319
11.4 习题与思考题 320
第12章 软件架构技术 321
12.1 构件技术 321
12.1.1 软件构件技术基础 321
12.1.2 基于构件的软件工程 323
12.2 软件架构综述 325
12.2.1 企业架构 325
12.2.2 业务架构 327
12.2.3 应用架构 329
12.2.4 信息架构 330
12.3 中间件 331
12.3.1 中间件的目标及地位 331
12.3.2 中间件的基本类型 332
12.3.3 常见中间件技术介绍 333
12.4 习题与思考题 343
第13章 软件集成技术 344
13.1 软件合成与软件集成 344
13.2 软件集成模式 345
13.2.1 集成适配器模式 345
13.2.2 集成消息器模式 346
13.2.3 集成正面模式 346
13.2.4 集成媒介器模式 347
13.3 企业应用集成 347
13.3.1 EAI的产生和意义 347
13.3.2 企业应用系统的分类 348
13.3.3 企业应用集成的基本原则 349
13.4 数据集成 350
13.4.1 数据集成的基本概念 350
13.4.2 参考数据模型 352
13.4.3 数据集成的元数据管理 352
13.5 基于消息服务的集成框架 355
13.5.1 消息传输模型 356
13.5.2 消息代理任务 356
13.5.3 消息代理拓扑结构 357
13.5.4 消息代理产品的选择 357
13.5.5 使用J2EE的企业消息传递 358
13.6 过程集成 359
13.6.1 工作流和工作流管理系统 359
13.6.2 跨组织过程集成 361
13.7 习题与思考题 366
第14章 软件测试技术 368
14.1 软件测试概述 368
14.1.1 软件测试技术的发展 368
14.1.2 软件开发与软件测试 369
14.1.3 软件测试基本原理与原则 370
14.1.4 软件测试模型 371
14.1.5 测试心理学 372
14.1.6 测试覆盖 373
14.2 软件测试管理 374
14.2.1 质量改进模型PDCA 374
14.2.2 测试需求 374
14.2.3 测试计划 375
14.2.4 测试设计及测试用例 376
14.2.5 测试执行 377
14.2.6 测试记录与跟踪 378
14.2.7 回归测试 379
14.2.8 总结与报告 380
14.3 软件测试技术 380
14.3.1 黑盒测试与白盒测试 380
14.3.2 手工测试与自动化测试 381
14.3.3 单元测试 382
14.3.4 数据库性能检查 382
14.3.5 压力测试 383
14.3.6 安全性测试 383
14.3.7 安装测试 383
14.3.8 环境测试 384
14.4 测试工具 384
14.5 习题与思考题 385
第四篇 运作篇 (Operate)
第15章 软件架构师角色与职责 388
15.1 软件架构师的定义 388
15.2 软件架构师的工作场景 388
15.3 软件架构师的角色 389
15.4 软件架构师与其他角色的关系及区别 390
15.4.1 软件架构师与产品经理的关系及区别 390
15.4.2 软件架构师与项目经理的关系及区别 390
15.4.3 软件架构师与系统分析员的关系及区别 391
15.5 软件架构师的职责 391
15.6 软件架构师的所应具备的能力 392
15.7 软件架构师的工作评价标准 393
15.8 习题与思考题 394
第16章 软件运作模式 395
16.1 软件企业的崛起 395
16.1.1 大型科研项目的研究是软件业的萌芽 395
16.1.2 独立软件产品的出现预示软件业开始步入正轨 395
16.1.3 企业解决方案让软件业开始兴盛 396
16.1.4 个人电脑及互联网的普及让软件业繁荣 396
16.2 传统的软件运作模式 397
16.3 基于Free的运作模式 398
16.3.1 自由软件 398
16.3.2 免费软件 400
16.3.3 共享软件 400
16.3.4 案例 401
16.4 基于开源的运作模式 402
16.4.1 开源软件 402
16.4.2 开源软件盈利模式 403
16.4.3 案例 404
16.5 基于服务的运作模式 404
16.5.1 软件企业职能转变 404
16.5.2 基础设施即服务(IaaS) 405
16.5.3 平台即服务(PaaS) 406
16.5.4 软件即服务(SaaS) 407
16.6 习题与思考题 410
第17章 案例分析 411
17.1 Google搜索引擎 411
17.1.1 营销模式 411
17.1.2 运作分析 412
17.2 Twitter 413
17.2.1 营销模式 413
17.2.2 运作分析 414
17.3 Facebook 415
17.3.1 营销模式 415
17.3.2 运作分析 415
17.4 淘宝 417
17.4.1 营销模式 417
17.4.2 运作分析 418
17.5 习题与思考题 418
参考文献 419