第一篇 构思篇(Conceive) 2
第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) 114
第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) 244
第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) 388
第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