选择特殊符号

选择搜索类型

热门搜索

首页 > 百科 > 电气百科

架构实战:软件架构设计的过程

《架构实战:软件架构设计的过程》是2010年在机械工业出版社出版的图书,该书作者是(美国)伊乐斯、(美国)克里普斯,译者是蔡黄辉、马文涛。

架构实战:软件架构设计的过程基本信息

架构实战:软件架构设计的过程作者简介

作者:(美国)伊乐斯(Peter Eeles) (美国)克里普斯(Peter Cripps) 译者:蔡黄辉 马文涛

伊乐斯(Peter Eeles),IBM RationaI Software的高级IT架构师,主要工作是进行架构设计和实现大规模、分布式的系统。他目前致力于帮助组织提高软件开发能力。除本书外,Eeles还与人合作编写了《Building J2EE Applicatio with theRatio rlaI Unifjed Process》(Addisorl-WesIey,2003)和《BuiIdlng Busi rless Objects》(Wiley,1998)。

克里普斯(Peter Cripps),IBM Global Business Services的高级IT架构师,专注于应用组件和基于服务的开发技术,并在整个IBM公司推广架构设计最佳实践,目前从事IBM Unified Method FrarTlework的开发工作。

查看详情

架构实战:软件架构设计的过程造价信息

  • 市场价
  • 信息价
  • 询价

能源计量监测软件

  • BEMS 8.0
  • 荣夏
  • 13%
  • 江苏荣夏安全科技有限公司
  • 2022-12-07
查看价格

分布式可视化设计软件

  • Danacoid Designer
  • DANACOID(大因)/中国
  • 13%
  • 上海大因多媒体技术有限公司
  • 2022-12-07
查看价格

LoRa智慧灌溉手机终端应用软件

  • ZHGGRJ-M
  • 绿粤
  • 13%
  • 深圳市绿粤生态科技有限公司
  • 2022-12-07
查看价格

网管软件

  • NSHSSNWMGR11 eSight 网络管理许可-1设备
  • 13%
  • 深圳市扬天世纪网络有限公司
  • 2022-12-07
查看价格

网管软件

  • NSHSSNWMGRS1 eSight 网络管理许可-软件订阅与保障年费-1设备(年费实际起止时间:从 " PO签订+90天" 起算 3 年)
  • 13%
  • 深圳市扬天世纪网络有限公司
  • 2022-12-07
查看价格

网管系统(含硬、软件)

  • 网络级
  • 广东2022年3季度信息价
  • 电网工程
查看价格

网管系统(含硬、软件)

  • 网络级
  • 广东2022年2季度信息价
  • 电网工程
查看价格

网管系统(含硬、软件)

  • 网络级
  • 广东2021年2季度信息价
  • 电网工程
查看价格

网管系统(含硬、软件)

  • 网络级
  • 广东2019年2季度信息价
  • 电网工程
查看价格

网管系统(含硬、软件)

  • 网络级
  • 广东2019年1季度信息价
  • 电网工程
查看价格

架构系统

  • 详见《附件:技术要求清单》
  • 8.61m²
  • 1
  • 中档
  • 含税费 | 含运费
  • 2022-06-30
查看价格

组织架构模块

  • 组建应急作业组织架构,实现当次应急作业组织管理架构,创建应急作业各工作组,明确各组人员组成,分配角色职责.工作组模块管理功能包含:创建、编辑、删除工作组,组类别包含计划协调组、态势检测组、专业技术
  • 1套
  • 1
  • 国内一线品牌
  • 中高档
  • 含税费 | 含运费
  • 2021-09-15
查看价格

儿童架构

  • 大型儿童设施,尺寸、材质、样式按附件CAD及图片.长10600×宽8985×高5500
  • 1套
  • 3
  • 中高档
  • 含税费 | 含运费
  • 2022-10-20
查看价格

艺术架构

  • 天花镂空
  • 1m²
  • 3
  • 中高档
  • 不含税费 | 含运费
  • 2022-08-19
查看价格

蝴蝶架构

  • 详图纸
  • 2套
  • 2
  • 中档
  • 含税费 | 含运费
  • 2021-05-26
查看价格

架构实战:软件架构设计的过程图书目录

译者序

前言

致谢

作者简介

第1章 导言

1.1 流程应用

1.2 流程概述

1.3 范围

1.4 总结

第2章 架构,架构师和架构设计

2.1 架构

2.1.1 架构定义结构

2.1.2 架构定义行为

2.1.3 架构关注重要的元素

2.1.4 架构平衡利益相关者的需要

2.1.5 架构基于合理证据使决策具体化

2.1.6 架构会遵循一种架构风格

2.1.7 架构受它的环境影响

2.1.8 架构影响开发团队的结构

2.1.9 所有系统都存在架构

2.1.10 架构有特定的范围

2.2 架构师

2.2.1 架构师是技术领导

2.2.2 架构师的角色可能由一个团队来履行

2.2.3 架构师理解软件开发流程

2.2.4 架构师掌握业务领域的知识

2.2.5 架构师掌握技术知识

2.2.6 架构师掌握设计技能

2.2.7 架构师具备编程技能

2.2.8 架构师是优秀的沟通人员

2.2.9 架构师进行决策

2.2.10 架构师知道组织政策

2.2.11 架构师是谈判专家

2.3 架构设计

2.3.1 架构设计是一门科学

2.3.2 架构设计是一门艺术

2.3.3 架构设计跨越很多方面

2.3.4 架构设计是一个渐进的活动

2.3.5 架构设计受许多利益相关者驱动

2.3.6 架构设计经常包括折中

2.3.7 架构设计承认经验

2.3.8 架构设计既由上而下也由下而上

2.4 架构设计的优点

2.4.1 架构设计解决系统的质量问题

2.4.2 架构设计促进达成共识

2.4.3 架构设计支持计划编制流程

2.4.4 架构设计促进架构的完整性

2.4.5 架构设计有助于管理复杂性

2.4.6 架构设计为重用提供基础

2.4.7 架构设计降低维护成本

2.4.8 架构设计支持影响分析

2.5 总结

第3章 方法基本原理

3.1 关键概念

3.2 方法内容

3.2.1 角色

3.2.2 工作产品

3.2.3 活动

3.2.4 任务

3.3 流程

3.3.1 瀑布流程

3.3.2 迭代流程

3.3.3 敏捷流程

3.4 总结

第4章 编写软件架构文档

4.1 最终的结局

4.2 关键概念

4.3 视点和视图

4.3.1 基础视点

4.3.2 交叉视点

4.3.3 视图及图表

4.3.4 视点及视图的优点

4.4 模型

4.4.1 实现的层级

4.4.2 模型的优点

4.5 架构描述框架的特征

4.5.1 软件架构的4 1视图模型

4.5.2 Zachman框架

4.5.3 R0zanski和W00ds框架

4.6 一个架构描述框架

4.6.1 视点

4.6.2 产品

4.6.3 实现的层级

4.6.4 视图一致

4.7 软件架构文档

4.8 总结

第5章 可重用架构资源

5.1 架构的来源

5.2 架构资源元模型

5.2.1 开发期资源

5.2.2 运行期资源

5.3 资源类型

5.3.1 参考架构

5.3.2 开发方法

5.3.3 视点目录

5.3.4 架构风格

5.3.5 架构机制

5.3.6 模式

5.3.7 参考模型

5.3.8 架构决策

5.3.9 现有的应用程序

5.3.10 封装的应用程序

5.3.11 应用框架

5.3.12 组件库/组件

5.4 架构资源的属性

5.5 重用的其他考虑因素

5.6 总结

第6章 案例介绍

6.1 流程应用

6.2 案例研究范围

6.2.1 项目团队

6.2.2 外部影响因素

6.3 应用简介

6.4 YourFour的愿景

6.4.1 问题声明

6.4.2 利益相关者

6.4.3 系统功能

6.4.4 系统的质量

6.4.5 约束

6.5 总结

第7章 定义需求

7.1 关联需求和架构

7.2 功能性需求和非功能性需求

7.3 编写需求文档的技术

7.4 流程应用

7.5 理解任务描述

7.6 定义需求:活动概览

7.7 总结

第8章 创建逻辑架构

8.1 从需求走向解决方案

8.2 逻辑架构的价值

8.2.1 使逻辑架构最小化

8.2.2 把逻辑架构作为一项投资

8.2.3 可追溯性的重要性

8.3 流程应用

8.4 创建逻辑架构:活动概览

8.5 总结

第9章 创建物理架构

9.1 从逻辑架构到物理架构

9.2 流程应用

9.3 创建物理架构:活动概览

9.4 任务:调查架构资源

9.5 任务:定义架构概览

9.6 任务:编写架构决策文档

9.7 任务:概述功能性元素

9.7.1 将逻辑功能元素映射到物理功能元素

9.7.2 确认物理功能元素

9.7.3 采购产品

9.7.4 适应特定技术的模式

9.8 任务:概述部署元素

9.8.1 映射逻辑部署元素到物理部署元素

9.8.2 确认物理部署元素

9.8.3 采购硬件

9.9 任务:检验架构

9.10 任务:构建架构概念证明

9.11 任务:细化功能性元素

9.12 任务:细化部署元素

9.13 任务:确认架构

9.14 任务:更新软件架构文档

9.15 任务:和利益相关者复审架构

9.16 总结

第10章 进阶

10.1 架构师和项目团队

10.1.1 架构师和需求

10.1.2 架构师和开发

10.1.3 架构师和测试

10.1.4 架构师和项目管理

10.1.5 架构师和配置管理

10.1.6 架构师和变更管理

10.1.7 架构师和开发环境

10.1.8 架构师和业务分析

10.2 架构师和外界影响

10.2.1 企业架构

10.2.2 设计权威

10.2.3 基础设施提供者

10.2.4 系统维护者

10.3 复杂系统的架构设计

10.3.1 许多独特的功能正在开发

10.3.2 许多人员参与开发

10.3.3 系统是高度分布式的

10.3.4 开发团队是分布式的

10.3.5 运行质量非常有挑战性

10.3.6 存在系统之系统

10.4 总结

附录A 软件架构元模型

附录B 视点目录

附录C 方法概述

附录D 架构需求检查列表

术语表

参考文献2100433B

查看详情

架构实战:软件架构设计的过程内容简介

《架构实战:软件架构设计的过程》从基本原理入手,介绍软件架构设计过程中涉及的一些概念、流程、方法、用到的工作产品及可重用的资源,从第6章开始,通过介绍一个具体的案例来阐述如何定义需求、创建逻辑架构、创建物理架构。在第10章“进阶”中,作者补充说明了架构师和软件开发项目其他方面的关系,后面又说明了各种软件开发项目可能存在的困难及相应的处理方法。

《架构实战:软件架构设计的过程》理论结合实践,介绍了一些可以应用到整个或部分的架构设计流程中的最佳方法。不管你是一位资深的架构师还是一位有志于成为架构师的初级使用者,通过阅读《架构实战:软件架构设计的过程》都能从中获益。

查看详情

架构实战:软件架构设计的过程常见问题

查看详情

架构实战:软件架构设计的过程文献

软件架构设计文档模板-(1)精品资料 软件架构设计文档模板-(1)精品资料

软件架构设计文档模板-(1)精品资料

格式:pdf

大小:19KB

页数: 9页

项目名称 软件架构设计文档 版本 项目名称 版本: 软件架构设计文档 日期:

修订历史记录 日期 版本 说明 作者 <日 /月 /年> <详细信息 > <姓名 > 目录 1. 简介 5 1.1 目的 5 1.2 范围 5 1.3 定义、首字母缩写词和缩略语 5 1.4 参考资料 5 1.5 概述 5 2. 整体说明 5 2.1 简介 5 2.2 构架表示方式 5 2.3 构架目标和约束 5 3. 用例视图 6 3.1 核心用例 6 3.2 用例实现 6 4. 逻辑视图 6 4.1 逻辑视图 6 4.2 分层 6 4.2.1 应用层 6 4.2.2 业务层 7 4.2.3 中间层 7 4.2.4 系统层 7 4.3 架构模式 7 4.4 设计机制 7 4.5 公用元素及服务 7 5. 进程

软件架构设计模板 软件架构设计模板

软件架构设计模板

格式:pdf

大小:19KB

页数: 74页

软件架构设计模板

移动开发架构设计实战目录

第1章 什么是架构 1

1.1 架构设计理念 1

1.1.1 软件架构的起源 1

1.1.2 架构设计三要素 2

1.1.3 什么是优秀的软件架构设计 2

1.1.4 软件架构设计的关注点 3

1.2 软件架构设计的本质和目的 3

1.2.1 做出决策 3

1.2.2 降低软件熵 4

1.3 架构设计思维 4

1.3.1 简化思维 4

1.3.2 分层思维 5

1.3.3 分治思维 6

1.3.4 迭代思维 6

1.4 架构设计模式原则 7

1.4.1 单一职责原则 7

1.4.2 开放封闭原则 8

1.4.3 里氏替换原则 9

1.4.4 依赖倒置原则 9

1.4.5 接口分离原则 10

1.5 架构设计步骤 11

1.5.1 认识系统 11

1.5.2 设计系统 12

1.5.3 创建系统 14

1.5.4 收集反馈 14

1.6 小结 15

第2章 MVC架构:表现层分离 16

2.1 什么是MVC 16

2.1.1 MVC的诞生 16

2.1.2 MVC的分层与职责 17

2.1.3 MVC在移动开发中的争议 18

2.2 MVC的模式 19

2.2.1 被动模式 19

2.2.2 主动模式 19

2.2.3 观察者模式 20

2.2.4 被动模式与主动模式的区别 21

2.3 MVC的核心思想 21

2.4 小结 22

第3章 实战:基于MVC架构设计的日记App 23

3.1 层级职责划分 23

3.2 准备阶段 24

3.2.1 准备、创建View 24

3.2.2 清单文件Manifest配置 26

3.2.3 初始化Fragment 27

3.3 创建View 28

3.4 数据处理 31

3.4.1 创建Model 31

3.4.2 创建本地数据源 32

3.4.3 数据持久化工具 33

3.4.4 实现本地数据源 34

3.4.5 填充测试数据 36

3.4.6 使用数据仓库管理数据 37

3.5 创建Controller 40

3.5.1 Controller初始化 40

3.5.2 创建Adapter 41

3.5.3 创建ViewHolder 43

3.5.4 Controller的协调工作 44

3.6 运行App 48

3.7 实现主动模式的MVC 49

3.7.1 改造Model 49

3.7.2 注册观察者 50

3.8 小结 50

第4章 MVP架构:开始解耦 52

4.1 什么是MVP 52

4.1.1 MVP架构的起源 52

4.1.2 MVP的分层与职责 52

4.2 MVP的核心思想 53

4.2.1 面向接口编程 53

4.2.2 德墨忒尔定律 54

4.3 MVP与MVC的区别 55

4.4 MVP模式存在的问题 56

4.4.1 责任过重的Presenter 56

4.4.2 业务逻辑无法复用 56

4.4.3 急剧扩增的接口数量 57

4.5 如何解决Presenter的复用问题 57

4.5.1 提供工具类 57

4.5.2 提供多对一的Presenter 57

4.5.3 分离出Interactor层 58

4.6 小结 59

第5章 实战:MVP架构设计 60

5.1 层级职责划分 60

5.2 准备工作 60

5.2.1 定义基础View接口 60

5.2.2 定义基础Presenter接口 61

5.3 重构:从MVC到MVP 61

5.3.1 创建Presenter 61

5.3.2 改造View 62

5.3.3 传入Presenter实例 63

5.3.4 开发过程中Presenter和View的直接依赖 63

5.3.5 Presenter生命周期的处理 64

5.3.6 列表Adapter的处理 64

5.3.7 展示数据的处理 65

5.3.8 对话框展示的处理 67

5.3.9 菜单的处理 68

5.3.10 实现面向接口设计 69

5.3.11 建立契约类 69

5.4 实现MVP模式:日记修改功能 70

5.4.1 创建日记修改Activity 71

5.4.2 创建日记修改Fragment 72

5.4.3 添加“完成”按钮 74

5.4.4 创建日记修改Presenter 75

5.4.5 日记操作处理 76

5.4.6 页面跳转处理 77

5.4.7 删除旧有的修改日记UI 78

5.4.8 修改为面向接口设计 79

5.5 小结 79

第6章 MVVM架构:双向绑定 81

6.1 什么是MVVM 81

6.1.1 MVVM架构的起源 81

6.1.2 MVVM的分层与职责 82

6.2 MVVM的核心思想 82

6.2.1 进一步解耦 82

6.2.2 数据驱动 83

6.2.3 双向绑定 83

6.3 架构模式对比 84

6.3.1 MVC与MVVM 84

6.3.2 MVP与MVVM 85

6.4 MVVM存在的问题 86

6.4.1 ViewModel难以复用 86

6.4.2 学习成本高 86

6.4.3 调试困难 86

6.5 小结 87

第7章 实战:MVVM架构设计 88

7.1 什么是DataBinding 88

7.2 重构:从MVP到MVVM 88

7.2.1 配置DataBinding支持 89

7.2.2 修改Presenter为ViewModel 89

7.2.3 消除契约类 90

7.2.4 转换布局文件 92

7.2.5 在布局中加入变量和表达式 93

7.2.6 ViewModel继承BaseObservable 94

7.2.7 在XML布局文件中定义列表数据属性 95

7.2.8 使用BindingAdapter处理自定义属性 97

7.2.9 绘制View布局 98

7.2.10 为View属性赋值 99

7.2.11 找到XML中的View 100

7.2.12 ObservableField原理 100

7.2.13 使用ObservableField 101

7.2.14 使用ObservableList 103

7.3 小结 104

第8章 依赖注入:Dagger2锋利的“匕首” 105

8.1 什么是Dagger 105

8.1.1 依赖注入 105

8.1.2 编译时注解解析 107

8.2 实现:将Dagger2加入MVP 108

8.2.1 配置Dagger2 108

8.2.2 确定数据仓库改造目标 108

8.2.3 改造数据仓库 109

8.2.4 Inject注解 110

8.2.5 Component注解 111

8.2.6 Module注解 114

8.2.7 Provides注解 115

8.2.8 Scope注解 117

8.2.9 Singleton注解 117

8.2.10 Scope注解和Singleton注解的实现原理 118

8.2.11 日记列表模块依赖关系分析 120

8.2.12 创建日记列表模块Component 120

8.2.13 创建日记列表Presenter Module 121

8.2.14 Component的dependencies属性 123

8.3 存在的问题 125

8.3.1 学习成本极高 125

8.3.2 短期内开发效率低 125

8.3.3 灵活性不良好 126

8.4 小结 126

第9章 函数响应式框架:优雅的RxJava2 127

9.1 什么是RxJava 127

9.2 RxJava2的核心思想 128

9.2.1 函数响应式编程 128

9.2.2 背压 129

9.2.3 链式调用 129

9.3 实战:将RxJava2加入MVP 130

9.3.1 配置RxJava2 130

9.3.2 Flowable 131

9.3.3 响应式拉取 132

9.3.4 修改数据源接口 133

9.3.5 修改本地数据源 133

9.3.6 Just操作符 134

9.3.7 Empty操作符 135

9.3.8 FromIterable操作符 135

9.3.9 To操作符 136

9.3.10 Subscriber和事件流 137

9.3.11 修改数据仓库 137

9.3.12 FlatMap操作符 139

9.3.13 Map操作符 140

9.3.14 修改Presenter 141

9.3.15 CompositeDisposable和Disposable 142

9.3.16 Presenter生命周期 143

9.4 存在的问题 144

9.5 小结 144

第10章 AAC:搭建生命周期感知架构 145

10.1 什么是AAC 145

10.2 AAC的核心思想 146

10.2.1 关注点分离 146

10.2.2 模型驱动界面 147

10.3 ViewModel LiveData 148

10.3.1 DataBinding 148

10.3.2 Gradle依赖配置 149

10.3.3 AAC中的ViewModel 149

10.3.4 使用ViewModel 150

10.3.5 使用ViewModelProviders创建ViewModel 151

10.3.6 什么是LiveData 152

10.3.7 MutableLiveData 153

10.3.8 创建LiveData 154

10.3.9 LiveData更新 155

10.3.10 LiveData接收变化 156

10.4 LifeCycle 156

10.4.1 生命周期 157

10.4.2 LifecycleObserver 158

10.4.3 LifecycleOwner 159

10.5 Room 160

10.5.1 Room的组成 160

10.5.2 实体 161

10.5.3 数据访问对象DAO 163

10.5.4 Room依赖配置 164

10.5.5 定义实体 164

10.5.6 创建Dao 165

10.5.7 创建数据库管理器 166

10.5.8 线程处理 168

10.5.9 修改本地数据源 169

10.5.10 数据库升级 172

10.6 小结 173

第11章 组件化架构:极速运行 174

11.1 什么是组件化 174

11.2 组件化的核心思想 175

11.2.1 软件复用 175

11.2.2 信息隐藏 176

11.2.3 快速运行 177

11.3 组件分离 178

11.3.1 组件层级划分 178

11.3.2 组件划分 179

11.3.3 创建Module 180

11.3.4 组件依赖关系 183

11.3.5 复用Gradle配置 187

11.3.6 公共资源组件 189

11.3.7 基础组件 191

11.3.8 移动依赖 194

11.3.9 Gradle版本号管理 194

11.3.10 处理Context 197

11.3.11 公共组件 198

11.3.12 日记列表展示组件 200

11.3.13 日记添加修改组件 202

11.3.14 Gradle Plugin冲突 204

11.3.15 运行主Module 204

11.4 使用路由 206

11.4.1 路由配置 206

11.4.2 使用Route跳转 207

11.4.3 携带参数跳转 208

11.5 组件运行 210

11.5.1 切换开关 210

11.5.2 组件配置 212

11.5.3 Manifest文件配置 212

11.5.4 集成运行 215

11.6 组件合并 216

11.6.1 组件命名冲突 216

11.6.2 Manifest文件合并策略 217

11.6.3 资源文件冲突 218

11.6.4 资源文件合并策略 219

11.7 小结 220

第12章 The Clean Architecture:整洁的架构 221

12.1 什么是The Clean Architecture 221

12.2 The Clean Architecture的核心思想 222

12.2.1 单向依赖规则 222

12.2.2 业务规则分离 223

12.2.3 简单数据结构跨界 224

12.3 MVP-Clean架构 224

12.3.1 用例的请求数据和响应数据 224

12.3.2 用例的数据处理 226

12.3.3 用例的线程切换 228

12.3.4 创建用例 229

12.3.5 执行用例 230

12.3.6 封装请求数据 231

12.3.7 创建日记更新用例 234

12.3.8 重构日记修改Presenter 235

12.4 VIPER架构 238

12.4.1 什么是VIPER架构 238

12.4.2 VIPER架构的层级划分 239

12.4.3 创建Interactor 240

12.4.4 在协议中加入Interactor 241

12.4.5 使用Interactor 242

12.4.6 创建Router 242

12.4.7 在协议中加入Router 244

12.4.8 使用Router 244

12.5 Riblets架构 245

12.5.1 什么是Riblets架构 245

12.5.2 Riblets架构的组件 246

12.6 小结 247

第13 Fragmentless:Fragment反对者 248

13.1 什么是Fragmentless 248

13.2 Fragmentless实战 249

13.2.1 创建View 249

13.2.2 View附加状态判断 252

13.2.3 修改布局文件 253

13.2.4 修改Activity 254

13.3 小结 255

第14章 Conductor:短兵利刃 257

14.1 什么是Conductor 257

14.2 Conductor实战 258

14.2.1 配置Conductor 259

14.2.2 Controller基类处理 259

14.2.3 重构Fragment 260

14.2.4 Controller的上下文 261

14.2.5 Controller活跃态 262

14.2.6 使用路由 262

14.2.7 日记修改页面处理 263

14.2.8 Controller构造方法 265

14.2.9 页面销毁 266

14.2.10 页面跳转 266

14.3 小结 267

第15章 插件化:模块插拔 268

15.1 什么是插件化 268

15.2 插件化实战 269

15.2.1 配置插件化框架 269

15.2.2 配置主模块 270

15.2.3 验证环境配置 270

15.2.4 框架初始化 271

15.2.5 指定插件类型 272

15.2.6 配置路由信息 272

15.2.7 创建加载页面 275

15.2.8 路由携带参数跳转 276

15.2.9 配置插件的Launcher 276

15.2.10 编译 277

15.3 小结 278

第16章 总结 279

16.1 架构演进 279

16.1.1 MVX系列架构 279

16.1.2 The Clean Architecture系列架构 280

16.1.3 模块化系列架构 281

16.2 选择合适的架构 282

16.2.1 认清你的团队规模 282

16.2.2 目前存在的问题 283

16.2.3 大型技术团队架构选型 283

16.2.4 中小型技术团队架构选型 284

16.2.5 独立开发者架构选型 285

16.3 复盘 285,第1章 什么是架构 1

1.1 架构设计理念 1

1.1.1 软件架构的起源 1

1.1.2 架构设计三要素 2

1.1.3 什么是优秀的软件架构设计 2

1.1.4 软件架构设计的关注点 3

1.2 软件架构设计的本质和目的 3

1.2.1 做出决策 3

1.2.2 降低软件熵 4

1.3 架构设计思维 4

1.3.1 简化思维 4

1.3.2 分层思维 5

1.3.3 分治思维 6

1.3.4 迭代思维 6

1.4 架构设计模式原则 7

1.4.1 单一职责原则 7

1.4.2 开放封闭原则 8

1.4.3 里氏替换原则 9

1.4.4 依赖倒置原则 9

1.4.5 接口分离原则 10

1.5 架构设计步骤 11

1.5.1 认识系统 11

1.5.2 设计系统 12

1.5.3 创建系统 14

1.5.4 收集反馈 14

1.6 小结 15

第2章 MVC架构:表现层分离 16

2.1 什么是MVC 16

2.1.1 MVC的诞生 16

2.1.2 MVC的分层与职责 17

2.1.3 MVC在移动开发中的争议 18

2.2 MVC的模式 19

2.2.1 被动模式 19

2.2.2 主动模式 19

2.2.3 观察者模式 20

2.2.4 被动模式与主动模式的区别 21

2.3 MVC的核心思想 21

2.4 小结 22

第3章 实战:基于MVC架构设计的日记App 23

3.1 层级职责划分 23

3.2 准备阶段 24

3.2.1 准备、创建View 24

3.2.2 清单文件Manifest配置 26

3.2.3 初始化Fragment 27

3.3 创建View 28

3.4 数据处理 31

3.4.1 创建Model 31

3.4.2 创建本地数据源 32

3.4.3 数据持久化工具 33

3.4.4 实现本地数据源 34

3.4.5 填充测试数据 36

3.4.6 使用数据仓库管理数据 37

3.5 创建Controller 40

3.5.1 Controller初始化 40

3.5.2 创建Adapter 41

3.5.3 创建ViewHolder 43

3.5.4 Controller的协调工作 44

3.6 运行App 48

3.7 实现主动模式的MVC 49

3.7.1 改造Model 49

3.7.2 注册观察者 50

3.8 小结 50

第4章 MVP架构:开始解耦 52

4.1 什么是MVP 52

4.1.1 MVP架构的起源 52

4.1.2 MVP的分层与职责 52

4.2 MVP的核心思想 53

4.2.1 面向接口编程 53

4.2.2 德墨忒尔定律 54

4.3 MVP与MVC的区别 55

4.4 MVP模式存在的问题 56

4.4.1 责任过重的Presenter 56

4.4.2 业务逻辑无法复用 56

4.4.3 急剧扩增的接口数量 57

4.5 如何解决Presenter的复用问题 57

4.5.1 提供工具类 57

4.5.2 提供多对一的Presenter 57

4.5.3 分离出Interactor层 58

4.6 小结 59

第5章 实战:MVP架构设计 60

5.1 层级职责划分 60

5.2 准备工作 60

5.2.1 定义基础View接口 60

5.2.2 定义基础Presenter接口 61

5.3 重构:从MVC到MVP 61

5.3.1 创建Presenter 61

5.3.2 改造View 62

5.3.3 传入Presenter实例 63

5.3.4 开发过程中Presenter和View的直接依赖 63

5.3.5 Presenter生命周期的处理 64

5.3.6 列表Adapter的处理 64

5.3.7 展示数据的处理 65

5.3.8 对话框展示的处理 67

5.3.9 菜单的处理 68

5.3.10 实现面向接口设计 69

5.3.11 建立契约类 69

5.4 实现MVP模式:日记修改功能 70

5.4.1 创建日记修改Activity 71

5.4.2 创建日记修改Fragment 72

5.4.3 添加“完成”按钮 74

5.4.4 创建日记修改Presenter 75

5.4.5 日记操作处理 76

5.4.6 页面跳转处理 77

5.4.7 删除旧有的修改日记UI 78

5.4.8 修改为面向接口设计 79

5.5 小结 79

第6章 MVVM架构:双向绑定 81

6.1 什么是MVVM 81

6.1.1 MVVM架构的起源 81

6.1.2 MVVM的分层与职责 82

6.2 MVVM的核心思想 82

6.2.1 进一步解耦 82

6.2.2 数据驱动 83

6.2.3 双向绑定 83

6.3 架构模式对比 84

6.3.1 MVC与MVVM 84

6.3.2 MVP与MVVM 85

6.4 MVVM存在的问题 86

6.4.1 ViewModel难以复用 86

6.4.2 学习成本高 86

6.4.3 调试困难 86

6.5 小结 87

第7章 实战:MVVM架构设计 88

7.1 什么是DataBinding 88

7.2 重构:从MVP到MVVM 88

7.2.1 配置DataBinding支持 89

7.2.2 修改Presenter为ViewModel 89

7.2.3 消除契约类 90

7.2.4 转换布局文件 92

7.2.5 在布局中加入变量和表达式 93

7.2.6 ViewModel继承BaseObservable 94

7.2.7 在XML布局文件中定义列表数据属性 95

7.2.8 使用BindingAdapter处理自定义属性 97

7.2.9 绘制View布局 98

7.2.10 为View属性赋值 99

7.2.11 找到XML中的View 100

7.2.12 ObservableField原理 100

7.2.13 使用ObservableField 101

7.2.14 使用ObservableList 103

7.3 小结 104

第8章 依赖注入:Dagger2锋利的“匕首” 105

8.1 什么是Dagger 105

8.1.1 依赖注入 105

8.1.2 编译时注解解析 107

8.2 实现:将Dagger2加入MVP 108

8.2.1 配置Dagger2 108

8.2.2 确定数据仓库改造目标 108

8.2.3 改造数据仓库 109

8.2.4 Inject注解 110

8.2.5 Component注解 111

8.2.6 Module注解 114

8.2.7 Provides注解 115

8.2.8 Scope注解 117

8.2.9 Singleton注解 117

8.2.10 Scope注解和Singleton注解的实现原理 118

8.2.11 日记列表模块依赖关系分析 120

8.2.12 创建日记列表模块Component 120

8.2.13 创建日记列表Presenter Module 121

8.2.14 Component的dependencies属性 123

8.3 存在的问题 125

8.3.1 学习成本极高 125

8.3.2 短期内开发效率低 125

8.3.3 灵活性不良好 126

8.4 小结 126

第9章 函数响应式框架:优雅的RxJava2 127

9.1 什么是RxJava 127

9.2 RxJava2的核心思想 128

9.2.1 函数响应式编程 128

9.2.2 背压 129

9.2.3 链式调用 129

9.3 实战:将RxJava2加入MVP 130

9.3.1 配置RxJava2 130

9.3.2 Flowable 131

9.3.3 响应式拉取 132

9.3.4 修改数据源接口 133

9.3.5 修改本地数据源 133

9.3.6 Just操作符 134

9.3.7 Empty操作符 135

9.3.8 FromIterable操作符 135

9.3.9 To操作符 136

9.3.10 Subscriber和事件流 137

9.3.11 修改数据仓库 137

9.3.12 FlatMap操作符 139

9.3.13 Map操作符 140

9.3.14 修改Presenter 141

9.3.15 CompositeDisposable和Disposable 142

9.3.16 Presenter生命周期 143

9.4 存在的问题 144

9.5 小结 144

第10章 AAC:搭建生命周期感知架构 145

10.1 什么是AAC 145

10.2 AAC的核心思想 146

10.2.1 关注点分离 146

10.2.2 模型驱动界面 147

10.3 ViewModel LiveData 148

10.3.1 DataBinding 148

10.3.2 Gradle依赖配置 149

10.3.3 AAC中的ViewModel 149

10.3.4 使用ViewModel 150

10.3.5 使用ViewModelProviders创建ViewModel 151

10.3.6 什么是LiveData 152

10.3.7 MutableLiveData 153

10.3.8 创建LiveData 154

10.3.9 LiveData更新 155

10.3.10 LiveData接收变化 156

10.4 LifeCycle 156

10.4.1 生命周期 157

10.4.2 LifecycleObserver 158

10.4.3 LifecycleOwner 159

10.5 Room 160

10.5.1 Room的组成 160

10.5.2 实体 161

10.5.3 数据访问对象DAO 163

10.5.4 Room依赖配置 164

10.5.5 定义实体 164

10.5.6 创建Dao 165

10.5.7 创建数据库管理器 166

10.5.8 线程处理 168

10.5.9 修改本地数据源 169

10.5.10 数据库升级 172

10.6 小结 173

第11章 组件化架构:极速运行 174

11.1 什么是组件化 174

11.2 组件化的核心思想 175

11.2.1 软件复用 175

11.2.2 信息隐藏 176

11.2.3 快速运行 177

11.3 组件分离 178

11.3.1 组件层级划分 178

11.3.2 组件划分 179

11.3.3 创建Module 180

11.3.4 组件依赖关系 183

11.3.5 复用Gradle配置 187

11.3.6 公共资源组件 189

11.3.7 基础组件 191

11.3.8 移动依赖 194

11.3.9 Gradle版本号管理 194

11.3.10 处理Context 197

11.3.11 公共组件 198

11.3.12 日记列表展示组件 200

11.3.13 日记添加修改组件 202

11.3.14 Gradle Plugin冲突 204

11.3.15 运行主Module 204

11.4 使用路由 206

11.4.1 路由配置 206

11.4.2 使用Route跳转 207

11.4.3 携带参数跳转 208

11.5 组件运行 210

11.5.1 切换开关 210

11.5.2 组件配置 212

11.5.3 Manifest文件配置 212

11.5.4 集成运行 215

11.6 组件合并 216

11.6.1 组件命名冲突 216

11.6.2 Manifest文件合并策略 217

11.6.3 资源文件冲突 218

11.6.4 资源文件合并策略 219

11.7 小结 220

第12章 The Clean Architecture:整洁的架构 221

12.1 什么是The Clean Architecture 221

12.2 The Clean Architecture的核心思想 222

12.2.1 单向依赖规则 222

12.2.2 业务规则分离 223

12.2.3 简单数据结构跨界 224

12.3 MVP-Clean架构 224

12.3.1 用例的请求数据和响应数据 224

12.3.2 用例的数据处理 226

12.3.3 用例的线程切换 228

12.3.4 创建用例 229

12.3.5 执行用例 230

12.3.6 封装请求数据 231

12.3.7 创建日记更新用例 234

12.3.8 重构日记修改Presenter 235

12.4 VIPER架构 238

12.4.1 什么是VIPER架构 238

12.4.2 VIPER架构的层级划分 239

12.4.3 创建Interactor 240

12.4.4 在协议中加入Interactor 241

12.4.5 使用Interactor 242

12.4.6 创建Router 242

12.4.7 在协议中加入Router 244

12.4.8 使用Router 244

12.5 Riblets架构 245

12.5.1 什么是Riblets架构 245

12.5.2 Riblets架构的组件 246

12.6 小结 247

第13 Fragmentless:Fragment反对者 248

13.1 什么是Fragmentless 248

13.2 Fragmentless实战 249

13.2.1 创建View 249

13.2.2 View附加状态判断 252

13.2.3 修改布局文件 253

13.2.4 修改Activity 254

13.3 小结 255

第14章 Conductor:短兵利刃 257

14.1 什么是Conductor 257

14.2 Conductor实战 258

14.2.1 配置Conductor 259

14.2.2 Controller基类处理 259

14.2.3 重构Fragment 260

14.2.4 Controller的上下文 261

14.2.5 Controller活跃态 262

14.2.6 使用路由 262

14.2.7 日记修改页面处理 263

14.2.8 Controller构造方法 265

14.2.9 页面销毁 266

14.2.10 页面跳转 266

14.3 小结 267

第15章 插件化:模块插拔 268

15.1 什么是插件化 268

15.2 插件化实战 269

15.2.1 配置插件化框架 269

15.2.2 配置主模块 270

15.2.3 验证环境配置 270

15.2.4 框架初始化 271

15.2.5 指定插件类型 272

15.2.6 配置路由信息 272

15.2.7 创建加载页面 275

15.2.8 路由携带参数跳转 276

15.2.9 配置插件的Launcher 276

15.2.10 编译 277

15.3 小结 278

第16章 总结 279

16.1 架构演进 279

16.1.1 MVX系列架构 279

16.1.2 The Clean Architecture系列架构 280

16.1.3 模块化系列架构 281

16.2 选择合适的架构 282

16.2.1 认清你的团队规模 282

16.2.2 目前存在的问题 283

16.2.3 大型技术团队架构选型 283

16.2.4 中小型技术团队架构选型 284

16.2.5 独立开发者架构选型 285

16.3 复盘 2852100433B

查看详情

架构实战内容介绍

本书从基本原理入手,介绍软件架构设计过程中涉及的一些概念、流程、方法、用到的工作产品及可重用的资源,从第6章开始,通过介绍一个具体的案例来阐述如 何定义需求、创建逻辑架构、创建物理架构。在第10章“进阶”中,作者补充说明了架构师和软件开发项目其他方面的关系,后面又说明了各种软件开发项目可能 存在的困难及相应的处理方法。

本书理论结合实践,介绍了一些可以应用到整个或部分的架构设计流程中的最佳方法。不管你是一位资深的架构师还是一位有志于成为架构师的初级使用者,通过阅 读本书都能从中获益。

查看详情

架构实战作者介绍

Peter Eeles,IBM Rational Software的高级IT架构师,其主要工作室进行架构设计和实现大规模、分布式的系统。他目前致力于帮助组织提高软件开发能力。除本书外,Eeles还与人合作编写了《Building J2EETM Applications with the Rational Unified Process》(Addison-Wesley,2003)和《Building Business Objects》(Wiley,1998)。

Peter Cripps,IBM Global Business Services的高级IT架构师,专注于应用组件和基于服务的开发技术,并在整个IBM公司推广架构设计最佳实践,目前从事IBM Unified Method Framework的开发工作。

查看详情

相关推荐

立即注册
免费服务热线: 400-888-9639