内容简介
《SaaS软件工程:云计算时代的敏捷开发》介绍了 21世纪以来软件工程的两个新的发展方向——软件即服务和敏捷开发。本书第一部分介绍了软件即服务及其相关的编程环境,包括 Ruby、Rails和 JavaScript等内容;第二部分介绍了现代软件开发并强调了敏捷开发相关技术,包括行为驱动和测试驱动的设计与开发,遗留代码处理,项目团队管理,设计模式,软件架构等内容,并给出了许多有用的建议。 本书的作者 Armando Fox和 David Patterson不仅在计算机科学领域建树颇丰,而且在软件工程方面也有着丰富的教学和研究实践经验。他们将软件即服务和敏捷开发的内容与具体的实例相结合,完成了这本内容丰富且易于学习的书。我们希望本书能够帮助你通过实践学到软件开发的知识与技能,并能开发出漂亮而持久的软件。
目录
第1章 SaaS与敏捷开发介绍
1.1 简介
1.2 SaaS,软件即服务
1.3 面向服务的架构(SOA)
1.4 云计算
1.5 漂亮的代码与遗留代码
1.6 软件质量保证:测试
1.7 生产力:简明、综合、复用和工具
1.8 软件开发过程:计划和文档过程
1.9 软件开发过程:敏捷宣言
1.10 本书导览
1.11 如何阅读本书
1.12 谬论和陷阱
1.13 结束语:软件工程不只是单纯的编程
1.14 深入学习
1.15 建议的练习
第一部分 软件即服务
第2章 SaaS应用的架构
2.1 100 000英尺:客户端-服务器架构
2.2 50 000英尺:通信——HTTP和URI
2.3 10 000英尺:表示方法——HTML和CSS
2.4 5000英尺:3层体系结构和横向扩展
2.5 1000英尺:模型-视图-控制器架构
2.6 500英尺:模型的活动记录
2.7 500英尺:路由、控制器与REST
2.8 500英尺:模板视图
2.9 谬论和陷阱
2.10 结束语:模式、架构和长寿命的API
2.11 深入学习
2.12 建议的练习
第3章 SaaS架构:针对Java编程者的Ruby简介
3.1 概述以及Ruby的三大支柱
3.2 一切都是对象
3.3 每一个操作都是一个方法调用
3.4 类、方法和继承
3.5 所有的编程都是元编程
3.6 块:迭代器、函数式习语和闭包
3.7 mix-in和鸭子类型
3.8 用yield构造自己的迭代器
3.9 谬论和陷阱
3.10 结束语:惯用语言使用
3.11 深入学习
3.12 建议的练习
第4章 SaaS架构:Rails简介
4.1 Rails基础:从0到CRUD
4.2 数据库和迁移
4.3 模型:ActiveRecord基础
4.4 控制器和视图
4.5 调试:当出现错误时
4.6 表单提交:new和create
4.7 重定向和flash
4.8 完成CRUD:编辑/更新和销毁
4.9 谬论和陷阱
4.10 结束语:SOA的设计
4.11 深入学习
4.12 建议的练习
第5章 SaaS框架:Rails高级功能
5.1 去除MVC中的重复:partial、校验和过滤器
5.2 单点登录和第三方认证
5.3 关联和外键
5.4 间接关联:
5.5 关联的REST路由
5.6 可复用作用域的组合查询
5.7 谬论和陷阱
5.8 结束语:语言、生产力和美观
5.9 深入学习
5.10 建议的练习
第6章 SaaS的客户端框架:JavaScdpt简介
6.1 JavaScript:大图景
6.2 面向Ruby程序员的客户端JavaScript介绍
6.3 函数和构造器
6.4 文档对象模型和jQuery
6.5 事件与回调
6.6 AJAX:异步的JavaScript和XML
6.7 测试和调试JavaScnpt与AJAX
6.8 单页面应用和Json API
6.9 谬论和陷阱
6.10 结束语:JavaScript的昨天、今天以及明天
6.11 深入学习
6.12 建议的练习
第二部分 软件开发:敏捷开发与计划文档模式
第7章 需求:行为驱动设计用户故事
7.1 行为驱动设计与用户故事简介
7.2 SMART用户故事
7.3 任务点、速率和Pivotal Tracker
7.4 敏捷开发的成本估计
7.5 Cucumber和Capybara介绍
7.6 运行Cucumber和Capybara
7.7 低精度用户界面模型和故事板
7.8 优化Rotten Potatoes
7.9 显式的和隐式的需求、命令式的和声明式的情景
7.10 计划文档的视角
7.11 谬论和陷阱
7.12 结束语:BDD的利与弊
7.13 深入学习
7.14 建议的练习
第8章 软件测试:测试驱动开发
8.1 背景:RESTful应用程序接口和Ruby gem
8.2 FIRST、TDD以及RSpec入门
8.3 TDD周期:红色-绿色-重构
8.4 更多的控制器spec和重构
8.5 夹具和工厂
8.6 面向模型的TDD
8.7 为互联网建立桩
8.8 覆盖率概念、单元测试与集成测试
8.9 其他测试方法和术语
8.10 计划文档的视角
8.11 谬论和陷阱
8.12 结束语:TDD与传统的调试方法
8.13 深入学习
8.14 建议的练习
第9章 软件维护:使用重构和敏捷方法改进遗留软件
9.1 代码“遗留”的原因以及敏捷开发的用处
9.2 探索遗留代码库
9.3 使用鉴定测试来创建基准事实
9.4 注释
9.5 度量、代码味道及SOFA
9.6 方法级别的重构:使用嫁接替代依赖
9.7 计划文档的视角
9.8 谬论和陷阱
9.9 结束语:持续的重构
9.10 深入学习
9.11 建议的练习
第10章 项目管理:Serum、结对编程和版本控制系统
10.1 团队规模:两个匹萨大小的团队以及Serum
10.2 结对编程
10.3 敏捷设计和代码评审
10.4 两个匹萨大小团队的版本控制:合并冲突
10.5 有效地使用分支
10.6 报告和修复代码:五个R
10.7 计划文档的视角
10.8 谬论和陷阱
10.9 结束语:团队、合作以及四十年的版本控制
10.10 深入学习
10.11 建议的练习
第11章 SaaS类的设计模式
11.1 模式、反模式及SOLID类架构
11.2 正好够用的UML
11.3 单一责任原则
11.4 开闭原则
11.5 里氏代换原则
11.6 依赖注入原则
11.7 迪米特法则
11.8 计划文档的视角
11.9 谬论和陷阱
11.10 结束语:框架包含了设计模式
11.11 深入学习
11.12 建议的练习
第12章 SaaS非功能性需求:性能、发行、可靠性和实用安全
12.1 从开发到部署
12.2 量化响应性
12.3 持续集成和持续部署
12.4 发行和功能标记
12.5 量化可访问性
12.6 监控和查找瓶颈
12.7 用缓存来提高渲染和数据库性能
12.8 避免滥用数据库查询
12.9 安全:在应用程序中保护用户数据
12.10 计划文档的视角
12.11 谬论和陷阱
12.12 结束语:性能、可靠性、安全和有漏洞的抽象层
12.13 深入学习
12.14 建议的练习
第13章 后记
13.1 SaaS、SOA、Ruby和Rmls的视角
13.2 回顾过往
13.3 展望未来
13.5 最后的话
13.5 深入学习
附录A 使用本书配套软件
A.1 Beta版本的指导
A.2 本书配套软件概览
A.3 在VirtualBox中使用bookware的虚拟机
A.4 在Amazon的EC2上使用bookware的虚拟机
A.5 编辑代码:编辑器和UNIX生存技巧
A.6 开始使用Git进行版本控制
A.7 开始学习GitHub或ProjecLocker
A.8 使用Heroku部署到云端
A.9 谬论和陷阱
A.10 深入学习
精彩书摘
《SaaS软件工程:云计算时代的敏捷开发》:
2.51000英尺:模型—视图—控制器架构
到目前为止,我们还没有提到Rotten Potatoes的应用程序代码结构。事实上,就像我们使用的客户端——服务器架构模式描述“10万英尺视图”的SaaS的特征一样,我们可以用一种称为模型—视图—控制器(通常简写为MVC)的架构模式来描述“1000英尺视图”的特征。
根据MVC模式编写的应用程序主要由三种代码类型构成。模型与应用程序操作的数据有关:如何存储、操作以及改变数据。一个MVC应用程序一般为应用程序操作的每种实体类型配备了一个模型。精简版的Rotten Potatoes程序中只有Movie模型,但是我们以后可以添加其他模型。因为模型要处理应用程序数据,所以它们包含与存储层沟通的代码。
呈现给用户的视图包含用户与之进行交互的模型的信息。视图可作为系统用户及其数据之间的接口。例如,在Rotten Potatoes中可以制作电影列表,然后单击视图链接或按钮添加新电影。Rotten Potatoes只有一种模型,但它与许多视图有关联:一个视图列出所有电影,另一个视图显示特定电影的细节,当创建新电影或者编辑已有电影的时候,会出现其他视图。
……
前言/序言
SaaS软件工程:云计算时代的敏捷开发 电子书 下载 mobi epub pdf txt