我们在微软怎样开发软件(英文版)(图灵程序设计丛书·微软技术系列)
分類: 图书,计算机与互联网,软件工程及软件方法学,软件过程,
品牌: Donis Marshall
基本信息·出版社:人民邮电出版社
·页码:315 页
·出版日期:2009年
·ISBN:7115206791/9787115206794
·条形码:9787115206794
·包装版本:1版
·装帧:平装
·开本:16
·正文语种:英语
·丛书名:图灵程序设计丛书·微软技术系列
产品信息有问题吗?请帮我们更新产品信息。
内容简介《我们在微软怎样开发软件(英文版)》探讨了编写高质量代码的最佳实践,涉及软件开发的各个方面。书中的实用建议来自经验丰富的工程开发人员,这些建议可以应用于设计、原型化、实现、调试和测试等产品开发生命周期的各阶段。同时,《我们在微软怎样开发软件(英文版)》也提供了微软公司Windows Live Hotmail 和Live Search 等团队的真实开发案例。《我们在微软怎样开发软件(英文版)》适合各层次软件开发人员阅读。
作者简介Donis Marshall,著名微软技术专家,现任DebugLive公司总裁。具有20多年的开发经验,10多年来培训了几代微软工程师,尤其擅长调试技术。除本书外,他著有多部作品,包括Programming Microsoft Visual C# 2008: The Language和.NET Security Programming。 John Bruno 微软公司高级项目经理,具有10多年的软件开发经验。他在Windows Live以及Windows Live Spaces服务架构和开发平台的开发中都起到了关键作用。
媒体推荐“这本书很好地兼顾了管理和技术两个方面,内容涉及软件建模、安全设计、防御性编程等。应用书中提供的最佳实践,可以令开发人员的软件开发水平更上一层楼。”
——John Robbins,微软技术大师,Wintellect 创始人之一
“这是每个IT 专业人士必读的一本书,特别是使用托管代码的开发人员。书中不仅给出了最佳工程实践,并通过实际案例加以解析。”
——Andres Juarez,微软公司产品发布经理
编辑推荐通过将《我们在微软怎样开发软件(英文版)》的理念和实践应用于实战,开发团队和个人的水平将迅速达到全新境界。第一次全面揭示世界软件巨人微软致胜的技术奥秘
深入剖析成就高质量代码的四大关键原则
软件开发人员的必读秘籍
今天,软件日趋复杂,而要求却越来越高,如何应对愈加困难的开发任务,创建高质量、高效率和安全的软件?
《我们在微软怎样开发软件(英文版)》由两位著名微软技术专家合著,总结了微软公司各开发团队多年来积累的成功经验,揭示了全球软件巨人微软公司在软件开发周期各个阶段构建高质量代码的内幕,内容兼顾管理和技术两个层面。书中生动讲述了大量现代软件开发方法和编程技巧,提供了许多来自各微软开发团队的真知灼见,并从中提炼出“专注于设计 ”、“防御和调试”、“分析和测试”和“改进过程和观念”四大关键原则。
目录
Introduction. xxi
Who Is This Book For? xxi
Organization of This Book xxi
System Requirements xxii
The Companion Web Site xxii
Find Additional Content Online xxiii
Support for This Book xxiii
1 Code Quality in an Agile World 1
Traditional Methods of Software Development 2
Agile Methods of Software Development 3
Scrum 4
eXtreme Programming 5
Test-Driven Development 6
Moving Quality Upstream 8
Inside Microsoft: Windows Live Hotmail Engineering 10
Engineering Principles 10
Key Success Factors 11
Tactics for Writing Solid Code 13
Focus on Design 14
Defend and Debug 15
Analyze and Test 16
Improve Processes and Attitudes 16
Summary 17
Key Points 18
2 Class Design and Prototyping 19
Collaboration in Visual Studio 20
Think First, Code Later 21
Software Modeling 23
Unified Modeling Language 24
Prototyping 37
Summary 47
Key Points 47
3 Metaprogramming 49
What Is Metadata? 49
Metadata in Managed Applications 51
Application Configuration Files 52
Metadata in Your Applications 65
Inside Microsoft: Configuration Management in Windows Live Spaces 66
Summary 69
Key Points 69
4 Performance Is a Feature 71
Common Performance Challenges 72
Network Latency 72
Payload Size and Network Round Trips 74
Limited TCP Connections 75
Poorly Optimized Code 76
Analyzing Application Performance 78
Analyzing the Performance of Live Search 79
Tactics for Improving Web Application Performance 81
Reduce Payload Size 82
Cache Effectively 83
Optimize Network Traffic 84
Organize and Write Code for Better Performance 89
Incorporating Performance Best Practices 90
Establish a Performance Excellence Program 90
Inside Microsoft: Tackling Live Search Performance 92
Web Performance Principles 92
Key Success Factors 93
Summary 94
Key Points 95
5 Designing for Scale 97
Understanding Application Scalability 98
Approaches to Scalability 99
Database Scalability 102
Tactics for Scaling Web Applications 104
Inside Microsoft: Managing the Windows Live Messenger Service
Infrastructure 115
Engineering Principles 115
Summary 118
Key Points 118
6 Security Design and Implementation 121
Common Application Security Threats 121
Principles for Designing Secure Applications 123
Security Design Principles 124
SD3+C Strategy and Practices for Secure Applications 125
Secure by Design 126
Secure by Default 130
Secure in Deployment and Communication 131
Understanding NET Framework Security Principles 133
Additional Security Best Practices 139
Summary 141
Key Points 141
7 Managed Memory Model 143
Managed Heap 144
Garbage Collection 145
Managed Wrappers for Native Objects 146
GC Class 147
Large Object Heap 148
Finalization 151
Non-Deterministic Garbage Collection ..151
Disposable Objects 154
Dispose Pattern 155
Weak References 158
Pinning 160
Tips for the Managed Heap 162
CLR Profiler 163
CLR Profiler Walkthrough 164
Summary 168
Key Points 169
8 Defensive Programming 171
Defensive Programming and C# 172
Warnings 173
Code Review 174
Software Testing 175
Test-Driven Development 177
Code Coverage 180
Self-Documenting Code 181
Naming Conventions 182
Pseudo Code 183
Comments 185
Defensive Programming with Classes 188
Modifiers 189
Interfaces 189
Defensive Programming Without Examples 190
Defensive Programming with Examples 192
Design Patterns 196
Summary 198
Key Points 199
9 Debugging 201
Overflow Bug 205
Pentium FDIV Bug 205
Symbols 205
Symbol Server 208
Source Servers 209
Preemptive Debugging 210
Proactive Debugging 212
Managed Debugging Assistants 213
MDA Example 214
Code Analysis 215
Performance Monitoring 215
Debugging 218
Debugging Tools 220
Visual Studio 220
NET Framework Tools 222
Debugging Tools for Windows 223
CLR Profiler 224
Sysinternals 224
Tracing 225
Web Application Tracing 225
Exception Handling 227
Production Debugging 230
ADPlus 231
Summary 236
Key Points 237
10 Code Analysis
11 Improving Engineering Processes
12 Attitude Is Everything
A Aglie Development Resources
B Web Performance Resources
Index
……[看更多目录]
文摘Thus far we have discussed tactics to address two of the three principles outlined in the pre-vious section. Those tactics enumerated specific and actionable recommendations for how todesign applications to address scalability and availability in your applications. While both ofthose goals and their respective tactics for achieving them are critically important, they arecomplemented by the third and equally important principle that applications be manageableand maintainable from an operational perspective.As applications begin to scale out to accommodate more users, the complexity of the appli-cation infrastructure, live site issues, and management overhead can increase, as well. Thiscan lead to potential quality problems with the delivery of the application, which will nega-tively affect users while simultaneously driving up the cost of maintenance. Live site bugs,capacity issues, and general server reliability problems are just a few examples of issues thatmay arise unexpectedly and require diagnosis and supportive action. It is important thatapplication developers consider the necessary features that enable their applications to besupported and managed by individuals who may not have actually written the executingapplication code. Adding instrumentation, interfaces for connecting monitoring tools, andapplication health reporting are just a few examples of features that help to paint a clear pic-ture of how the application is working in the live production environment. This will inevitablylead to an improvement in managing the application, as well as diagnosing and addressingissues on the live site even as the application scales to accommodate additional users.Unfortunately, addressing manageability and maintainability within application designsis often not the first priority for development teams. As application developers, we tendto gravitate toward the set of "problems" that are most interesting for us to solve from anarchitectural and business perspective~ Thi
……[看更多书摘]