1.1简介 ....................................... 3
1.2 SaaS,软件即服务 ............................... 3
1.3面向服务的架构(SOA) ........................... 6
1.4云计算 ..................................... 9
1.5漂亮的代码与遗留代码 ............................ 11
1.6软件质量保证:测试 ............................. 12
1.7生产力:简明、综合、复用和工具 ..................... 14
1.8软件开发过程:计划和文档过程 ....................... 16
1.9软件开发过程:敏捷宣言 ........................... 21
1.10本书导览 .................................... 25
1.11如何阅读本书 ................................. 27
1.12谬论和陷阱 ................................... 29
1.13结束语:软件工程不只是单纯的编程 .................... 30
1.14深入学习 .................................... 31
1.15建议的练习 ................................... 33
第
一
部
分
软
件
即
服
务
35
第
2章
SaaS应
用
的
架
构
架构37
2.1 100000英尺:客户端-服务器架构 ...................... 39
2.2 50000英尺:通信——HTTP和URI ..................... 41
2.3 10000英尺:表示方法——HTML和CSS .................. 45
2.4 5000英尺:3层体系结构和横向扩展 ..................... 48
2.5 1000英尺:模型-视图-控制器架构 ...................... 51
2.6 500英尺:模型的活动记录 .......................... 53
2.7 500英尺:路由、控制器与REST....................... 55
2.8 500英尺:模板视图 .............................. 59
2.9谬论和陷阱 ................................... 60
2.
10结束语:模式、架构和长寿命的API..................... 61
2.11深入学习
.................................... 62
2.12建议的练习
................................... 63
第
3章
SaaS架
构
:
针
对
Java编
程
者
的
Ruby简
介
架构65
3.1概述以及
Ruby的三大支柱 ........................... 67
3.2一切都是对象
................................. 71
3.
3每一个操作都是一个方法调用 ........................ 72
3.
4类、方法和继承 ................................ 75
3.
5所有的编程都是元编程 ............................ 79
3.
6块:迭代器、函数式习语和闭包 ....................... 81
3.7
mix-in和鸭子类型 ............................... 85
3.8用
yield构造自己的迭代器 ........................... 87
3.9谬论和陷阱
................................... 90
3.
10结束语:惯用语言使用 ............................ 91
3.11深入学习
.................................... 92
3.12建议的练习
................................... 93
第
4章
SaaS架
构
:
Rails简
介
架构97
4.1
Rails基础:从0到CRUD............................ 99
4.2数据库和迁移
.................................104
4.3模型:
ActiveRecord基础 ...........................106
4.4控制器和视图
.................................111
4.
5调试:当出现错误时 .............................117
4.6表单提交:
new和create ............................120
4.7重定向和
.ash..................................122
4.8完成
CRUD:编辑/更新和销毁 ........................125
4.9谬论和陷阱
...................................129
4.10结束语:
SOA的设计 .............................130
4.11深入学习
....................................131
4.12建议的练习
...................................132
第
5章
SaaS框
架
:
Rails高
级
功
能
135
5.1去除
MVC中的重复:partial、校验和过滤器 ................137
5.
2单点登录和第三方认证 ............................143
5.3关联和外键
...................................148
5.4间接关联
....................................152
5.5关联的
REST路由 ................................156
5.
6可复用作用域的组合查询 ...........................159
5.7谬论和陷阱
...................................161
5.
8结束语:语言、生产力和美观 ........................162
5.9深入学习
....................................163
5.10建议的练习
...................................164
xx
第
6章
SaaS的
客
户
端
框
架
:
JavaScript简
介
6.1
JavaScript:大图景 ...............................167
6.2面向
Ruby程序员的客户端JavaScript介绍 ..................170
6.3函数和构造器
.................................175
6.
4文档对象模型和jQuery ............................178
6.5事件与回调
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.6
AJAX:异步的JavaScript和XML.......................187
6.7测试和调试
JavaScript与AJAX.........................192
6.8单页面应用和
JsonAPI.............................200
6.9谬论和陷阱
...................................204
6.10结束语:
JavaScript的昨天、今天以及明天 .................208
6.11深入学习
....................................210
6.12建议的练习
...................................212
第
二
部
分
软
件
开
发
:
敏
捷
开
发
与
计
划
文
档
模
式
215
第
7章
需
求
:
行
为
驱
动
设
计
用
户
故
事
设计217
7.
1行为驱动设计与用户故事简介 ........................219
7.2
SMART用户故事 ................................221
7.
3任务点、速率和PivotalTracker........................223
7.
4敏捷开发的成本估计 .............................226
7.5
Cucumber和Capybara介绍 ...........................227
7.6运行
Cucumber和Capybara...........................229
7.
7低精度用户界面模型和故事板 ........................231
7.8优化
RottenPotatoes ..............................234
7.
9显式的和隐式的需求、命令式的和声明式的情景 .............239
7.
10计划文档的视角 ................................242
7.11谬论和陷阱
...................................248
7.12结束语:
BDD的利与弊 ............................250
7.13深入学习
....................................252
7.14建议的练习
...................................253
第
8章
软
件
测
试
:
测
试
驱
动
开
发
257
8.1背景:
RESTful应用程序接口和Rubygem..................259
8.2
FIRST、TDD以及RSpec入门 .........................261
8.3
TDD周期:红色-绿色-重构 ..........................264
8.4更多的控制器
spec和重构 ...........................268
8.5夹具和工厂
...................................272
8.6面向模型的
TDD ................................275
8.
7为互联网建立桩 ................................278
8.
8覆盖率概念、单元测试与集成测试 .....................284
8.
9其他测试方法和术语 .............................287
8.10计划文档的视角 ................................288
8.11谬论和陷阱 ...................................291
8.12结束语:TDD与传统的调试方法 .......................293
8.13深入学习 ....................................294
8.14建议的练习 ...................................295
第
9章
软
件
维
护
:
使
用
重
构
和
敏
捷
方
法
改
进
遗
留
软
件
297
9.1代码“遗留”的原因以及敏捷开发的用处 .................299
9.2探索遗留代码库 ................................302
9.3使用鉴定测试来创建基准事实 ........................306
9.4注释 .......................................309
9.5度量、代码味道及SOFA ...........................310
9.6方法级别的重构:使用嫁接替代依赖 ....................314
9.7计划文档的视角 ................................320
9.8谬论和陷阱 ...................................324
9.9结束语:持续的重构 .............................325
9.10深入学习 ....................................326
9.11建议的练习 ...................................328
第
10章
项
目
管
理
:
Scrum、
结
对
编
程
和
版
本
控
制
系
统
331
10.1团队规模:两个匹萨大小的团队以及Scrum.................333
10.2结对编程 ....................................335
10.3敏捷设计和代码评审 .............................337
10.4两个匹萨大小团队的版本控制:合并冲突 .................337
10.5有效地使用分支 ................................341
10.6报告和修复代码:五个R ...........................344
10.7计划文档的视角 ................................346
10.8谬论和陷阱 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
10.9结束语:团队、合作以及四十年的版本控制 ................355
10.10深入学习 ....................................356
10.11建议的练习 ...................................358
第
11章
SaaS类
的
设
计
模
式
设计361
11.1模式、反模式及SOLID类架构 ........................363
11.2正好够用的UML................................368
11.3单一责任原则 .................................370
11.4开闭原则 ....................................372
11.5里氏代换原则 .................................377
11.6依赖注入原则 .................................379
11.7迪米特法则 ...................................383
11.8计划文档的视角 ................................387
11.9谬论和陷阱 ...................................388
11.10结束语:框架包含了设计模式 ........................389
xxii
11.11深入学习 ....................................390
11.12建议的练习 ...................................392
第
12章
SaaS非
功
能
性
需
求
:
性
能
、
发
行
、
可
靠
性
和
实
用
安
全
393
12.1从开发到部署 .................................395
12.2量化响应性 ...................................397
12.3持续集成和持续部署 .............................399
12.4发行和功能标记 ................................401
12.5量化可访问性 .................................405
12.6监控和查找瓶颈 ................................406
12.7用缓存来提高渲染和数据库性能 .......................408
12.8避免滥用数据库查询 .............................412
12.9安全:在应用程序中保护用户数据 .....................415
12.10计划文档的视角 ................................420
12.11谬论和陷阱 ...................................422
12.12结束语:性能、可靠性、安全和有漏洞的抽象层 .............425
12.13深入学习 ....................................426
12.14建议的练习 ...................................430
第
13章
后
记
433
13.1SaaS、SOA、Ruby和Rails的视角 .......................434
13.2回顾过往 ....................................434
13.3展望未来 ....................................437
13.5最后的话 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
13.5深入学习 ....................................439
附
录
A使
用
本
书
配
套
软
件
441
A.1 Beta版本的指导 ................................443
A.2本书配套软件概览 ...............................443
A.3在VirtualBox中使用bookware的虚拟机 ....................444
A.4在Amazon的EC2上使用bookware的虚拟机 .................445
A.5编辑代码:编辑器和UNIX生存技巧 .....................446
A.6开始使用Git进行版本控制 ..........................447
A.7开始学习GitHub或ProjectLocker .......................448
A.8使用Heroku部署到云端 ............................452
A.9谬论和陷阱 ...................................454
A.10深入学习 ....................................455