《软件工程概论》2010年03月01日机械工业出版社出版的图书,作者是郑人杰、马素霞、殷人昆。
《软件工程概论》既强调和突出基本概念、基本方法,又使内容的组织符合学生的认识规律,在讲解理论的过程中尽量结合实例,并注重软件工程方法、技术和工具的综合应用,避免抽象和枯燥的论述。在兼顾传统的结构化方法的同时,注重当前广为采用的面向对象方法。紧密结合当前技术的新发展,在阐述理论知识的同时侧重实用性。既充分重视技术性内容,便于初学者掌握必要的知识和技能,同时也兼顾软件工程实践中必不可少的基本管理知识。
《软件工程概论》结构合理、内容丰富,讲解由浅入深,既体现知识点的连贯性、完整性,又突出了相关知识在实际中应用。适合作为计算机科学与技术、软件工程等专业工程硕士及相关层次的教材。
软件工程学科具有知识面广、发展迅速、实践性强等特点。《软件工程概论》作者针对软件工程的学科特点,在系统讲解软件工程理论、方法和工具的同时,注重结合实例分析软件工程方法、技术和工具的综合应用;在兼顾传统的结构化方法的同时,注重介绍广为采用的面向对象方法。全书内容组织成四部分:第一部分是软件工程概述,第二部分介绍传统的软件开发方法,第三部分讲述面向对象的软件开发方法,第四部分介绍软件维护与软件管理。
《软件工程概论》结构合理、内容丰富,讲解由浅入深,既体现知识点的连贯性、完整性,又体现知识在实际中的应用,适合作为计算机科学与技术、软件工程等专业工程硕士及相关层次的教材。
目录
- 出版者的话
- 序 言
- 前 言
- 教学建议
- 第1章 引论
- 1.1 程序设计语言的发展
- 1.1.1 程序设计语言
- 1.1.2 翻译程序
- 1.2 为什么需要编译程序
- 1.3 编译程序的工作过程
- 1.3.1 分析部分
- 1.3.2 综合部分
- 1.4 编译程序的结构
- 1.4.1 编译程序的典型结构
- 1.4.2 编译程序的前端和后端
- 1.4.3 编译程序的分遍
- 1.4.4 源程序中的错误及出错处理
- 1.5 编译程序的组织方式
- 1.6 编译程序的其他技术
- 1.6.1 编译程序的自展技术
- 1.6.2 编译程序的移植技术
- 1.6.3 编译程序的自动化技术
- 1.6.4 程序的可再入性
- 1.7 翻译程序的编写系统
- 1.8 并行编译程序
- 1.9 小结
- 习题
- 第2章 形式语言概论
- 2.1 语言成分
- 2.2 文法和语言
- 2.2.1 产生式文法
- 2.2.2 上下文无关文法
- 2.2.3 推导与直接推导
- 2.3 文法的分类
- 2.3.1 文法分类
- 2.3.2 文法分类的意义
- 2.3.3 文法举例
- 2.4 语言和语法
- 2.4.1 句型、句子和语言
- 2.4.2 语法树
- 2.4.3 产生式树和产生式图
- 2.5 文法和语言的一些特性
- 2.5.1 无用非终结符号
- 2.5.2 不可达文法符号
- 2.5.3 可空非终结符
- 2.5.4 最左推导、最右推导和规范推导
- 2.5.5 二义性
- 2.6 分析方法简介
- 2.6.1 自顶向下分析方法
- 2.6.2 确定的自顶向下分析方法
- 2.6.3 自底向上分析方法
- 2.6.4 文法在内存中的表示
- 2.7 小结
- 习题
- 第3章 有穷自动机
- 3.1 概述
- 3.2 有穷自动机的定义
- 3.2.1 状态转换表
- 3.2.2 状态转换图
- 3.2.3 构形和移动
- 3.2.4 自动机的等价性
- 3.2.5 非确定有穷自动机
- 3.3 NDFSA到DFSA的转换
- 3.3.1 空移环路的寻找和消除
- 3.3.2 确定化--子集法
- 3.3.3 确定化--造表法
- 3.3.4 消除不可达状态
- 3.3.5 确定有穷自动机的化简
- 3.3.6 从化简后的DFSA到程序表示
- 3.4 正规文法与有穷自动机
- 3.4.1 从正规文法到FSA
- 3.4.2 从FSA到正规文法
- 3.5 正规表达式与FSA
- 3.5.1 正规表达式的定义
- 3.5.2 正规表达式到NDFSA的转换
- 3.5.3 NDFSA M到正规表达式的转换
- 3.5.4 从正规文法到正规表达式
- 3.6 DFSA在计算机中的表示
- 3.6.1 矩阵表示法
- 3.6.2 表结构表示法
- 3.6.3 程序表示法
- 3.7 小结
- 习题
- 第4章 词法分析
- 4.1 单词符号
- 4.2 词法分析程序的设计
- 4.2.1 预处理
- 4.2.2 状态转换图
- 4.2.3 根据状态转换图设计词法分析程序
- 4.2.4 由正规文法设计词法分析程序
- 4.2.5 由正规表达式设计词法分析程序
- 4.2.6 设计词法分析程序的直接方法
- 4.3 标识符的处理
- 4.3.1 类型的机内表示
- 4.3.2 标识符的语义表示
- 4.3.3 符号表
- 4.3.4 标识符处理的基本思想
- 4.4 词法错误及其处理
- 4.5 小结
- 习题
- 第5章 自顶向下语法分析
- 5.1 非确定的下推自动机
- 5.1.1 PDA的形式定义
- 5.1.2 PDA的构形和移动
- 5.1.3 上下文无关语言与PDA
- 5.2 消除左递归的方法
- 5.2.1 文法的左递归性
- 5.2.2 用扩展的BNF表示法消除左递归
- 5.2.3 直接改写法
- 5.2.4 消除左递归的算法
- 5.3 LL(k)文法
- 5.3.1 LL(1)文法的判断条件
- 5.3.2 集合FIRST、FOLLOW与SELECT的构造
- 5.4 确定的LL(1)分析器的构造
- 5.4.1 分析表M的构造算法
- 5.4.2 LL(1)分析器的总控算法
- 5.5 递归下降分析程序及其设计
- 5.5.1 递归下降分析程序
- 5.5.2 流程图设计
- 5.5.3 程序设计
- 5.6 小结
- 习题
- 第6章 自底向上分析和优先分析方法
- 6.1 短语和句柄
- 6.2 移进归约方法
- 6.3 非确定的自底向上分析器
- 6.4 有关文法的一些关系
- 6.4.1 关系
- 6.4.2 布尔矩阵和关系
- 6.4.3 Warshall算法
- 6.4.4 关系FIRST与LAST
- 6.5 简单优先分析方法
- 6.5.1 简单优先关系
- 6.5.2 简单优先关系的形式化构造方法
- 6.5.3 简单优先文法及其分析算法
- 6.5.4 简单优先分析方法的局限性
- 6.6 算符优先分析方法
- 6.6.1 算符优先文法
- 6.6.2 OPG优先关系的构造
- 6.6.3 素短语及句型的分析
- 6.6.4 算符优先分析算法
- 6.7 优先函数及其构造
- 6.7.1 Bell方法
- 6.7.2 Floyd方法
- 6.7.3 两种方法的比较
- 6.8 小结
- 习题
- 第7章 自底向上的LR(k)分析方法
- 7.1 LR(k)文法和LR(k)分析器
- 7.2 LR(0)分析表的构造
- 7.2.1 规范句型的活前缀和LR(0)项目
- 7.2.2 拓广文法和CLOSURE(I)函数
- 7.2.3 goto(I,X)函数和LR(0)项目集规范族
- 7.2.4 有效项目
- 7.2.5 举例
- 7.2.6 LR(0)文法和构造LR(0)分析表的算法
- 7.3 SLR分析表的构造
- 7.4 规范LR(1)分析表的构造
- 7.5 LALR分析表的构造
- 7.6 无二义性规则的使用
- 7.7 小结
- 习题
- 第8章 语法制导翻译法
- 8.1 基本原理和树变换
- 8.1.1 基本原理
- 8.1.2 树变换
- 8.2 简单SDTS和自顶向下翻译器
- 8.3 简单后缀SDTS和自底向上翻译器
- 8.3.1 后缀翻译
- 8.3.2 条件语句的处理
- 8.3.3 函数调用的处理
- 8.4 抽象语法树的构造
- 8.4.1 自底向上构造AST
- 8.4.2 AST的拓广
- 8.5 属性文法
- 8.5.1 L属性文法
- 8.5.2 S属性文法
- 8.6 中间代码形式
- 8.6.1 逆波兰表示法
- 8.6.2 逆波兰表示法的推广
- 8.6.3 四元式
- 8.6.4 三元式
- 8.7 属性翻译文法的应用
- 8.7.1 综合属性与自底向上定值
- 8.7.2 继承属性和自顶向下定值
- 8.7.3 布尔表达式到四元式的翻译
- 8.7.4 条件语句的翻译
- 8.7.5 迭代语句的翻译
- 8.8 小结
- 习题
- 第9章 运行时的存储组织与管理
- 9.1 存储分配基础知识
- 9.1.1 运行时刻的存储区域
- 9.1.2 过程活动与过程的活动记录
- 9.1.3 静态层次、静态外层和动态外层
- 9.1.4 名字的作用域和生存期
- 9.1.5 名字的静态属性和动态属性
- 9.1.6 常见数据类型的存储分配
- 9.2 典型的存储分配方案
- 9.2.1 静态存储分配方案
- 9.2.2 动态存储分配方案
- 9.2.3 存储分配时需考虑的问题
- 9.3 参数传递方式及其实现
- 9.3.1 传地址
- 9.3.2 传值
- 9.3.3 传结果
- 9.3.4 传名
- 9.4 栈式存储分配
- 9.4.1 概述
- 9.4.2 简单栈式存储分配
- 9.4.3 嵌套结构语言的栈式存储分配
- 9.4.4 过程调用时的存储管理
- 9.4.5 PL/0栈式存储分配
- 9.5 堆式存储分配方法
- 9.6 小结
- 习题
- 第10章 符号表
- 10.1 概述
- 10.1.1 符号表的地位与作用
- 10.1.2 符号表的生存期
- 10.2 符号表的内容
- 10.3 符号表的组织
- 10.3.1 符号表的数据结构
- 10.3.2 符号表的内容组织
- 10.4 栈式符号表
- 10.4.1 栈式符号表概述
- 10.4.2 栈式符号表举例
- 10.5 小结
- 习题
- 第11章 优化
- 11.1 控制流图
- 11.2 常见的冗余
- 11.2.1 公共子表达式
- 11.2.2 复制传播
- 11.2.3 活跃变量分析及死代码删除
- 11.3 循环优化
- 11.3.1 代码外提
- 11.3.2 归纳变量与强度削弱
- 11.3.3 循环展开
- 11.3.4 指令调度
- 11.4 小结
- 习题
- 第12章 代码生成
- 12.1 概述
- 12.1.1 目标代码形式
- 12.1.2 目标代码生成的主要问题
- 12.1.3 寄存器分配的原则
- 12.2 PL/0抽象计算机模型
- 12.2.1 PL/0抽象计算机的代码
- 12.2.2 PL/0语言目标代码举例
- 12.3 目标代码结构
- 12.3.1 目标代码结构的设计
- 12.3.2 常见语法成分目标代码结构设计
- 12.4 PL/0编译程序的目标代码生成
- 12.4.1 PL/0编译程序中的相关定义
- 12.4.2 基本语句的翻译
- 12.4.3 过程的翻译
- 12.4.4 目标代码生成举例
- 12.5 小结
- 习题
- 附录 PL/0编译程序源程序
- 参考文献