第1章 敏捷世界里的代码质量 1
1.1软件开发的传统方法 2
1.2软件开发的敏捷方法 3
1.2.1 Scrum 4
1.2.2 eXtreme Programming 5
1.2.3测试驱动开发 6
1.3尽早进行质量控制 7
1.4微软内幕:Windows Live Hotmail工程 8
1.4.1工程准则 9
1.4.2成功的关键因素 10
1.5编写坚实代码的方法 11
1.5.1专注设计 11
1.5.2防御和调试 12
1.5.3分析与测试 13
1.5.4改进流程和态度 13
1.6总结 14
1.7本章要点 14
第2章 类设计和原型开发 16
2.1 Visual Studio中的协作 17
2.2磨刀不误砍柴工 17
2.3软件建模 19
2.3.1统一建模语言 20
2.3.2 Visio示例 24
2.4原型开发 29
2.5跟踪 31
2.6 Visual Studio类设计器 32
2.6.1创建一个类图 33
2.6.2使用类设计器进行原型开发 34
2.6.3原型开发示例 35
2.7总结 38
2.8本章要点 38
第3章 元编程 39
3.1什么是元数据 39
3.2托管应用里的元数据 41
3.3应用程序中的元数据 52
3.4微软内幕:Windows Live Spaces中的配置管理 53
3.5总结 54
3.6本章要点 55
第4章 性能也是功能 56
4.1常见的性能难点 56
4.1.1网络延时 57
4.1.2负载大小和网络往返时延 58
4.1.3受限的TCP连接 59
4.1.4未优化的代码 60
4.2分析应用程序性能 61
4.3提升Web应用性能的技巧 64
4.3.1减小负载大小 64
4.3.2有效利用缓存 65
4.3.3优化网络通信 66
4.3.4为性能组织编写代码 69
4.4采用性能最佳实践 70
4.5微软内幕:解决Live Search的性能问题 71
4.5.1 Web性能准则 72
4.5.2成功的关键要素 73
4.6总结 73
4.7本章要点 74
第5章 伸缩性设计 75
5.1理解应用程序伸缩性 75
5.1.1伸缩性之路 76
5.1.2数据库的伸缩性 79
5.2伸缩Web应用程序的技巧 80
5.2.1选择可伸缩的应用程序设计 81
5.2.2设计可伸缩的应用程序基础设施 82
5.2.3抵御应用程序故障 84
5.2.4保证可管理性和可维护性 86
5.3微软内幕:管理Windows Live Messenger服务基础设施 89
5.4总结 91
5.5本章要点 91
第6章 安全性设计和实现 92
6.1常见的应用程序安全威胁 92
6.2设计安全的应用程序的原则 94
6.3安全的应用程序的SD3+C策略和实践 95
6.3.1设计上的安全性 95
6.3.2默认值的安全性 99
6.3.3部署和通信中的安全性 99
6.4理解.NET框架的安全性原则 101
6.4.1运行时安全策略 101
6.4.2代码访问安全 103
6.4.3应用运行时安全策略 104
6.5其他安全性最佳实践 105
6.6总结 106
6.7本章要点 107
第7章 托管内存模型 108
7.1托管堆 109
7.2垃圾回收 109
7.2.1原生对象的托管包裹 110
7.2.2 GC类 111
7.2.3大型对象堆 112
7.3终止 114
7.3.1不确定的垃圾回收 114
7.3.2可丢弃对象 115
7.3.3丢弃模式 117
7.3.4弱引用 120
7.4固定 122
7.5托管堆的技巧 123
7.6 CLR Profiler 124
7.7总结 128
7.8本章要点 129
第8章 防御式编程 130
8.1防御式编程和C 131
8.2警告 132
8.3代码检查 132
8.4软件测试 133
8.4.1测试驱动开发 135
8.4.2代码覆盖 136
8.4.3自我描述的代码 138
8.4.4命名规则 139
8.4.5伪代码 140
8.4.6注释 141
8.5用类实现防御式编程 144
8.5.1修饰符 144
8.5.2接口 144
8.6防御式编程小结 145
8.7设计模式 151
8.8总结 152
8.9本章要点 153
第9章 调试 154
9.1溢出bug 157
9.2 Pentium FDIV bug 157
9.3符号 157
9.3.1符号服务器 159
9.3.2源码服务器 161
9.4抢先式调试 162
9.5主动型调试 163
9.5.1托管调试助手 163
9.5.2 MDA举例 165
9.5.3代码分析 165
9.5.4性能监视 166
9.6调试 168
9.7调试工具 169
9.7.1 Visual Studio 169
9.7.2 .NET框架工具 171
9.7.3 Windows调试工具 172
9.7.4 CL R Profiler 172
9.7.5 Sysinternals 173
9.8跟踪 173
9.8.1 Web应用程序跟踪 174
9.8.2异常处理 175
9.9生产调试 177
9.10总结 182
9.11本章要点 183
第10章 代码分析 184
10.1投资测试过程 185
10.1.1定义测试的节奏 185
10.1.2建立测试工作项的跟踪 187
10.2采用自动化的代码分析 189
10.2.1使用静态代码分析工具 189
10.2.2编写应用程序测试代码 191
10.2.3使用Visual Studio进行测试 194
10.3通过度量来理解质量 196
10.3.1衡量代码的复杂度和可维护性 196
10.3.2通过透视来理解质量 197
10.4微软内幕:Microsoft.com的Web分析平台的质量管理 198
10.4.1代码质量的重要性 198
10.4.2测试投资 199
10.4.3管理质量 200
10.5总结 200
10.6本章要点 200
第11章 改进工程流程 202
11.1工程流程改进的技巧 202
11.1.1建立起关注质量的项目节奏 203
11.1.2实现源码控制和提交流程 204
11.1.3每日发布和测试代码 209
11.1.4自动化每日构建 212
11.1.5使用MSBuild 213
11.1.6创建并执行质量指标 216
11.2总结 218
11.3本章要点 218
第12章 态度决定一切 219
12.1激情 219
12.2线性还是迭代 220
12.3销售为王 221
12.4灵活性 223
12.5解决实际问题 224
12.6你要负责 224
12.7把移植代码当做新代码来写 225
12.8重构 226
12.9优先级 226
12.10从实际出发 227
12.11拥抱变化 228
12.12拓展视野 229
附录A敏捷开发资源 230
附录B Web性能资源 231