图书目录

第1章认识软件架构1

1.1软件架构与软件工程1

1.1.1软件产业的工业化与现代化1

1.1.2软件系统的复杂性2

1.1.3克服“软件危机”的进程3

1.1.4现代软件产业发展的时代特征4

1.1.5国内软件产业发展的问题6

1.1.6软件架构与软件工程课程的关系7

1.1.7本课程的参考书7

1.2软件架构概述8

1.2.1软件架构的定义8

1.2.2软件架构的视角9

1.2.3软件架构的表示方法10

1.2.4架构的一般特性10

1.2.5统一过程(RUP)的架构 13

1.3感受身边的架构存在13

1.3.1电灯开关控制系统的架构13

1.3.2鼠标接口的架构14

1.4两个小程序的架构分析15

1.4.1两个小程序15

1.4.2“欢迎”程序的实现过程16

1.4.3小程序的架构实现小结19

1.5实践与思考19

1.5.1实践题19

1.5.2思考题20\软\件\架\构\设\计\实\践\教\程\/目录/ 第2章架构与架构师的作用21

2.1架构是需求将如何被实现的描述22

2.1.1文件传输软件的架构描述与分析22

2.1.2文件传输软件的新需求及其改进方案25

2.1.3架构描述表达了系统必须实现的需求26

2.1.4架构描述表达了软件系统的实现结构27

2.2架构提供满足关键属性需求的方案29

2.2.1汽车控制系统架构演变的案例分析29

2.2.2软件系统的关键质量属性需求33

2.2.3关键质量属性需求与系统功能的正交性34

2.3架构是软件迭代开发的框架36

2.3.1架构是软件迭代开发的框架36

2.3.2软件产品开发对架构的依赖39

2.4架构是软件过程管理的基础40

2.4.1软件过程可视性与软件架构40

2.4.2软件过程管理的基本内容42

2.4.3微软VSTS的软件过程跟踪47

2.4.4将架构的关键构件设定为基线51

2.5软件过程对架构的反作用52

2.5.1需求影响架构53

2.5.2系统设计影响架构54

2.5.3软件过程影响架构55

2.5.4组织影响架构56

2.5.5架构的反作用 56

2.6软件架构师的作用、任务与责任58

2.6.1架构师的作用58

2.6.2架构师的任务与责任58

2.6.3从编码工程师到架构师59

2.7实践与思考60

2.7.1实践题60

2.7.2思考题60

第3章软件架构的描述与可视化61

3.1架构描述与UML架构视图61

3.1.1架构描述的基本考虑63

3.1.2基于UML 4+1的软件架构视图64

3.2绘制软件架构视图68

3.2.1用Visio 2007绘制架构视图68

3.2.2用Rational Rose 2003绘制架构视图72

3.2.3用VS 2010绘制架构视图73

3.2.4架构师的思考76

3.3使用Rational Rose逆向分析工具分析架构77

3.3.1Rational Rose逆向分析工具概述77

3.3.2对C++项目进行架构逆向分析78

3.3.3“欢迎”程序架构的逆向分析82

3.3.4架构师的思考83

3.4用微软VS 2010逆向分析工具分析架构86

3.4.1微软VS 2010逆向分析工具概述86

3.4.2使用VS 2010对五子棋程序进行架构逆向分析90

3.4.3“五子棋”系统架构的逆向分析94

3.4.4架构师的思考99

3.5架构设计阶段的软件工程文档101

3.5.1系统设计规范的内容101

3.5.2规范系统设计活动过程101

3.5.3规范设计的制品104

3.5.4需要编写哪些架构视图和文档105

3.5.5透过架构视图表现架构设计的核心内容106

3.6实践与思考108

3.6.1实践题108

3.6.2思考题108

第4章从需求到架构109

4.1架构师的需求过程110

4.1.1现代软件工程的需求过程110

4.1.2需求获取阶段与架构师的关注点111

4.1.3需求分析阶段与架构师的关注点114

4.1.4需求处理阶段与架构师的关注点116

4.1.5需求评审阶段与架构师的关注点119

4.2需求转换的面向过程方法121

4.2.1理解需求模型的概念与意义122

4.2.2面向过程的需求建模方法123

4.2.3面向过程的需求转换124

4.2.4面向过程的变换流与事物流转换125

4.2.5采用变换流方法的案例分析128

4.2.6采用UC矩阵方法的案例分析132

4.2.7面向过程需求转换方式的弊端135

4.3认识和理解需求分析的OMT模型138

4.3.1面向过程与面向对象的区别138

4.3.2基于UML用例的业务建模139

4.3.3基于UML的类与对象建模140

4.3.4基于UML的动态建模146

4.3.5基于UML的功能建模147

4.3.6电梯控制系统的OMT模型描述与分析148

4.4面向对象的需求转换方法150

4.4.1面向对象转换的一般概念150

4.4.2从需求模型到物理架构152

4.4.3从需求模型到开发和运行架构155

4.4.4从需求模型到逻辑架构和数据架构155

4.4.5电梯控制系统的5个架构分析158

4.5ATM扩展项目的需求转换过程163

4.5.1ATM基本系统163

4.5.2ATM扩展的需求获取166

4.5.3ATM扩展需求的现状与对策分析169

4.5.4ATM扩展需求的架构规划178

4.5.5ATM扩展需求的架构设计与平衡181

4.6软件架构师的需求参与184

4.6.1需求与架构衔接阶段的角色扮演184

4.6.2架构师参与需求深度的“底线”185

4.6.3需求与架构平衡的“底线”185

4.7实践与思考186

4.7.1实践题186

4.7.2思考题187

第5章软件架构设计的参考模型188

5.1传统系统设计的基本思路和思想方法189

5.1.1传统系统设计的思路189

5.1.2抽象与求精的设计方法194

5.1.3模块松耦合与强内聚的追求198

5.2两种典型软件系统的架构模式分析202

5.2.1开放式系统互连参考模型架构的层次模式202

5.2.2操作系统架构的层次模式205

5.2.3两种系统架构模式的比较与借鉴208

5.3其他典型软件架构模型及其参考意义209

5.3.1流程处理系统209

5.3.2客户/服务器系统210

5.3.3层状系统212

5.3.4三级和多级系统212

5.3.5团聚和串行法213

5.3.6代理214

5.3.7聚合和联邦系统215

5.4实践与思考216

5.4.1实践题216

5.4.2思考题216

第6章软件架构的概要设计与实现217

6.1软件架构概要设计的任务与过程217

6.1.1系统概要设计的任务217

6.1.2系统概要设计的意义218

6.1.3面向结构的系统概要设计过程219

6.1.4面向对象的系统概要设计过程220

6.2软件系统概要设计的子系统设计222

6.2.1子系统的含义与特性222

6.2.2子系统所包含的内部组件223

6.2.3基于网络拓扑结构的子系统划分225

6.2.4基于责任层次的子系统划分229

6.2.5基于状态转换的子系统划分232

6.2.6子系统的其他划分方法236

6.2.7子系统划分中的关注点分离237

6.2.8将子系统分配到硬件238

6.3电梯控制系统的概要设计与实现240

6.3.1需求模型中的子系统划分与疑问240

6.3.2选择适合电梯控制系统的架构模型241

6.3.3电梯控制子系统划分的关键因素与分离点243

6.3.4根据实时与并发特性划分子系统245

6.3.5将逻辑子系统与物理子系统对应起来246

6.3.6电梯控制系统的实现与测试验收247

6.3.7电梯控制系统概要设计效果的检验251

6.4实践与思考252

6.4.1实践题252

6.4.2思考题252

第7章基于接口、组件和SOA的架构设计与实现253

7.1接口设计与实现254

7.1.1接口的基本概念254

7.1.2抽象类继承与接口继承257

7.1.3面向接口编程与面向接口设计260

7.1.4面向接口设计的实现案例与分析262

7.1.5理解面向接口的设计273

7.2软件架构设计的模式与风格275

7.2.1设计模式275

7.2.2风格276

7.2.3框架276

7.2.4行业应用框架277

7.2.5模式、风格与框架的区别277

7.3面向对象的设计模式278

7.3.1从软件架构到设计模式278

7.3.2创建型设计模式279

7.3.3创建型设计模式应用实例分析288

7.3.4设计模式的选择与运用思路294

7.4组件与组件的运用295

7.4.1组件概念与COM组件的基本特性295

7.4.2使用普通DLL实现的应用程序案例300

7.4.3使用WMP的COM组件实现媒体播放器302

7.4.4理解WMP组件的对象模型304

7.4.5一般COM组件的实现与使用307

7.4.6使用ATL工具开发COM组件320

7.4.7基于组件的架构设计326

7.5基于SOA的分布式系统设计体验331

7.5.1SOA的概念与架构设计331

7.5.2VSTS分布式系统设计器介绍338

7.5.3定义组件的提供者340

7.5.4定义对组件提供者终节点的控制341

7.5.5定义组件之间的连接343

7.5.6应用程序的实现343

7.6实践与思考349

7.6.1实践题349

7.6.2思考题349

第8章基于MVC设计模式的架构设计与实现350

8.1面向对象的MVC设计模式351

8.1.1图形化与交互式应用的可变需求351

8.1.2MVC组件的作用和运行机制353

8.1.3MVC架构的设计和实现步骤356

8.1.4MVC的更进一步发展357

8.1.5对MVC模式的评价359

8.2基于MVC的Struts应用框架360

8.2.1整合进Struts的相关技术361

8.2.2两种Struts架构模型363

8.2.3Struts的构成与MVC角色364

8.3搭建一个简单的Struts应用程序366

8.3.1准备Struts架构开发环境366

8.3.2最简单的登录系统的功能需求369

8.3.3搭建一个基于Struts的登录系统369

8.3.4登录系统Struts架构的执行过程376

8.3.5实现MVC模式的Struts架构内部机制分析376

8.4SSH架构技术的特点与集成383

8.4.1Spring框架技术与特点384

8.4.2Hibernate框架技术与特点387

8.4.3SSH框架的集成396

8.4.4搭建基于MyEclipse的SSH框架398

8.5开发一个基于SSH架构的登录系统404

8.5.1SSH架构的各层模块及其任务404

8.5.2Hibernate层的实现404

8.5.3Spring层的实现407

8.5.4Struts层的实现409

8.5.5运行SSHLogin系统411

8.5.6SSHLogin系统各层的实现与分析412

8.5.7SSHLogin系统逻辑架构的总结416

8.6医药管理系统分析与SSH架构二次开发419

8.6.1医药管理系统的业务背景与需求419

8.6.2医药管理系统的架构分析423

8.6.3二次开发的需求与分析431

8.6.4二次开发的逻辑架构设计432

8.6.5二次开发的实现435

8.6.6医药管理系统二次开发的总结441

8.7实践与思考446

8.7.1实践题446

8.7.2思考题446

第9章基于关键需求的架构设计、验证与评审447

9.1理解架构设计中的关键需求448

9.1.1质量属性需求的一般概念448

9.1.2几个常见的质量属性需求454

9.1.3质量属性需求的场景描述456

9.2基于关键需求的架构设计对策458

9.2.1应对关键需求的对策思路458

9.2.2可用性战术459

9.2.3可修改性战术462

9.2.4性能战术463

9.2.5易用性战术464

9.3基于关键需求的架构设计465

9.3.1关键需求产生的背景和理由465

9.3.2与架构设计有关的约束与限制469

9.3.3影响架构设计的关键机制471

9.3.4基于关键属性驱动的架构设计472

9.4架构设计的验证473

9.4.1架构设计验证的基本概念473

9.4.2软件架构验证的实践475

9.4.3使用VS 2010进行层验证476

9.4.4验证MyPlyer程序的架构483

9.5架构的集成测试484

9.5.1集成测试的概念484

9.5.2模拟集成测试体验486

9.5.3测试StockBroker系统组件之间的操作490

9.6架构设计与评审493

9.6.1针对关键质量属性需求的架构设计评审493

9.6.2针对5个基本架构的架构评审494

9.6.3对一个架构评审案例的点评495

9.7电梯控制系统的架构设计实现与评审503

9.7.1理解学生项目的架构设计评审要求504

9.7.2原有电梯控制系统的架构分析505

9.7.3基于“并发性”的关键需求与效果预期505

9.7.4针对“并发性”需求的架构设计与实现506

9.7.5电梯控制系统架构设计的评审意见508

9.8实践与思考510

9.8.1实践题510

9.8.2思考题510

参考文献511

第1部分C#语言基础

第1章绪论31.1.NET Framework简介3

1.1.1公共语言运行库4

1.1.2.NET Framework 类库5

1.2Visual Studio 2008简介5

1.2.1主窗口6

1.2.2菜单栏和工具栏6

1.2.3编辑器和Windows窗体设计器窗口7

1.2.4工具箱窗口7

1.2.5解决方案资源管理器窗口9

1.2.6属性窗口9

1.2.7生成和调试工具9

1.3第一个C#程序10

1.3.1创建第一个控制台应用程序10

1.3.2创建第一个WinForm应用程序13

1.3.3创建第一个Web应用程序15

1.4MSDN Library的使用18

1.5.NET应用开发过程19

习题20

第2章C#语言基础22

2.1C#简介22

2.2变量23\.NET\架\构\与\应\用\开\发\实\践\/目录/ 2.2.1简单数据类型23

2.2.2变量和常量25

2.2.3变量类型27

2.2.4变量类型之间的转换28

2.2.5装箱和拆箱28

2.2.6变量作用域30

2.3数组31

2.3.1一维数组31

2.3.2多维数组32

2.4集合33

2.4.1集合的选择33

2.4.2常见集合的应用34

2.5字符串37

2.5.1初始化字符串37

2.5.2使用字符串37

2.6语句、运算符和表达式40

2.6.1选择语句 40

2.6.2循环语句 41

2.6.3跳转语句 43

2.6.4运算符和表达式43

习题46

第3章C#面向对象编程基础49

3.1类49

3.1.1声明类50

3.1.2对象的声明50

3.1.3继承51

3.1.4构造函数53

3.1.5析构函数57

3.2方法57

3.2.1方法声明57

3.2.2方法的修饰符58

3.2.3方法的参数和方法的调用58

3.2.4方法重载59

3.3命名空间60

3.3.1声明命名空间60

3.3.2访问命名空间61

3.3.3别名61

3.4结构63

3.5枚举65

3.6接口66

习题69

第4章进程、线程与同步71

4.1基本概念71

4.2多线程实例72

4.3进程管理73

4.3.1获取进程信息73

4.3.2进程操作75

4.4线程管理77

4.4.1前台线程与后台线程77

4.4.2线程基本操作78

4.4.3Volatile关键字79

4.4.4线程外控件访问79

4.4.5线程池82

4.5线程同步84

4.5.1线程优先级84

4.5.2线程同步84

4.5.3Lock语句85

4.5.4BackgroundWorker控件86

4.6小结89

习题89

第5章异常处理91

5.1异常实例91

5.2C#异常处理过程93

5.2.1checked与unchecked语句94

5.2.2异常处理语句95

5.2.3throw语句96

5.3通用异常类97

5.4自定义异常类97

5.5小结99

习题99

第2部分WinForm应用程序开发

第6章Windows用户界面和常用控件1036.1Windows窗体和控件简介103

6.1.1控件简介103

6.1.2理解Windows窗体104

6.1.3开发简单的Windows窗体项目 107

6.1.4使用窗体属性影响窗体形态 107

6.1.5窗体常用的事件108

6.2常见窗体控件 109

6.2.1Button控件 109

6.2.2TextBox控件 110

6.2.3Label控件 110

6.2.4LinkLabel控件 111

6.2.5CheckBox控件 111

6.2.6RadioButton控件111

6.2.7ListBox控件 111

6.2.8ComboBox控件 112

6.2.9PictureBox控件112

6.2.10作为容器的控件113

6.2.11使用主菜单114

6.2.12用状态栏提供反馈114

6.3多文档窗体 115

习题120

第7章文件流和数据流操作122

7.1文件简介122

7.2Directory 类和DirectoryInfo类123

7.3File类和FileInfo类124

7.4文件流FileStream126

7.5StreamReader类和StreamWriter类131

7.5.1StreamReader类131

7.5.2StreamWriter类131

7.6BinaryReader类与BinaryWriter类135

7.7MemoryStream流138

习题140

第8章TCP网络编程142

8.1TCP网络编程概念142

8.1.1网络的分层概念142

8.1.2TCP/IP的工作机制144

8.2常见网络类145

8.2.1IPAddress类145

8.2.2IPEndPoint类146

8.2.3IPHostEntry类146

8.2.4Dns类146

8.2.5Socket类148

8.2.6TcpListener类与TcpClient类150

8.3NetworkStream 类152

8.4同步TCP编程154

8.4.1服务器端程序154

8.4.2客户端程序162

8.5异步TCP编程168

8.5.1基于事件的异步方式168

8.5.2使用IAsyncResult设计模式的异步操作169

8.5.3异步TCP网络编程170

习题171

第9章即时聊天工具综合开发实训173

9.1综合项目陈述173

9.1.1系统总体目标173

9.1.2系统总体模块设计173

9.1.3数据库设计174

9.1.4关键技术174

9.2服务端设计177

9.2.1服务端窗体设计177

9.2.2获取好友等信息列表的BuildXml类180

9.2.3检查好友信息CheckTalk类182

9.2.4消息处理HandleMsg类184

9.2.5配置IP和端口信息IpandPort类 185

9.2.6用户管理ManageUser类185

9.2.7数据库基本操作Mydao类190

9.2.8用户信息MyUser类191

9.2.9用户登录UserLogin类193

9.2.10用户权限UserPower类193

9.2.11用户注册类UserRegister类194

9.3客户端设计开发195

9.3.1客户端登录模块设计 195

9.3.2客户端注册模块设计198

9.3.3客户端个人信息修改模块设计201

9.3.4客户端发送信息模块设计203

9.3.5客户端“查找/添加好友”模块设计211

9.3.6客户端MyQQ主窗体模块设计213

9.3.7客户端类简要介绍214

习题218

第3部分Web应用程序开发

第10章Web站点构建技术22110.1个人网站的创建与发布221

10.1.1创建网站221

10.1.2发布网站223

10.1.3复制网站227

10.2页面定位与布局方法229

10.3母版页230

10.3.1母版页基本概念230

10.3.2母版页的使用231

10.4CSS样式使用234

10.5JavaScript使用236

10.5.1JavaScript脚本位置237

10.5.2DOM结构238

10.6小结239

习题239

第11章ASP.NET数据库应用开发241

11.1ASP.NET服务器控件241

11.1.1HTML服务器控件和ASP.NET服务器控件241

11.1.2验证控件242

11.1.3数据库控件243

11.2Web常用对象及Global.asax文件246

11.2.1实例: 在线人数统计246

11.2.2Request对象和Response对象247

11.2.3Application对象和Session对象249

11.2.4Global.asax介绍251

11.3Web Form中的Page252

11.3.1页面代码模型252

11.3.2页面事件分析253

11.4网页的切换与数据传递254

11.4.1网页切换254

11.4.2数据传递254

11.5ASP.NET数据库应用关键技术255

11.5.1保存连接255

11.5.2验证与授权256

11.5.3ASP.NET缓存258

11.5.4典型代码段260

11.6实例: 在线论坛261

11.6.1首页——登录和注册262

11.6.2信息浏览266

11.6.3文章搜索267

11.6.4话题发表及回复268

10.6.5修改发表内容272

习题278

第12章网上花店系统综合开发实训280

12.1项目介绍280

12.1.1系统功能280

12.1.2系统总体模块设计281

12.1.3数据库设计281

12.1.4关键技术284

12.2网站前台设计287

12.2.1网上花店主页287

12.2.2鲜花艺术287

12.2.3鲜花详情289

12.2.4购物车292

12.2.5填写订单294

12.3网站后台设计297

12.3.1订单管理模块设计297

12.3.2鲜花管理模块设计299

12.3.3“我的账户”模块设计301

习题302

参考文献303