《软件工程专业导论》王安生编著ISBN:-7---3北京邮电大学出版社
教材简介
软件产业已经成为国家之间竞争力的体现。美国对中国软件产品和技术的封锁,更需要我们用工程化和产业化的思维模式,培养具有国际化的、复合型的软件专业型人才。这也是国家大力发展(示范性)软件学院的初衷。
《软件工程专业导论》是软件专业大学新生的必修课,是对大学四年的学习引导。该课程的目的是让新生了解我国软件产业与发达国家的差距,激发他们投身于“软件驱动各行业”发展的热情,内容主要是引导学生理解计算机的原理和基本组成、编程语言、软件项目开发过程,引领学生理解数字通信与网络、数据与信息处理、音视频和计算机图形学、机器与人工智能等知识。让学生从古代的手工计算穿越到当今的可编程计算和智能计算,理解一切都是“计算思维”,理解软件是人类知识以计算机程序的固化展示,即“软件化思维”,进一步引导学生用“工程化和产业化思维”致力于发展我国软件产业,解决软件产业的危机。
北京邮电大学出版社出版的《软工程专业导论》一书是在北邮国家示范性软件学院多年的培养大纲以及对学生的专业引导课程讲授之上组织编写的。该书内容涵盖了软件专业的培养大纲,贯穿了软件专业大学四年的主要知识点,为优秀学生超前的主动学习指明了方向,为后续课程的讲授者提供了引导。附录中对软件专业的历史责任、多个大学的培养方案、SWEBOK、以及北京邮电大学(国家示范性软件学院)软件专业培养方案等进行了论述,可为相关高校的培养方案修订提供参考。
作者简介
作者王安生,北京邮电大学教授,年3月生,毕业于北京理工大学自动控制系,具有20年的软件研发和管理以及近20年的教学经验。作者长期从事国防和航天领域的软件开发与管理工作,曾担任解放军某研究所软件工程研究室主任,成为国家军用软件标准GJBA等系列标准的起草人,曾协助何新贵为组长的中国载人航天工程软件工程化专家组完成了载人航天软件工程的前期方案编制和人才培养等工作,曾担任过中外合资软件企业领导,对国际软件知识产权、产品销售与服务模式有深入理解,出版了《过程改进与实践案例》《软件工程化》等书。年被推举为北邮软件学院教授委员会主席,提出的“三六一一”实践教学体系得到了业界的认可,领导的软件学院实验中心被评为“北京市实验教学示范中心”。年,作者学生冯文渊捐款万元,在北京邮电大学基金会设立了“王安生软件工程化教育基金”。
出版社编辑出版及样书联系:姚顺-yaoshun
bupt.edu.cn目录
第1章从手工计算到自动计算
1.1数的表达
1.1.1十进制数
1.1.2二八十六进制数
1.2手写计算
1.3手工计算工具
1.4巴贝奇机械自动计算机器
1.5减法与补码
1.5.1用减数的补码做运算
1.5.2用被减数的补码做运算
1.6逻辑计算
1.6.1逻辑计算
1.6.2用电路构造逻辑运算单元
1.6.3逻辑向量计算
1.7二进制加减法计算机器
1.7.1用逻辑电路实现二进制的加法器
1.7.2二进制的反码与补码器
1.7.3二进制加法器/减法器
1.7.4二进制数正负数范围
1.8思考题
第2章从自动计算到可编程计算机器
2.1可编程的计算机器
2.1.1用巴贝奇机器做更复杂的计算
2.1.2图灵计算机器
2.1.3图灵机的形式化
2.2冯·诺依曼的计算机器
2.2.1冯·诺依曼机的结构
2.2.2指令格式和执行流程
2.2.3指令集
2.2.4数据格式与存储器编址
2.3集成电路与计算产业化
2.3.1半导体的集成电路
2.3.2集成电路产业与摩尔定律
2.3.3摩尔定律的终结
2.3.4新材料
2.4量子计算机
2.4.1量子运动原理
2.4.2量子用于计算的原理
2.4.3量子计算机产业动态
2.5系统软件
2.5.1操作系统
2.5.2系统软件与应用软件
2.5.3软件商业竞争方式的创新
2.6思考题
第3章编程语言与数据表达
3.1汇编语言
3.1.1用机器指令编程的困扰
3.1.2汇编语言和编程
3.2高级语言
3.2.1高级编程语言简史
3.2.2高级语言的执行
3.2.3高级语言分类
3.3高级语言的特征
3.3.1词法和语法
3.3.2语法和语义
3.3.3语句
3.4基本数据类型与变量运算
3.4.1数值型
3.4.2逻辑型
3.4.3枚举型
3.4.4字符与字符串
3.4.5指针运算
3.4.6不同类型变量之间的运算
3.5浮点数
3.5.1浮点数的表达理论
3.5.2运算中出现的问题
3.5.3IEEE浮点数的范围
3.6扩展的数据类型与结构
3.6.1数组
3.6.2结构体
3.6.3链表
3.6.4栈与队列
3.6.5树
3.6.6图
3.6.7对象与OO语言
3.7编程语言的可靠与安全
3.7.1语言缺陷的例子
3.7.2弱类型与强类型语言
3.7.3创立和设计更可靠安全的语言
3.8思考题
第4章软件开发环境与过程
4.1集成开发环境
4.1.1代码编辑器
4.1.2编译器
4.1.3链接器
4.1.4程序加载
4.1.5代码调试和安全问题
4.2操作系统与运行环境
4.2.1调用操作系统的功能
4.2.2库
4.2.3远程调用
4.3嵌入式与移动终端软件的开发
4.3.1嵌入式计算机
4.3.2移动终端设备
4.3.3交叉开发环境
4.4个体程序员能力
4.4.1程序员个体能力差异
4.4.2提高个体能力
4.5项目小组的组织
4.5.1小组的组织协调问题
4.5.2首席程序员的组织方式
4.5.3矩阵式的组织方式
4.5.4结对编程
4.6大项目的开发过程
4.6.1从程序开发到软件开发
4.6.2瀑布式开发模型
4.6.3中间产品(文档)的价值
4.6.4文档与图示化表达
4.7迭代与敏捷
4.7.1增量式迭代开发
4.7.2渐进式迭代开发
4.7.3敏捷方法
4.8思考题
第5章数据通信与网络
5.1数字化通信与编码
5.1.1电报、电传与ASCII码
5.1.2汉字编码与Unicode
5.2通信交换网络
5.2.1邮政业务网络
5.2.2电话交换网络
5.3数据包交换网络
5.3.1基于数据包的网络原理
5.3.2数据包的设计
5.3.3数据分片与重新组装
5.3.4路由选择
5.4互联网设计
5.4.1网络互联的需求
5.4.2网络互联的设计模型
5.4.3DoD网络互联协议族设计
5.5互联网发展与应用
5.5.1美国互联网的全面发展
5.5.2中国发展互联网的历程
5.5.3IETF(互联网工程任务组)
5.5.4互联网的管理
5.6软件定义的网络
5.6.1传统路由器与网络管理问题
5.6.2OpenFlow论坛
5.6.3SDN的提出
5.6.4SDN的产学研究
5.7思考题
第6章从数据管理到Web和信息通信
6.1数据结构化管理
6.1.1数据存储的结构化
6.1.2消除数据冗余
6.1.3建立实体关联
6.2关系代数
6.2.1关系代数定义
6.2.2“选择”运算
6.2.3“投影”运算
6.2.4两个表的“笛卡儿积”运算
6.2.5“并”运算
6.2.6“差”运算
6.2.7“交”运算
6.2.8两个表的“连接”运算
6.3关系数据库
6.3.1关系数据库管理系统
6.3.2SQL:结构化查询语言
6.4万维网
6.4.1WWW的初衷
6.4.2Web基本原理
6.4.3WWW函数库
6.4.4早期美国网站的迅速发展
6.4.5Web服务器产品
6.4.6Web浏览器产品
6.4.7早期中国WWW的发展
6.5Web搜索
6.5.1爬虫
6.5.2内容整理
6.5.3搜索策略
6.6Web变迁与NoSQL数据库
6.6.1Web应用方式的变迁
6.6.2Web对信息管理系统的改变
6.6.3NoSQL对数据处理系统的影响
6.6.4大数据时代
6.7信息量
6.7.1单变量的熵定义
6.7.2关联信息的熵定义
6.7.3数据、信息与知识时代
6.8思考题
第7章数字音视频与图形学
7.1数字音频
7.1.1机械式留声机
7.1.2磁带录音机
7.1.3数字音频系统
7.2数字图像
7.2.1图像传感
7.2.2图像位图表示
7.2.3图像压缩
7.2.4数字图像的应用
7.3数字视频
7.3.1视频数据与压缩
7.3.2数字电视广播系统
7.3.3视频识别的应用
7.3.4立体电影与电视
7.4计算机图形学
7.4.1图像的矢量表示
7.4.2图形的运算
7.4.3二维图形
7.4.4三维图形
7.4.5图形学的应用
7.4.6虚拟现实技术
7.5专用处理器
7.5.1GPU
7.5.2TPU
7.6图形与符号编码
7.6.1一维码
7.6.2