新書推薦:
《
历史的教训(浓缩《文明的故事》精华,总结历史教训的独特见解)
》
售價:NT$
286.0
《
不在场证明谜案(超绝CP陷入冤案!日本文坛超新星推理作家——辻堂梦代表作首次引进!)
》
售價:NT$
265.0
《
明式家具三十年经眼录
》
售價:NT$
2387.0
《
敦煌写本文献学(增订本)
》
售價:NT$
1010.0
《
耕读史
》
售價:NT$
500.0
《
地理计算与R语言
》
售價:NT$
551.0
《
沈括的知识世界:一种闻见主义的实践(中华学术译丛)
》
售價:NT$
398.0
《
大思维:哥伦比亚商学院六步创新思维模型
》
售價:NT$
332.0
|
編輯推薦: |
提供配套电子课件、案例源程序、例子代码、教学参考方案等;提供三种教学参考方案,教师可根据需要调整。__
|
內容簡介: |
本书以一个案例的演变模拟不断变化的用户需求,按照增量迭代的开发模式,将碎片化的功能开发、用户交互、数据处理等知识,以及软件设计、软件测试和敏捷开发的最佳实践,与软件开发的原理、技术和工具融合到设计、编码、调试及测试的构造过程。内容包括软件构造的一般原理(如模块化、增量迭代)、常用技巧(如表驱动编程、测试驱动开发)、软件设计(契约式设计、设计模式)、软件知识(如软件测试、软件复用)以及软件构造的工作要素(如编码规范、构造工具)和活动(如设计、编码、测试、交付)。本书提供配套电子课件、案例源程序、例子代码、教学参考方案等。本书面向计算机学科的本科学生,可作为“软件构造”、“Java面向对象课程设计”等课程的教材,也可作为“实用软件工程”的参考书,同时也适合学习软件开发的其他专业及爱好者参考。
|
關於作者: |
李劲华,博士,教授,毕业于(德国)斯图加特大学,青岛大学软件工程系系主任。科技部国际合作重大项目评审专家;《小型微型计算机系统》、《同济大学学报》等核心期刊审稿人;曾任信息技术与计算机科学国际大会ICIS 2008分会主席。近五年,在国内外发表学术论文30余篇,其中SCI检索1篇、EI检索10篇。参加国家和省自然科学基金项目2项,主持完成横向课题2项。主持或参与完成青岛市软件产业、“十一五”信息化发展、“十二五”科技发展、蓝色经济区信息化建设等多项产业和战略发展规划。讲授编译原理、软件测试、软件工程、软件项目管理、面向对象分析与设计、Java程序设计基础等本科生课程,IT项目管理、软构件技术、软件测试理论与技术、UML面向对象建模、算法设计与分析、软件体系结构等研究生课程。
|
目錄:
|
目 录
第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 主要内容15
1.5.4 软件构造的重要性15
1.6 为什么不直接编写软件?16
1.6.1 软件开发语言16
1.6.2 编程工具与集成化开发环境18
1.6.3 软件运行环境19
1.6.4 软件开发的最佳实践20
1.6.5 开发过程与管理22
1.7 案例导读23
1.8 思考与练习题24
第2章 模块化软件构造25
2.1 分解与模块化26
2.1.1 分解的含义26
2.1.2 模块化与结构化28
2.2 数据结构与算法29
2.2.1 数据结构与算法的关系29
2.2.2 选择与设计数据结构30
2.2.3 选择与设计算法33
2.3 模块化设计理论初步35
2.3.1 模块化原则35
2.3.2 模块的内聚性35
2.3.3 模块间的耦合性36
2.4 测试程序38
2.4.1 测试需求39
2.4.2 测试设计与测试用例40
2.5 调试程序41
2.5.1 缺陷的相关术语42
2.5.2 调试基础42
2.6 案例分析与实践43
2.6.1 案例程序的初始构造43
2.6.2 无相同算式的基础构造45
2.6.3 编程实现测试47
2.7 讨论与提高51
2.7.1 软件质量51
2.7.2 软件测试的其他观点52
2.7.3 测试设计52
2.7.4 编程风格57
2.8 思考与练习题58
第3章 面向对象的软件构造60
3.1 抽象与封装60
3.1.1 模块产生与合成60
3.1.2 抽象与封装62
3.1.3 抽象数据类型63
3.2 认识面向对象64
3.2.1 设计类64
3.2.2 设计操作65
3.2.3 分类66
3.3 面向对象的设计67
3.3.1 面向对象的设计符号68
3.3.2 案例设计一69
3.3.3 案例设计二72
3.4 调试的基本技术79
3.4.1 单步调试源程序80
3.4.2 检查更改变量的值81
3.4.3 设置监视点观察变量81
3.4.4 上下移动调用栈82
3.5 软件自动化测试82
3.5.1 初识JUnit82
3.5.2 编写JUnit测试代码84
3.6 案例分析与实践86
3.6.1 分析86
3.6.2 构造87
3.7 讨论与提高89
3.7.1 对调试的进一步认识89
3.7.2 设计原则与设计模式90
3.7.3 面向对象的设计原则92
3.8 思考与练习题95
第4章 数据处理的软件构造98
4.1 数据及其持久性99
4.2 文件与输入输出流100
4.2.1 文件100
4.2.2 输入输出流101
4.2.3 数据序列化102
4.2.4 CSV格式的文本文件103
4.3 编写健壮的程序103
4.3.1 防御性编程104
4.3.2 使用断言107
4.4 字符串处理与正则表达式108
4.5 程序中数据集的使用111
4.5.1 算式基111
4.5.2 表驱动编程112
4.6 基于程序结构的测试114
4.6.1 语句覆盖测试115
4.6.2 程序控制流图115
4.6.3 逻辑覆盖测试116
4.6.4 路径覆盖测试117
4.7 运用JUnit119
4.7.1 异常测试119
4.7.2 参数化测试120
4.7.3 测试套件121
4.7.4 JUnit的断言122
4.7.5 JUnit使用指南122
4.8 案例分析与实践122
4.8.1 批量生成100以内算式的习题124
4.8.2 批改练习并存储125
4.8.3 算式基的构造与应用127
4.9 讨论与提高129
4.9.1 应用表驱动编程129
4.9.2 使用文件还是数据库131
4.9.3 契约式编程131
4.10 思考与练习题132
第5章 用户交互的软件构造135
5.1 程序及其功能的使用136
5.1.1 程序的两个观察视角136
5.1.2 多个功能程序的整合136
5.1.3 多个功能的组织与呈现137
5.1.4 基于菜单式功能选择的
用户交互138
5.2 用户交互概述143
5.2.1 基本概念143
5.2.2 交互设备143
5.2.3 交互风格143
5.2.4 交互界面144
5.2.5 交互设计的原则145
5.3 用户交互的开发146
5.3.1 交互设计基本过程146
5.3.2 快速原型法147
5.4 静态测试148
5.4.1 程序的可用性与静态测试148
5.4.2 桌面检查148
5.4.3 代码走查149
5.4.4 正式审查149
5.4.5 同行评审149
5.4.6 检查表150
5.4.7 静态程序分析150
5.5 软件集成与测试151
5.5.1 驱动模块和桩模块152
5.5.2 集成策略153
5.5.3 回归测试154
5.5.4 集成测试与策略154
5.6 案例分析与实践156
5.6.1 分析与设计156
5.6.2 案例程序的菜单式用户交互的构造157
5.6.3 循环语句的路径测试163
5.7 讨论与提高164
5.7.1 软件建模164
5.7.2 基于模型的测试165
5.7.3 执行函数名符号串的表驱动编程167
5.7.4 持续集成168
5.8 思考与练习题169
第6章 软件重构与交付171
6.1 代码重构171
6.1.1 代码重构的案例研究171
6.1.2 代码重构概述182
6.2 软件交付183
6.2.1 构建与打包183
6.2.2 实现构建自动化的工具184
6.2.3 Java程序的打包与交付187
6.3 案例分析与实践189
6.3.1 代码重构的案例分析189
6.3.2 代码重构实践190
6.3.3 提交案例程序191
6.4 讨论与提高192
6.4.1 测试层次192
6.4.2 测试驱动开发193
6.4.3 软件交付及其发展200
6.5 思考与练习题200
第7章 GUI软件构造202
7.1 GUI简介202
7.1.1 GUI发展轨迹202
7.1.2 Java GUI的构造工具202
7.2 GUI的基本元素与设计规范203
7.2.1 GUI的基本元素204
7.2.2 GUI基本设计规范207
7.3 Java GUI设计模式207
7.3.1 观察者模式208
7.3.2 MVC模式210
7.4 事件驱动编程210
7.4.1 事件捕捉与处理210
7.4.2 焦点事件和Tab顺序212
7.4.3 实例讲解212
7.5 案例分析与实践215
7.5.1 探路的GUI构造任务215
7.5.2 重构GUI构造任务219
7.6 讨论与提高226
7.6.1 GUI的设计原则226
7.6.2 GUI的测试228
7.7 思考与练习题229
第8章 应用数据库230
8.1 数据库概述230
8.1.1 关系数据库230
8.1.2 关系数据库的数据模型234
8.2 结构化查询语言SQL234
8.2.1 SQL概述234
8.2.2 创建基本表的CREATE
语句235
8.2.3 插入元组的INSERT语句237
8.2.4 删除元组的DELETE语句237
8.2.5 更新元组的UPDATE语句238
8.2.6 选择元组的SELECT语句238
8.3 数据库的开发过程242
8.4 编程操作数据库246
8.4.1 连接数据库246
8.4.2 查询数据库248
8.5 案例分析与实践250
8.5.1 分析与设计250
8.5.2 设计数据库250
8.5.3 开发数据库应用程序251
8.6 讨论与提高255
8.6.1 事务与并发255
8.6.2 使用存储过程257
8.6.3 查询优化——消除不必要的循环259
8.6.4 测试数据库260
8.7 思考与练习题261
第9章 基于复用的软件构造263
9.1 软件复用263
9.1.1 软件产品复用264
9.1.2 基于复用的软件开发265
9.1.3 程序库266
9.2 设计模式267
9.2.1 基本概念267
9.2.2 基本设计模式目录267
9.2.3 设计模式举例267
9.3 框架274
9.3.1 基本概念274
9.3.2 框架和设计模式276
9.3.3 框架开发276
9.3.4 软件测试框架JUnit277
9.4 案例分析与实践277
9.4.1 生成Word格式的习题277
9.4.2 口算习题练习得分的可视化展示283
9.4.3 完整案例的软件构造287
9.5 讨论与提高287
9.5.1 案例的Web应用程序287
9.5.2 Android应用框架288
9.6 思考与练习题288
参考文献290
|
|