基于案例的软件构造教程(第2版)

基于案例的软件构造教程(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2022-12
版次: 1
ISBN: 9787121446528
定价: 65.00
装帧: 其他
页数: 316页
3人买过
  • 本书以一个案例的演变模拟不断变化的用户需求,按照增量迭代的开发模式,将碎片化的功能开发、用户交互、数据处理等知识,以及软件设计、软件测试及敏捷开发的最佳实践,与软件开发的原理、技术和工具融合到设计、编码、调试及测试的构造过程。内容包括软件构造的一般原理(如依赖倒转原则、增量迭代)、常用技术(如表驱动编程、测试驱动开发)、软件设计(契约式设计、设计模式)、软件知识(如软件测试、软件复用)及软件构造的工作要素(如编码规范、构造工具)和活动(如设计、编码、调试、测试、交付)。本书提供配套的电子课件、案例源程序、例子代码、教学参考方案等。 李劲华,(德国)计算机科学博士,教授,博导。山东省计算机类专业及大学计算机课程教学指导委员会委员,青岛市船舶建造智能精度测量工程研究中心主任,山东省工业大数据发展创新实验室主任。长期讲授软件工程、编译原理、IT项目管理、软件体系结构、软件测试、《计算机导论》(双语)等课程。主编教材《编译原理》获十二五普通高等教育本科级国家规划教材,主编教材《基于案例的软件构造教程》获山东省普通高等教育一流教材,在中国大学MOOC上主讲课程《软件构造》获得山东省一流本科课程。近年来重点研究大数据技术、智能算法、新型IT的软件技术及其工业级应用。主持和参与过多项国家/省自然科学基金项目、省部级科研项目以及企业研究课题。在IEEE Internet of Thing、IEEE Network Magazine以及计算机辅助设计与图形学学报等专业杂志发表论文40余篇;首位获批发明专利3件、软件著作权10件。 目    录

    第1章  软件开发概述1

    1.1  程序与软件1

    1.1.1  从程序到软件1

    1.1.2  软件类型2

    1.1.3  程序设计与软件开发2

    1.2  软件生存周期4

    1.2.1  使用角度的软件生存周期4

    1.2.2  开发角度的软件生存周期4

    1.3  软件开发过程6

    1.3.1  瀑布式开发过程7

    1.3.2  增量开发过程7

    1.3.3  个体软件过程8

    1.4  敏捷开发9

    1.4.1  概述10

    1.4.2  Scrum方法12

    1.5  软件构造13

    1.5.1  有关概念13

    1.5.2  构造与开发过程14

    1.5.3  主要内容14

    1.5.4  软件构造的重要性15

    1.6  为什么不直接编写软件15

    1.6.1  软件开发语言16

    1.6.2  编程工具与集成化开发环境18

    1.6.3  软件运行环境19

    1.6.4  软件开发的最佳实践19

    1.6.5  开发过程与管理22

    1.7  案例导读22

    1.8  讨论与提高24

    1.8.1  案例的文档管理24

    1.8.2  课程思政25

    1.9  思考与练习题25

    第2章  模块化软件构造27

    2.1  分解与模块化28

    2.1.1  分解28

    2.1.2  模块化29

    2.2  数据结构与算法30

    2.2.1  数据结构与算法的关系31

    2.2.2  选择与设计数据结构32

    2.2.3  选择与设计算法35

    2.3  模块化设计理论初步37

    2.3.1  模块化原则37

    2.3.2  模块的内聚性37

    2.3.3  模块的耦合性38

    2.4  测试程序40

    2.4.1  测试需求41

    2.4.2  测试设计与测试用例42

    2.4.3  测试覆盖与黑盒测试43

    2.5  调试程序48

    2.5.1  缺陷的相关术语48

    2.5.2  调试基础48

    2.6  案例分析与实践49

    2.6.1  案例程序的初始构造49

    2.6.2  无相同算式的基础构造51

    2.6.3  编程实现测试54

    2.6.4  创建代码仓库57

    2.7  讨论与提高57

    2.7.1  软件质量57

    2.7.2  软件测试的其他观点58

    2.7.3  编程风格59

    2.7.4  撰写软件需求说明书60

    2.7.5  课程思政61

    2.8  思考与练习题61

    第3章  面向对象的软件构造63

    3.1  抽象与封装63

    3.1.1  模块产生与合成63

    3.1.2  抽象与封装64

    3.1.3  抽象数据类型65

    3.2  认识面向对象67

    3.2.1  软件设计67

    3.2.2  设计类67

    3.2.3  设计操作68

    3.2.4  分类69

    3.3  面向对象的设计70

    3.3.1  面向对象的设计符号70

    3.3.2  案例设计一71

    3.3.3  案例设计二75

    3.4  调试的基本技术82

    3.4.1  单步调试源程序83

    3.4.2  检查或更改变量的值84

    3.4.3  设置监视点观察变量84

    3.4.4  上下移动调用栈84

    3.5  软件的自动化测试85

    3.5.1  初识JUnit85

    3.5.2  编写JUnit测试代码87

    3.6  案例分析与实践89

    3.6.1  分析89

    3.6.2  构造89

    3.6.3  代码托管92

    3.7  讨论与提高93

    3.7.1  进一步认识调试93

    3.7.2  设计原则与设计模式93

    3.7.3  面向对象的设计原则95

    3.7.4  课程思政98

    3.8  思考与练习题98

    第4章  数据处理的软件构造102

    4.1  数据及其持久性103

    4.2  文件与输入/输出流104

    4.2.1  文件104

    4.2.2  输入/输出流105

    4.2.3  数据序列化106

    4.2.4  CSV格式的文本文件107

    4.3  编写健壮的程序107

    4.3.1  防御性编程108

    4.3.2  使用断言111

    4.4  字符串处理与正则表达式112

    4.5  持久使用程序中的数据集115

    4.5.1  算式基115

    4.5.2  表驱动编程116

    4.6  基于程序结构的测试118

    4.6.1  语句覆盖测试118

    4.6.2  程序控制测试119

    4.6.3  逻辑覆盖测试120

    4.6.4  路径覆盖测试121

    4.7  运用JUnit123

    4.7.1  异常测试123

    4.7.2  参数化测试124

    4.7.3  测试套件125

    4.7.4  JUnit断言126

    4.7.5  JUnit使用指南126

    4.8  案例分析与实践126

    4.8.1  批量生成100以内算式128

    4.8.2  构造并应用算式基130

    4.8.3  批改练习并存储132

    4.8.4  管理测试134

    4.9  讨论与提高134

    4.9.1  应用表驱动编程134

    4.9.2  使用文件还是数据库136

    4.9.3  契约式编程136

    4.9.4  撰写设计文档136

    4.9.5  课程思政137

    4.10  思考与练习题137

    第5章  用户交互的软件构造140

    5.1  程序及其功能的使用141

    5.1.1  程序的两个观察视角141

    5.1.2  多个功能程序的整合141

    5.1.3  多个功能的组织与呈现142

    5.1.4  基于菜单式功能选择的用户交互143

    5.2  用户交互概述148

    5.2.1  基本概念148

    5.2.2  交互设备148

    5.2.3  交互风格148

    5.2.4  交互界面149

    5.2.5  交互设计的原则150

    5.3  用户交互的开发151

    5.3.1  交互设计的基本过程151

    5.3.2  快速原型法152

    5.4  静态测试153

    5.4.1  程序的可用性与静态测试153

    5.4.2  基本的静态测试153

    5.4.3  检查表155

    5.4.4  静态程序分析155

    5.4.5  代码覆盖率与工具156

    5.5  软件集成与测试157

    5.5.1  驱动模块和桩模块158

    5.5.2  集成策略159

    5.5.3  回归测试160

    5.5.4  集成测试与策略160

    5.6  案例分析与实践162

    5.6.1  分析与设计162

    5.6.2  案例的菜单式用户交互的构造163

    5.6.3  循环语句的路径测试170

    5.7  讨论与提高170

    5.7.1  软件建模170

    5.7.2  基于模型的测试172

    5.7.3  执行函数名符号串的表驱动编程174

    5.7.4  持续集成175

    5.7.5  测试报告的撰写176

    5.7.6  课程思政176

    5.8  思考与练习题176

    第6章  软件重构与交付178

    6.1  代码重构178

    6.1.1  代码重构的案例研究178

    6.1.2  代码重构概述189

    6.2  软件交付190

    6.2.1  构建与打包190

    6.2.2  实现构建自动化的工具191

    6.2.3  Java程序的打包与交付193

    6.3  案例分析与实践196

    6.3.1  代码重构的案例分析196

    6.3.2  代码重构实践197

    6.3.3  提交案例程序198

    6.4  讨论与提高199

    6.4.1  测试层次199

    6.4.2  测试驱动开发200

    6.4.3  软件交付及其发展207

    6.4.4  撰写用户手册207

    6.4.5  课程思政207

    6.5  思考与练习题207

    第7章  GUI软件构造210

    7.1  GUI简介210

    7.1.1  Java GUI发展轨迹210

    7.1.2  Java GUI的构造工具210

    7.2  GUI的基本元素与设计规范211

    7.2.1  GUI的基本元素212

    7.2.2  GUI基本设计规范215

    7.3  Java GUI设计模式215

    7.3.1  观察者模式216

    7.3.2  MVC模式218

    7.4  事件驱动编程218

    7.4.1  事件捕捉与处理218

    7.4.2  焦点事件和Tab顺序219

    7.4.3  实例讲解220

    7.5  案例分析与实践223

    7.5.1  探路的案例GUI构造223

    7.5.2  重构GUI构造任务228

    7.5.3  重构任务9.2的案例代码234

    7.6  讨论与提高236

    7.6.1  GUI的设计原则236

    7.6.2  GUI的测试237

    7.6.3  课程思政239

    7.7  思考与练习题239

    第8章  应用数据库240

    8.1  数据库概述240

    8.1.1  关系数据库240

    8.1.2  关系数据库的数据模型244

    8.2  结构化查询语言SQL244

    8.2.1  SQL概述244

    8.2.2  创建基本表的CREATE语句245

    8.2.3  插入元组的INSERT语句247

    8.2.4  删除元组的DELETE语句247

    8.2.5  更新元组的UPDATE语句247

    8.2.6  选择元组的SELECT语句248

    8.3  数据库的开发过程252

    8.4  编程操作数据库255

    8.4.1  连接数据库256

    8.4.2  查询数据库257

    8.5  案例分析与实践259

    8.5.1  分析与设计259

    8.5.2  设计数据库259

    8.5.3  开发数据库应用程序261

    8.6  讨论与提高265

    8.6.1  事务与并发265

    8.6.2  使用存储过程266

    8.6.3  查询优化——消除不必要的循环268

    8.6.4  测试数据库269

    8.6.5  课程思政270

    8.7  思考与练习题270

    第9章  基于复用的软件构造272

    9.1  软件复用272

    9.1.1  软件产品复用273

    9.1.2  基于复用的软件开发274

    9.1.3  程序库275

    9.2  设计模式275

    9.2.1  基本概念275

    9.2.2  基本设计模式目录276

    9.2.3  设计模式举例276

    9.3  框架283

    9.3.1  基本概念283

    9.3.2  框架和设计模式284

    9.3.3  框架开发285

    9.3.4  软件测试框架JUnit285

    9.4  案例分析与实践286

    9.4.1  生成Word格式的习题286

    9.4.2  口算习题练习得分的可视化展示291

    9.4.3  完整案例的软件构造295

    9.5  讨论与提高297

    9.5.1  案例的Web应用程序297

    9.5.2  Android应用框架297

    9.5.3  课程思政298

    9.6  思考与练习题298

    参考文献300
  • 内容简介:
    本书以一个案例的演变模拟不断变化的用户需求,按照增量迭代的开发模式,将碎片化的功能开发、用户交互、数据处理等知识,以及软件设计、软件测试及敏捷开发的最佳实践,与软件开发的原理、技术和工具融合到设计、编码、调试及测试的构造过程。内容包括软件构造的一般原理(如依赖倒转原则、增量迭代)、常用技术(如表驱动编程、测试驱动开发)、软件设计(契约式设计、设计模式)、软件知识(如软件测试、软件复用)及软件构造的工作要素(如编码规范、构造工具)和活动(如设计、编码、调试、测试、交付)。本书提供配套的电子课件、案例源程序、例子代码、教学参考方案等。
  • 作者简介:
    李劲华,(德国)计算机科学博士,教授,博导。山东省计算机类专业及大学计算机课程教学指导委员会委员,青岛市船舶建造智能精度测量工程研究中心主任,山东省工业大数据发展创新实验室主任。长期讲授软件工程、编译原理、IT项目管理、软件体系结构、软件测试、《计算机导论》(双语)等课程。主编教材《编译原理》获十二五普通高等教育本科级国家规划教材,主编教材《基于案例的软件构造教程》获山东省普通高等教育一流教材,在中国大学MOOC上主讲课程《软件构造》获得山东省一流本科课程。近年来重点研究大数据技术、智能算法、新型IT的软件技术及其工业级应用。主持和参与过多项国家/省自然科学基金项目、省部级科研项目以及企业研究课题。在IEEE Internet of Thing、IEEE Network Magazine以及计算机辅助设计与图形学学报等专业杂志发表论文40余篇;首位获批发明专利3件、软件著作权10件。
  • 目录:
    目    录

    第1章  软件开发概述1

    1.1  程序与软件1

    1.1.1  从程序到软件1

    1.1.2  软件类型2

    1.1.3  程序设计与软件开发2

    1.2  软件生存周期4

    1.2.1  使用角度的软件生存周期4

    1.2.2  开发角度的软件生存周期4

    1.3  软件开发过程6

    1.3.1  瀑布式开发过程7

    1.3.2  增量开发过程7

    1.3.3  个体软件过程8

    1.4  敏捷开发9

    1.4.1  概述10

    1.4.2  Scrum方法12

    1.5  软件构造13

    1.5.1  有关概念13

    1.5.2  构造与开发过程14

    1.5.3  主要内容14

    1.5.4  软件构造的重要性15

    1.6  为什么不直接编写软件15

    1.6.1  软件开发语言16

    1.6.2  编程工具与集成化开发环境18

    1.6.3  软件运行环境19

    1.6.4  软件开发的最佳实践19

    1.6.5  开发过程与管理22

    1.7  案例导读22

    1.8  讨论与提高24

    1.8.1  案例的文档管理24

    1.8.2  课程思政25

    1.9  思考与练习题25

    第2章  模块化软件构造27

    2.1  分解与模块化28

    2.1.1  分解28

    2.1.2  模块化29

    2.2  数据结构与算法30

    2.2.1  数据结构与算法的关系31

    2.2.2  选择与设计数据结构32

    2.2.3  选择与设计算法35

    2.3  模块化设计理论初步37

    2.3.1  模块化原则37

    2.3.2  模块的内聚性37

    2.3.3  模块的耦合性38

    2.4  测试程序40

    2.4.1  测试需求41

    2.4.2  测试设计与测试用例42

    2.4.3  测试覆盖与黑盒测试43

    2.5  调试程序48

    2.5.1  缺陷的相关术语48

    2.5.2  调试基础48

    2.6  案例分析与实践49

    2.6.1  案例程序的初始构造49

    2.6.2  无相同算式的基础构造51

    2.6.3  编程实现测试54

    2.6.4  创建代码仓库57

    2.7  讨论与提高57

    2.7.1  软件质量57

    2.7.2  软件测试的其他观点58

    2.7.3  编程风格59

    2.7.4  撰写软件需求说明书60

    2.7.5  课程思政61

    2.8  思考与练习题61

    第3章  面向对象的软件构造63

    3.1  抽象与封装63

    3.1.1  模块产生与合成63

    3.1.2  抽象与封装64

    3.1.3  抽象数据类型65

    3.2  认识面向对象67

    3.2.1  软件设计67

    3.2.2  设计类67

    3.2.3  设计操作68

    3.2.4  分类69

    3.3  面向对象的设计70

    3.3.1  面向对象的设计符号70

    3.3.2  案例设计一71

    3.3.3  案例设计二75

    3.4  调试的基本技术82

    3.4.1  单步调试源程序83

    3.4.2  检查或更改变量的值84

    3.4.3  设置监视点观察变量84

    3.4.4  上下移动调用栈84

    3.5  软件的自动化测试85

    3.5.1  初识JUnit85

    3.5.2  编写JUnit测试代码87

    3.6  案例分析与实践89

    3.6.1  分析89

    3.6.2  构造89

    3.6.3  代码托管92

    3.7  讨论与提高93

    3.7.1  进一步认识调试93

    3.7.2  设计原则与设计模式93

    3.7.3  面向对象的设计原则95

    3.7.4  课程思政98

    3.8  思考与练习题98

    第4章  数据处理的软件构造102

    4.1  数据及其持久性103

    4.2  文件与输入/输出流104

    4.2.1  文件104

    4.2.2  输入/输出流105

    4.2.3  数据序列化106

    4.2.4  CSV格式的文本文件107

    4.3  编写健壮的程序107

    4.3.1  防御性编程108

    4.3.2  使用断言111

    4.4  字符串处理与正则表达式112

    4.5  持久使用程序中的数据集115

    4.5.1  算式基115

    4.5.2  表驱动编程116

    4.6  基于程序结构的测试118

    4.6.1  语句覆盖测试118

    4.6.2  程序控制测试119

    4.6.3  逻辑覆盖测试120

    4.6.4  路径覆盖测试121

    4.7  运用JUnit123

    4.7.1  异常测试123

    4.7.2  参数化测试124

    4.7.3  测试套件125

    4.7.4  JUnit断言126

    4.7.5  JUnit使用指南126

    4.8  案例分析与实践126

    4.8.1  批量生成100以内算式128

    4.8.2  构造并应用算式基130

    4.8.3  批改练习并存储132

    4.8.4  管理测试134

    4.9  讨论与提高134

    4.9.1  应用表驱动编程134

    4.9.2  使用文件还是数据库136

    4.9.3  契约式编程136

    4.9.4  撰写设计文档136

    4.9.5  课程思政137

    4.10  思考与练习题137

    第5章  用户交互的软件构造140

    5.1  程序及其功能的使用141

    5.1.1  程序的两个观察视角141

    5.1.2  多个功能程序的整合141

    5.1.3  多个功能的组织与呈现142

    5.1.4  基于菜单式功能选择的用户交互143

    5.2  用户交互概述148

    5.2.1  基本概念148

    5.2.2  交互设备148

    5.2.3  交互风格148

    5.2.4  交互界面149

    5.2.5  交互设计的原则150

    5.3  用户交互的开发151

    5.3.1  交互设计的基本过程151

    5.3.2  快速原型法152

    5.4  静态测试153

    5.4.1  程序的可用性与静态测试153

    5.4.2  基本的静态测试153

    5.4.3  检查表155

    5.4.4  静态程序分析155

    5.4.5  代码覆盖率与工具156

    5.5  软件集成与测试157

    5.5.1  驱动模块和桩模块158

    5.5.2  集成策略159

    5.5.3  回归测试160

    5.5.4  集成测试与策略160

    5.6  案例分析与实践162

    5.6.1  分析与设计162

    5.6.2  案例的菜单式用户交互的构造163

    5.6.3  循环语句的路径测试170

    5.7  讨论与提高170

    5.7.1  软件建模170

    5.7.2  基于模型的测试172

    5.7.3  执行函数名符号串的表驱动编程174

    5.7.4  持续集成175

    5.7.5  测试报告的撰写176

    5.7.6  课程思政176

    5.8  思考与练习题176

    第6章  软件重构与交付178

    6.1  代码重构178

    6.1.1  代码重构的案例研究178

    6.1.2  代码重构概述189

    6.2  软件交付190

    6.2.1  构建与打包190

    6.2.2  实现构建自动化的工具191

    6.2.3  Java程序的打包与交付193

    6.3  案例分析与实践196

    6.3.1  代码重构的案例分析196

    6.3.2  代码重构实践197

    6.3.3  提交案例程序198

    6.4  讨论与提高199

    6.4.1  测试层次199

    6.4.2  测试驱动开发200

    6.4.3  软件交付及其发展207

    6.4.4  撰写用户手册207

    6.4.5  课程思政207

    6.5  思考与练习题207

    第7章  GUI软件构造210

    7.1  GUI简介210

    7.1.1  Java GUI发展轨迹210

    7.1.2  Java GUI的构造工具210

    7.2  GUI的基本元素与设计规范211

    7.2.1  GUI的基本元素212

    7.2.2  GUI基本设计规范215

    7.3  Java GUI设计模式215

    7.3.1  观察者模式216

    7.3.2  MVC模式218

    7.4  事件驱动编程218

    7.4.1  事件捕捉与处理218

    7.4.2  焦点事件和Tab顺序219

    7.4.3  实例讲解220

    7.5  案例分析与实践223

    7.5.1  探路的案例GUI构造223

    7.5.2  重构GUI构造任务228

    7.5.3  重构任务9.2的案例代码234

    7.6  讨论与提高236

    7.6.1  GUI的设计原则236

    7.6.2  GUI的测试237

    7.6.3  课程思政239

    7.7  思考与练习题239

    第8章  应用数据库240

    8.1  数据库概述240

    8.1.1  关系数据库240

    8.1.2  关系数据库的数据模型244

    8.2  结构化查询语言SQL244

    8.2.1  SQL概述244

    8.2.2  创建基本表的CREATE语句245

    8.2.3  插入元组的INSERT语句247

    8.2.4  删除元组的DELETE语句247

    8.2.5  更新元组的UPDATE语句247

    8.2.6  选择元组的SELECT语句248

    8.3  数据库的开发过程252

    8.4  编程操作数据库255

    8.4.1  连接数据库256

    8.4.2  查询数据库257

    8.5  案例分析与实践259

    8.5.1  分析与设计259

    8.5.2  设计数据库259

    8.5.3  开发数据库应用程序261

    8.6  讨论与提高265

    8.6.1  事务与并发265

    8.6.2  使用存储过程266

    8.6.3  查询优化——消除不必要的循环268

    8.6.4  测试数据库269

    8.6.5  课程思政270

    8.7  思考与练习题270

    第9章  基于复用的软件构造272

    9.1  软件复用272

    9.1.1  软件产品复用273

    9.1.2  基于复用的软件开发274

    9.1.3  程序库275

    9.2  设计模式275

    9.2.1  基本概念275

    9.2.2  基本设计模式目录276

    9.2.3  设计模式举例276

    9.3  框架283

    9.3.1  基本概念283

    9.3.2  框架和设计模式284

    9.3.3  框架开发285

    9.3.4  软件测试框架JUnit285

    9.4  案例分析与实践286

    9.4.1  生成Word格式的习题286

    9.4.2  口算习题练习得分的可视化展示291

    9.4.3  完整案例的软件构造295

    9.5  讨论与提高297

    9.5.1  案例的Web应用程序297

    9.5.2  Android应用框架297

    9.5.3  课程思政298

    9.6  思考与练习题298

    参考文献300
查看详情
12
相关图书 / 更多
基于案例的软件构造教程(第2版)
基于语料库的汉语方言俗语研究(开辟汉语言方言俗语研究的新思路。)
吴建生
基于案例的软件构造教程(第2版)
基于量子计算的量子密码协议
石金晶
基于案例的软件构造教程(第2版)
基于近邻思想和同步模型的聚类算法
陈新泉
基于案例的软件构造教程(第2版)
基于MATLAB的电力电子技术和交直流调速系统仿真(第3版)
陈中、陈克伟、刘丹丹、段文勇
基于案例的软件构造教程(第2版)
基于Python的GIS空间分析
高培超 谢一茹 叶思菁 宋长青/编著
基于案例的软件构造教程(第2版)
基于遥感云计算的生态大数据平台建设:理论、方法与实践
董金玮等
基于案例的软件构造教程(第2版)
基于协同演化过程视角的企业相关多元化发展研究
李章溢
基于案例的软件构造教程(第2版)
基于R的语言研究多变量分析
吴诗玉
基于案例的软件构造教程(第2版)
基于Agent的系统仿真导论 [美] 尤里·威伦斯基
(美) 尤里·威伦斯基 (美)威廉·兰特
基于案例的软件构造教程(第2版)
基于新教材的高考数学研究
赵萍
基于案例的软件构造教程(第2版)
基于机器学习的文本挖掘
扬·茨卡,弗朗齐歇克·达雷纳,阿尔诺斯特
基于案例的软件构造教程(第2版)
基于项目教学的职业教育课程开发研究与实践
深圳职业技术大学
您可能感兴趣 / 更多
基于案例的软件构造教程(第2版)
基于案例的软件构造教程
李劲华、周强、陈宇 著
基于案例的软件构造教程(第2版)
编译原理
李劲华、丁洁玉、王奕 主编
基于案例的软件构造教程(第2版)
编译原理与技术(第2版)/新编高等院校计算机科学与技术规划教材
李劲华、陈宇、丁洁玉 编
基于案例的软件构造教程(第2版)
编译原理与技术练习解答与实验指导
李劲华、赵赟 编著