软件再工程

出版日期:2014-3
ISBN:9787111448812
作者:(美)Bradley Irby

内容概要

Bradley Irby 资深软件架构师和CTO,拥有20余年行业经验,擅长软件再工程和软件迁移,在提升和改善旧版系统的质量和稳定性方面有丰富的经验。曾将多个基于VB6、ASP_Classic和早期.NET版本的应用再工程为当前体系结构和最新质量方法下的现代应用。凭借其高超的技艺,再工程一个200万行代码的.NET应用,而该过程几乎是零缺陷。与此同时,他也擅长在不关闭和不停止功能开发的情况下更新应用程序,赢得客户广泛好评。他还常为知名公司和政府部门开发高度定制的系统和应用,是旧金山.NET用户联盟管理者,常在全美发表演讲。

书籍目录

译者序
前 言
第一部分 目标架构
第1章 实现面向服务的架构
2
1.1 面向服务的架构概览
2
1.2 理解标准化服务约定
3
1.3 理解耦合
8
1.4 理解服务抽象
10
1.5 设计可复用服务
13
1.6 理解服务自治和服务组合
13
1.7 理解服务的无状态性
13
1.8 一个服务示例
18
1.9 总结
19
第2章 理解应用程序架构
20
2.1 使用架构模式
20
2.2 架构模式概览
20
2.3 MVP、MVC和MVVM的区别
21
2.3.1 模型访问
22
2.3.2 视图模型
23
2.4 处理UI事件
28
2.5 模式如何工作
32
2.6 应该选择哪种模式
33
2.7 总结
34
第3章 单元测试
35
3.1 一个单元测试示例
35
3.2 创建单元测试
36
3.3 编写测试
38
3.4 检测异常
43
3.5 理解Assert的强大
46
3.6 单元测试与集成测试比较
46
3.7 使用InternalsVisibleTo属性
46
3.8 理解测试驱动开发
48
3.9 了解单元测试的更多内容
49
3.10 总结
49
第4章 理解依赖倒置原则
50
4.1 理解紧耦合
50
4.2 实现抽象工厂模式
56
4.3 引入接口
59
4.4 创建单元测试
62
4.5 理解服务定位
63
4.5.1 控制反转容器
63
4.5.2 服务定位器
66
4.5.3 一个真实的示例
68
4.5.4 按需服务属性
72
4.5.5 单元测试的优点
75
4.5.6 最后调整
75
4.6 使用依赖注入
78
4.7 为什么服务定位对再工程来说更好
82
4.8 总结
86
第5章 对单元测试使用测试替身
87
5.1 测试替身如何工作
87
5.2 测试替身可以满足什么需要
87
5.3 创建存根
90
5.4 创建模拟
94
5.4.1 第二个模拟示例
97
5.4.2 第三个模拟示例
98
5.5 使用模拟系统服务
99
5.6 了解测试替身的更多内容
101
5.7 总结
101
第二部分 再工程
第6章 回顾最初的解决方案
104
6.1 分析代码
104
6.1.1 基础架构
105
6.1.2 代码结构
105
6.1.3 数据库访问
106
6.1.4 数据结构
106
6.1.5 外部接口
106
6.1.6 应用程序控件与窗体控件
107
6.2 分析一般代码结构
107
6.3 管理语言迁移
108
6.4 删除死代码
108
6.5 使用全局变量
109
6.6 适度代码转换
111
6.7 使用自动化代码转换实用工具
112
6.8 使用数据访问技术
113
6.8.1 侦测数据模型
113
6.8.2 侦测数据访问模式
115
6.9 总结
115
第7章 项目规划
116
7.1 管理期望
116
7.2 创建再工程团队
116
7.3 识别开发工具和生成过程
117
7.3.1 引入源代码管理
117
7.3.2 引入缺陷跟踪
118
7.3.3 安装和使用持续集成服务器
118
7.4 清理旧版解决方案
119
7.5 建立基础
119
7.6 重构以使用基本服务
120
7.7 重构以使用高级服务
121
7.8 向利益相关者报告进展情况
121
7.9 管理沟通和培训
122
7.10 总结
122
第8章 识别开发工具和生成过程
123
8.1 使用源代码管理
123
8.1.1 源代码管理的类型
123
8.1.2 第一个流程示例:使用分布式系统
124
8.1.3 第二个流程示例:使用分布式系统
125
8.1.4 第三个流程示例:使用集中式系统
125
8.2 理解集中式系统和分布式系统的优缺点
125
8.2.1 使用别人的共享代码
126
8.2.2 与别人共享代码并审查更改
126
8.2.3 备份代码
126
8.2.4 管理签入频率
126
8.2.5 管理合并冲突
127
8.2.6 管理控制
127
8.2.7 优缺点的最后说明
127
8.3 评估主机托管服务
127
8.3.1 使用Apache Subversion
128
8.3.2 使用微软的团队基础服务器
128
8.3.3 使用Git
129
8.4 管理功能和缺陷
129
8.4.1 管理自定义工作流
129
8.4.2 管理敏捷开发
130
8.4.3 管理报告
130
8.5 使用持续集成服务器和生成服务器
130
8.6 使用Visual Studio 2010开发工具
131
8.6.1 Visual Studio的重构工具
131
8.6.2 第三方重构工具
132
8.7 总结
133
第9章 清理旧版解决方案
134
9.1 组织文件系统
134
9.2 项目结构化
135
9.3 确定项目类别
136
9.4 理解项目类型
137
9.4.1 应用程序无关项目
137
9.4.2 通用UI项目
137
9.4.3 模型无关项目
138
9.4.4 模型特定项目
138
9.5 再工程项目建议
138
9.5.1 常量
138
9.5.2 数据传输对象项目
139
9.5.3 接口
140
9.5.4 服务
140
9.5.5 域模型项目
141
9.5.6 Repository项目
141
9.5.7 控制器、视图模型和表示器
142
9.6 重构解决方案结构
142
9.6.1 去除不必要的Using语句
142
9.6.2 分离单元测试和集成测试
143
9.6.3 将类移动到合适的项目
143
9.6.4 将快捷方式移动到库
144
9.7 影响逻辑的重构
144
9.7.1 将初始化逻辑移动到构造器内
145
9.7.2 用卫语句代替嵌套的if语句
146
9.7.3 去除对实体类构造器的访问
150
9.8 总结
150
第10章 建立基础
151
10.1 添加新项目
151
10.2 使用Prism、Unity和Enterprise Library 版本
151
10.3 修改外壳程序
154
10.3.1 创建IBaseView
154
10.3.2 修改当前外壳程序
155
10.3.3 添加一个外壳程序控制器
156
10.4 创建服务定位器
157
10.5 建立Bootstrapper类
159
10.5.1 创建Winforms引导程序
159
10.5.2 更新Winforms Program类
161
10.5.3 创建一个WPF应用程序和引导程序
163
10.5.4 使用替代引导程序的配置
166
10.6 总结
168
第11章 服务的基本重构
169
11.1 使用DialogService
169
11.1.1 单元测试
173
11.1.2 重构DialogService
178
11.1.3 添加单元测试
179
11.2 使用LogWriterService
179
11.3 跟踪会话信息
184
11.4 以SOA方式访问资源
186
11.5 使用消息聚合器
190
11.6 转换静态类
194
11.7 重构静态类
194
11.8 总结
195
第12章 服务的高级重构
196
12.1 使用知识库模式
196
12.1.1 用域模型创建知识库
203
12.1.2 再工程知识库的方法
207
12.1.3 转换现有代码以使用域模型
207
12.1.4 向域模型中添加数据验证
208
12.1.5 再工程域模型以使用验证
212
12.2 使用通用对象管理器
212
12.3 用命令调度服务简化复杂代码
217
12.4 总结
225
第13章 重构为控制器
226
13.1 使用旧版方法创建窗体
226
13.2 准备视图
229
13.3 引入控制器
230
13.4 优化控制器
231
13.5 总结
233
附录 用Visual Studio 2012 再工程.NET项目
234

作者简介

【编辑推荐】

再工程领域的集大成之作,由有20余年实践经验资深软件架构师撰写,亚马逊全五星好评

通过大量真实案例,充分展示利用再工程方法持续优化现有软件系统的工具、思维、方法和最佳实践
内容简介
随着软件使用时间的增长,很多应用和系统迅速落后于现实应用世界,而且变得脆弱:难于修复、管理、使用和改进。作者结合多年软件再工程经验着重介绍了如何在不影响生产和服务的前提下,将新的架构和先进的特性集成到既有的关键业务系统的最佳实践,使.NET代码获得新生。本书使用一种循序渐进的方法,结合大量代码和案例,传授使系统变得更可靠、实用和易于维护的技术,为企业经济、便捷地解决系统老化问题提供方法指南。
覆盖内容包括:

在不破坏软件的前提下,将旧版.NET软件迁移到更加灵活、广泛和可维护的架构中;

采用MVC、MVP和MVVM模式重构Web应用程序;

提出正确的问题,以预测可能发生的重构问题;

规划和组织再工程项目,在恰当的时间将合适的技术运用到每一个任务;

采用创新的双重测试使得单元测试更加有效;

应用依赖倒置打破紧耦合,并促进开发和测试;

应用源代码控制、缺陷跟踪和持续集成;

在未接触业务逻辑之前,通过“清理”旧版解决方案进行改善;

建立坚实的开发基础结构以支持再工程项目;

重构服务,涵盖知识库、域模型和命令调度程序的使用等高级技术;

重构控制器/视图或视图模型/视图对。
对于所有开发人员、架构师和项目经理,以及那些想要了解再工程项目中团队所面临的独特挑战的大量非技术型管理人员和首席技术官来说,本书不容错过!
【推荐阅读】
软件工程(第9版)
软件工程:面向对象和传统的方法(第8版)
软件工程:实践者的研究方法
软件工程最佳实践
基于模式的工程


 软件再工程下载



发布书评

 
 


 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024