图书目录

目  录

第1章 软件工程的主要内容1

1.1 概述1

1.2 软件需求分析3

1.2.1 结构化分析方法4

1.2.2 动态分析技术4

1.2.3 支持需求分析的原型化方法 5

1.3 软件设计5

1.3.1 软件设计的原则6

1.3.2 软件体系结构设计6

1.3.3 模块独立性6

1.3.4 结构化设计方法6

1.3.5 Jackson系统开发方法8

1.3.6 数据及文件设计9

1.3.7 软件详细设计9

1.3.8 软件设计的复审9

1.4 软件编码10

1.4.1 程序设计语言的分类10

1.4.2 编码风格10

1.4.3 面向对象的编程语言12

1.4.4 程序复杂性度量12

1.5 软件测试13

1.5.1 软件测试基础13

1.5.2 测试步骤和策略14

1.5.3 测试用例设计18

1.5.4 软件可靠性19

1.5.5 面向对象的测试21

1.6 软件复用25

1.6.1 软件复用的概念25

1.6.2 领域工程26

1.6.3 可复用构件的建造及复用28

1.6.4 面向对象的软件复用技术31

1.7 面向对象的软件工程33

1.7.1 基本概念33

1.7.2 面向对象软件的开发过程35

1.7.3 面向对象分析36

1.7.4 面向对象设计37

1.7.5 Coad与Yourdon方法38

1.7.6 Booch方法38

1.7.7 对象模型化技术39

1.7.8 统一建模语言UML39

1.8 软件维护50

1.8.1 软件维护的概念50

1.8.2 软件的可维护性52

1.8.3 提高可维护性的方法 53

1.8.4 软件再工程55

1.9 软件管理58

1.9.1 软件过程、过程模型及其建造技术58

1.9.2 软件项目计划59

1.9.3 软件开发成本估算59

1.9.4 成本-效益分析60

1.9.5 软件进度安排60

1.9.6 软件配置管理61

1.9.7 CMM模型与软件过程的改进61

1.10 应用Web工程63

1.10.1 Web工程64

1.10.2 WebApp项目计划66

1.10.3 WebApp分析68

1.10.4 WebApp设计69

1.10.5 WebApp测试71

1.11 软件工程标准和软件文档74第2章 实践内容及考核方式77

2.1 实践内容77

2.2 考核要求97第3章 交付文档要求及格式100

3.1 可行性研究报告100

3.2 软件计划100

3.3 风险缓解、监测和管理计划101

3.4 软件需求规格说明书(SRS)102

3.5 软件设计说明书102

3.6 软件测试计划103

3.7 测试分析报告104

3.8 开发进度月报104

3.9 用户手册105

3.10 操作手册105

3.11 项目开发总结报告106附录107

附录A 软件工程课程设计任务书107

附录B 软件工程课程设计文档评分表108参考文献109

第1章 绪论1

1.1 网络编程基础1

1.1.1 网络应用程序所处的地位1

1.1.2 网间进程通信面临的问题1

1.1.3 网间进程的标识2

1.2 基本网络协议4

1.2.1 一般特点4

1.2.2 用户数据报协议5

1.2.3 传输控制协议5

1.3 客户机/服务器模型6

1.3.1 模型的重要性6

1.3.2 容易混淆的术语7

1.3.3 模型工作过程与特点7

1.3.4 C/S交互方式9

1.4 网络编程分类10

1.4.1 基于TCP/IP协议栈的网络编程10

1.4.2 基于Web应用的网络编程10

1.4.3 基于.NET的Web Services网络编程10

1.4.4 .NET Remoting技术12

1.4.5 电话应用编程接口(TAPI)13

1.4.6 信报应用编程接口(MAPI)14

1.4.7 Internet服务器应用编程接口14

1.5 本章小结15

1.6 习题15第2章 Windows套接字17

2.1 Socket及其来源17

2.2 套接字的类型17

2.2.1 流式套接字18

2.2.2 数据报套接字18

2.2.3 原始套接字18

2.3 套接字规范18

2.3.1 Berkeley套接字规范18

2.3.2 Windows套接字规范18

2.3.3 Windows套接字和Berkeley套接字的比较19

2.4 几种典型的Windows套接字规范22

2.4.1 Winsock 1.022

2.4.2 Winsock 1.122

2.4.3 Winsock 2.023

2.5 Winsock编程的一般模式23

2.5.1 面向连接的编程模型23

2.5.2 无连接编程模型24

2.5.3 几个基本概念24

2.6 基本操作函数26

2.6.1 Winsock的启动和终止26

2.6.2 Winsock的创建、绑定与关闭28

2.6.3 通信连接的建立34

2.6.4 数据的传输37

2.6.5 Winsock的错误处理函数44

2.6.6 Winsock的辅助函数46

2.6.7 Winsock的信息查询函数53

2.7 Winsock 2的新特性59

2.7.1 对多协议的支持59

2.7.2 对I/O与事件对象的重叠支持59

2.7.3 套接口组60

2.7.4 服务质量61

2.8 Winsock 2新增函数一览62

2.9 网络应用程序的运行环境63

2.10 本章小结64

2.11 习题65第3章 MFC Winsock类编程66

3.1 MFC简介66

3.1.1 MFC编程框架66

3.1.2 MFC对象和Windows对象的关系67

3.1.3 消息映射的实现68

3.1.4 MFC应用程序的执行过程71

3.2 CAsyncSocket类72

3.2.1 基本编程模型72

3.2.2 创建CAsyncSocket类对象74

3.2.3 CAsyncSocket类可以接收并处理的消息事件75

3.2.4 连接的请求与接受76

3.2.5 数据的发送与接收79

3.2.6 关闭套接字80

3.2.7 其他成员函数81

3.3 基于CAsyncSocket类的单点聊天程序82

3.3.1 实现目标82

3.3.2 创建客户机程序82

3.3.3 客户机程序的类与消息驱动90

3.3.4 客户机程序主要功能的代码和分析91

3.3.5 创建服务器程序99

3.3.6 服务器程序的流程和消息驱动101

3.3.7 点对点聊天的服务器程序主要功能的代码和分析101

3.4 CSocket类109

3.4.1 基本编程模型110

3.4.2 创建CSocket类对象111

3.4.3 连接的建立112

3.4.4 数据的收发112

3.4.5 关闭套接字和清除相关对象112

3.5 基于CSocket类的多点聊天程序112

3.5.1 聊天室程序的功能112

3.5.2 创建聊天室的服务器程序113

3.5.3 聊天室服务器程序的主要实现代码和分析116

3.5.4 创建聊天室的客户机程序127

3.5.5 聊天室客户机程序的主要实现代码和分析129

3.6 本章小结139

3.7 习题139第4章 WinInet编程141

4.1 WinInet API的一般化问题141

4.1.1 HINTERNET句柄141

4.1.2 WinInet中错误的处理142

4.1.3 WinInet函数中的缓冲区参数142

4.1.4 WinInet函数的异步操作模式142

4.2 基本WinInet函数143

4.2.1 打开一个WinInet会话143

4.2.2 与服务器建立连接144

4.2.3 回调函数145

4.2.4 通用文件操作147

4.2.5 从Internet文件读数据149

4.2.6 向Internet文件写数据150

4.2.7 移动Internet文件指针150

4.2.8 数据可用性查询151

4.2.9 其他基本函数151

4.3 FTP客户机WinInet函数152

4.3.1 一般步骤152

4.3.2 查询FTP服务器上的文件和目录152

4.3.3 查询或改变FTP服务器的当前目录155

4.3.4 在FTP服务器上创建目录157

4.3.5 在FTP服务器上删除目录158

4.3.6 从FTP服务器中下载文件159

4.3.7 向FTP服务器中上传文件162

4.3.8 从FTP服务器中删除文件163

4.3.9 重命名FTP服务器上的文件或目录164

4.4 MFC WinInet类165

4.4.1 概述165

4.4.2 MFC WinInet所包含的类166

4.4.3 基本编程模型167

4.4.4 WinInet类简介170

4.5 基于WinInet类的FTP客户机编程实例179

4.5.1 程序要实现的功能180

4.5.2 创建应用程序的过程181

4.6 本章小结192

4.7 习题192第5章 不同I/O模式下的处理方法193

5.1 阻塞模式与非阻塞模式193

5.1.1 阻塞模式及其优缺点193

5.1.2 非阻塞模式及其优缺点193

5.2 多进程与多线程194

5.2.1 什么是多进程194

5.2.2 什么是多线程195

5.2.3 多进程和多线程的关系195

5.2.4 网络编程采用多线程机制的重要性196

5.3 I/O阻塞模式的多线程网络编程方法197

5.3.1 MFC支持的两种线程197

5.3.2 创建MFC的工作线程198

5.3.3 创建并启动用户界面线程201

5.3.4 终止线程204

5.3.5 FTP客户机多线程编程实例206

5.4 I/O非阻塞模式的异步处理模型215

5.4.1 select模型215

5.4.2 WSAAsyncSelect异步I/O模型218

5.4.3 WSAEventSelect事件选择模型222

5.4.4 其他模型227

5.5 本章小结228

5.6 习题228第6章 HTTP高级编程230

6.1 HTTP230

6.1.1 HTTP的基本概念230

6.1.2 HTTP的应用231

6.2 CHtmlView类基本知识232

6.2.1 CHtmlView类与WebBrowser控件232

6.2.2 CHtmlView类的成员函数233

6.3 网络浏览器实例239

6.3.1 程序实现的基本功能239

6.3.2 程序实现的一般步骤240

6.4 本章小结245

6.5 习题246第7章 Winsock控件编程247

7.1 Winsock控件的基本操作247

7.1.1 Winsock控件的数据传输247

7.1.2 Winsock控件的基本属性247

7.1.3 Winsock控件的基本方法248

7.1.4 Winsock控件的基本事件248

7.2 电子邮件系统基本原理249

7.2.1 邮件传输原理250

7.2.2 电子邮件的地址250

7.2.3 常用的几种电子邮件协议250

7.3 简单电子邮件系统的实现过程251

7.3.1 邮件服务器的实现251

7.3.2 邮件客户端的实现258

7.4 本章小结265

7.5 习题266第8章 ASP.NET基础知识267

8.1 ASP.NET简介267

8.1.1 早期的Web开发267

8.1.2 传统的ASP269

8.1.3 ASP.NET269

8.2 ASP.NET应用程序结构270

8.2.1 ASP.NET应用程序元素270

8.2.2 ASP.NET应用程序目录结构271

8.2.3 ASP.NET的文件类型271

8.3 Visual Studio273

8.3.1 Visual Studio集成开发环境273

8.3.2 网站和Web项目276

8.3.3 创建无项目文件的网站276

8.3.4 设计网页277

8.3.5 编码模型278

8.3.6 Web项目281

8.4 本章小结283

8.5 习题283第9章 ASP.NET常用控件与Page类284

9.1 Web窗体284

9.1.1 HTML标记285

9.1.2 HTML控件287

9.1.3 服务器控件标记288

9.2 ASP.NET常用服务器控件288

9.2.1 服务器控件的类型288

9.2.2 所有控件的共同属性289

9.2.3 标准服务器端控件290

9.2.4 输入验证控件296

9.2.5 用户控件301

9.3 ASP.NET Page类305

9.3.1 Page对象305

9.3.2 Response对象和Request对象309

9.3.3 Server对象313

9.3.4 Session对象315

9.3.5 Application对象317

9.3.6 Cookie对象319

9.4 本章小结320

9.5 习题321第10章 数据访问323

10.1 ADO.NET基础325

10.2 基本ADO.NET类与存储过程326

10.2.1 Connection类326

10.2.2 Command类和DataReader类328

10.2.3 DataSet类331

10.2.4 DataAdapter类333

10.2.5 存储过程337

10.3 数据绑定341

10.3.1 单值绑定341

10.3.2 重复值绑定343

10.3.3 数据源控件345

10.3.4 联合使用数据源和数据绑定控件346

10.4 本章小结351

10.5 习题352第11章 案例--网络购物商城353

11.1 需求分析353

11.1.1 项目背景353

11.1.2 需求定义353

11.1.3 开发环境354

11.2 软件设计354

11.2.1 架构设计355

11.2.2 数据库设计355

11.2.3 界面设计358

11.3 功能实现360

11.3.1 MasterPages母版页实现360

11.3.2 主页面实现363

11.3.3 购物车的实现367

11.3.4 详细信息实现368

11.3.5 结算中心的实现372

11.4 本章小结374参考文献375第一部分 EDA技术理论基础

第1章 EDA技术概述3

1.1 EDA 技术的含义3

1.2 EDA 技术的发展4

1.2.1 计算机辅助设计阶段4

1.2.2 计算机辅助工程阶段4

1.2.3 电子系统设计自动化阶段4

1.3 常用的EDA技术开发工具4

1.3.1 Altera公司集成EDA集成开发工具5

1.3.2 Xilinx公司的EDA集成开发工具5

1.3.3 Lattice公司的EDA集成开发工具8

1.4 EDA技术的软件开发9

1.4.1 原理图设计简介9

1.4.2 硬件描述语言设计简介10

1.4.3 VHDL语言概述12

1.5 EDA技术的硬件概述14

1.5.1 可编程逻辑器件简介14

1.5.2 CPLD/FPGA基础15

1.6 EDA 技术的设计流程15

1.6.1 设计输入16

1.6.2 设计综合与适配17

1.6.3 仿真17

1.6.4 编程、配置18

1.6.5 硬件验证18

1.7 传统设计方法和 EDA设计方法的比较18

1.7.1 传统设计方法18

1.7.2 EDA设计方法19

1.8 EDA技术的发展趋势19

思考题与习题21第2章 原理图输入设计22

2.1 Quartus II软件介绍22

2.1.1 Quartus II软件开发流程22

2.1.2 Quartus II软件的特点23

2.1.3 Quartus II软件的图形用户界面24

2.2 用原理图编辑方法设计2-4译码器25

2.2.1 2-4译码器电路输入与编辑25

2.2.2 2-4译码器的综合31

2.2.3 2-4译码器的仿真31

2.2.4 2-4译码器的编程下载 37

2.3 较复杂的原理图设计38

2.3.1 30秒倒计时电路设计39

2.3.2 电子钟计数电路设计40

思考题与习题46第3章 VHDL快速入门47

3.1 VHDL体系结构47

3.1.1 VHDL体系结构 47

3.1.2 库、程序包49

3.1.3 实体部分49

3.1.4 结构体部分51

3.1.5 配置部分52

3.2 数据选择器的VHDL描述52

3.2.1 2选1数据选择器的VHDL描述52

3.2.2 2选1数据选择器的VHDL相关语法分析53

3.3 触发器的VHDL描述56

3.3.1 D触发器的VHDL描述56

3.3.2 D触发器的VHDL相关语法分析60

思考题与习题64第4章 VHDL基本语句与要素65

4.1 VHDL的顺序语句65

4.1.1 赋值语句65

4.1.2 IF语句67

4.1.3 CASE语句70

4.1.4 LOOP语句72

4.1.5 NEXT语句74

4.1.6 EXIT语句74

4.1.7 WAIT语句75

4.1.8 ASSERT语句77

4.1.9 REPORT语句79

4.1.10 子程序调用语句80

4.1.11 RETURN语句和NULL语句82

4.2 VHDL的并行语句83

4.2.1 进程语句83

4.2.2 并行信号赋值语句85

4.2.3 并行过程调用语句87

4.2.4 元件例化语句88

4.2.5 块语句89

4.2.6 生成语句91

4.3 VHDL语言要素94

4.3.1 VHDL文字规则94

4.3.2 数据对象97

4.3.3 VHDL数据类型99

4.3.4 VHDL操作符104

4.4 VHDL子程序107

4.4.1 函数107

4.4.2 过程112

4.5 VHDL库114

4.5.1 VHDL库的种类115

4.5.2 VHDL库的用法115

思考题与习题116第5章 基本逻辑电路的VHDL设计117

5.1 组合逻辑电路设计117

5.1.1 基本门电路设计117

5.1.2 编码器设计120

5.1.3 译码器设计122

5.1.4 加法器设计125

5.1.5 三态门与双向缓冲电路设计126

5.2 时序逻辑电路设计129

5.2.1 触发器设计129

5.2.2 移位寄存器设计131

5.2.3 计数器设计133

5.3 状态机的设计  137

5.3.1 状态机概述137

5.3.2 一般有限状态机的VHDL设计139

5.3.3 摩尔型状态机设计141

5.3.4 米勒型状态机设计143

5.3.5 状态机的编码145

思考题与习题148第6章 VHDL与原理图层次型混合设计149

6.1 自底向上混合设计149

6.1.1 自底向上混合设计流程149

6.1.2 1位二进制全加器设计150

6.1.3 简易时钟计数电路设计155

6.2 自顶向下混合设计158

6.2.1 自顶向下设计流程158

6.2.2 十六进制计数译码显示电路设计159

思考题与习题166第7章 宏功能模块的应用168

7.1 宏功能模块概述168

7.2 存储器设计169

7.2.1 ROM设计169

7.2.2 RAM设计176

7.2.3 FIFO设计177

7.3 乘法器设计179

7.4 锁相环设计181

7.5 正弦波信号发生器185

7.6 IP核简介186

思考题与习题187第8章 可编程逻辑器件基础及应用188

8.1 可编程逻辑器件概述188

8.1.1 逻辑电路符号的表示188

8.1.2 可编程逻辑器件的分类189

8.1.3 简单的PLD原理190

8.2 CPLD的结构与原理193

8.2.1 CPLD的结构193

8.2.2 CPLD的原理194

8.3 FPGA结构与原理196

8.3.1 FPGA的结构196

8.3.2 FPGA的原理198

8.4 CPLD与 FPGA的比较201

8.4.1 CPLD与 FPGA的区别201

8.4.2 器件应用选择 202

8.5 CPLD与FPGA的编程与配置技术204

8.5.1 Altera公司的下载电缆204

8.5.2 Altera器件的编程/配置模式208

8.5.3 Altera的配置器件 208

8.5.4 Altera器件的编程/配置过程215

8.6 FPGA的电源219

8.6.1 FPGA的供电要求 219

8.6.2 FPGA的电源设计 219

8.7 Altera公司主流新器件简介221

8.7.1 低成本低功耗CPLD   221

8.7.2 低成本FPGA--Cyclone II222

8.7.3 高性能FPGA--Stratix II223

思考题与习题226第9章 设计技巧与优化227

9.1 组合逻辑电路设计技巧227

9.1.1 组合逻辑电路的分析227

9.1.2 组合逻辑电路的设计228

9.2 同步时序逻辑电路设计技巧230

9.2.1 同步时序逻辑电路特点及设计中的常见问题230

9.2.2 同步逻辑电路设计基本原则233

9.3 VHDL的编码风格233

9.3.1 VHDL的编码风格233

9.3.2 VHDL编码中常用的基本规则237

9.4 提高速度的方法243

9.4.1 设置速度的约束243

9.4.2 使用专用资源244

9.4.3 关键路径分配244

9.4.4 减少逻辑级数245

9.4.5 分割组合逻辑246

9.4.6 转移组合逻辑246

9.5 资源优化设计247

9.5.1 资源共享设计247

9.5.2 逻辑优化设计249

9.6 QuartusII中的优化设置250

 9.6.1 Analysis& Synthesis 的优化设置250

9.6.2 Fitter优化设置251

9.6.3 检查设计可靠性251

思考题与习题252第10章 数字电子系统综合设计实例253

10.1 交通灯设计与实现253

10.1.1 设计要求253

10.1.2 交通灯系统组成254

10.1.3 交通灯模块电路设计与仿真255

10.1.4 交通灯控制器硬件电路262

10.2 多功能信号发生器的设计与实现264

10.2.1 信号产生原理分析264

10.2.2 设计要求264

10.2.3 系统组成264

10.2.4 模块电路设计与仿真265

10.2.5 硬件电路设计与实现272

10.3 4位十进制频率计设计与实现272

10.3.1 设计任务及要求272

10.3.2 频率计设计原理273

10.3.3 频率计系统组成273

10.3.4 频率计模块电路设计274

10.3.5 频率计硬件电路设计与实现281

思考题与习题282

第二部分 实  验

第11章 EDA技术实验286

11.1 验证型实验286

实验1 简单逻辑电路的原理图设计286

实验2 计数器的原理图设计289

实验3 多路选择器与编码器的VHDL设计291

实验4 计数器的VHDL设计293

实验5 寄存器的VHDL设计298

11.2 设计型实验300

实验6 二进制全加器设计300

实验7 十六进制计数器设计301

实验8 计数译码显示电路设计302

实验9 8位数码动态扫描显示电路设计304

实验10 简单状态机设计305

11.3 综合设计型实验306

实验11 4×4键盘扫描电路设计306

实验12 8×8点阵显示电路设计307

实验13 4位十进制频率计设计310

实验14 简易波形信号发生器设计312

实验15 交通灯控制电路设计313附录A 部分实验参考程序315

A.1 实验6参考程序315

A.2 实验7参考程序317

A.3 实验8参考程序319

A.4 实验9参考程序320

A.5 实验10参考程序321

A.6 实验11参考程序323

A.7 实验12参考程序325

A.8 实验13参考程序327

A.9 实验14参考程序329

A.10 实验15参考程序329