出版社:人民邮电出版社
年代:2007
定价:49.0
本书专注于阅读与编写软件代码的方法,专注于软件代码的质量属性,包括了软件系统的可靠性、可移植性、可用性、互操作性、适应性、可信性以及可维护性等方面。通过阅读代码了解这些属性的能力是非常重要的,并且能将代码和这些属性建立联系是每个软件工程师的一个重要武器。本书研究了来自于现有开源系统的真实示例,并提供了有意义的练习以巩固读者的判断能力和技巧,使用了统一建模语言来绘制所有图表。本书适合各层次软件开发人员、管理人员和测试人员阅读。
第1章概述
1.1软件质量
1.1.1用户、制造者和管理者眼中的质量
1.1.2质量属性
1.1.3紧张的世界
1.2本书阅读指南
1.2.1排版约定
1.2.2图示
1.2.3图表
1.2.4汇编代码
1.2.5练习
1.2.6补充材料
1.2.7工具
进阶阅读
第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.3.4被遗漏的方法
2.3.5多余的功能
2.3.6曲解
2.4计算问题
2.4.1不正确的算法或计算
2.4.2表达式中错误的操作数
2.4.3表达式中错误的运算符
2.4.4运算符优先级问题
2.4.5溢出、下溢和符号转换错误
2.5并发与时序问题
2.6接口问题
2.6.1不正确的例程或参数
2.6.2没有正确测试返回值
2.6.3没有提供错误检测或恢复
2.6.4资源泄漏
2.6.5误用面向对象功能
2.7数据处理问题
2.7.1不正确的数据初始化
2.7.2引用错误的数据变量
2.7.3越界引用
2.7.4不正确的下标使用
2.7.5不正确的比例或数据单位
2.7.6不正确的数据打包与解包
2.7.7不一致的数据
2.8容错
2.8.1管理策略
2.8.2空间冗余
2.8.3时间冗余
2.8.4可复原性
锦囊妙计
进阶阅读
第3章安全性
3.1脆弱代码
3.2缓冲区溢出
3.3竞态条件
3.4问题API
3.4.1容易出现缓冲区溢出的函数
3.4.2格式字符串漏洞
3.4.3路径与命令行解释器的元字符漏洞
3.4.4临时文件
3.4.5不适合密码用途的函数
3.4.6可篡改数据
3.5不可信输入
3.6结果验证
3.7数据与特权泄漏
3.7.1数据泄漏
3.7.2特权泄漏
3.7.3Java的方法
3.7.4分离特权代码
3.8特洛伊木马
3.9工具
锦囊妙计
进阶阅读
第4章时间性能
4.1测量技术
4.1.1负载评定
4.1.2受限于I/O的任务
4.1.3受限于内核的任务
4.1.4受限于CPU的任务与剖析工具
4.2算法复杂性
4.3独立的代码
4.4与操作系统交互
4.5与外设交互
4.6“不请自来”的交互
4.7高速缓存处理
4.7.1一个简单的系统调用高速缓存
4.7.2替换策略
4.7.3预先计算结果
锦囊妙计
进阶阅读
第5章空间性能
5.1数据
5.1.1基本数据类型
5.1.2聚合数据类型
5.1.3对齐
5.1.4对象
5.2内存组织
5.3内存层次结构
5.3.1主存及其高速缓存
5.3.2磁盘高速缓存与分列内存
5.3.3交换区与基于文件的磁盘存储
5.4进程/操作系统接口
5.4.1内存分配
5.4.2内存映射
5.4.3数据映射
5.4.4代码映射
5.4.5访问硬件资源
5.4.6进程间通信
5.5堆内存管理
5.5.1堆碎片
5.5.2堆剖析
5.5.3内存泄漏
5.5.4垃圾收集
5.6栈内存管理
5.6.1栈框架
5.6.2栈空间
5.7代码
5.7.1设计时
5.7.2编码时
5.7.3构建时
锦囊妙计
进阶阅读
第6章可移植性
6.1操作系统
6.2硬件与处理器体系结构
6.2.1数据类型的属性
6.2.2数据存储
6.2.3特定于计算机的代码
6.3编译器与语言扩展
6.4图形用户界面
6.5国际化与本地化
6.5.1字符集
6.5.2区域
6.5.3消息
锦囊妙计
进阶阅读
第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.2.5语句级别的注释
7.2.6版本注释
7.2.7视觉结构:块与缩进
7.2.8表达式、函数与方法的长度
7.2.9控制结构
7.2.10布尔表达式
7.2.11可辨认性与内聚性
7.2.12依赖与耦合
7.2.13代码块注释
7.2.14数据声明注释
7.2.15正确的标识符名字
7.2.16依赖的位置
7.2.17不确定性
7.2.18可审查性
7.3可变性
7.3.1识别
7.3.2隔离
7.4稳定性
7.4.1封装与数据隐藏
7.4.2数据抽象
7.4.3类型检查
7.4.4编译时断言
7.4.5运行时检查与查看时断言
7.5可测试性
7.5.1单元测试
7.5.2集成测试
7.5.3系统测试
7.5.4测试覆盖度分析
7.5.5偶发性测试
7.6开发环境的影响
7.6.1增量构建
7.6.2调整构建性能
锦囊妙计
进阶阅读
第8章浮点运算
8.1浮点表示法
8.1.1量度误差
8.1.2舍入
8.1.3内存格式
8.1.4规格化与隐含的一个位
8.1.5阶码偏移
8.1.6负数
8.1.7反向规格化数
8.1.8特殊值
8.2舍入
8.3溢出
8.4下溢
8.5相消
8.6吸收
8.7无效运算
锦囊妙计
进阶阅读
附录A源代码致谢
参考文献
代码质量对于软件项目的成败至关重要,原因很简单,没有起码的质量。代码可能根本毫无用处。因此,作为软件开发人员,只会编写代码是远远不够的,你还必须编写高质量的代码。代码质量首先是一个技术问题,然而长期以来,对代码质量的讨论往往集中在管理层面,只是泛泛而谈。在本书中,作者回归技术层面,从ApacheWeb服务器、BSD版本的Unixt操作系统、ArgoUML、ACE网络编程库等著名开源软件中选取了大量真实的C、C++和Java语言源代码,直观而深刻地阐述了代码中可能存在的各种质量问题,涉及可靠性、安全性、时间和空间性能、可移植性、可维护性以及浮点运算等方面。很多内容都是独辟蹊径,发前人所未发。正因如此。本书继作者的《代码阅读》之后再次荣获Jolt生产效率大奖。本书是作者多年软件开发和教学经验的结晶,不仅能大大深化你对代码质量的认识。而且书中汇集的大量具体编程错误。能够让你在程序设计的学习和实践中少走弯路。更上一层楼。 本书论述阅读与编写软件代码的方法,重点讨论软件代码的质量属性,包括了软件系统的可靠性、可移植性、可用性、互操作性、适应性、可信性以及可维护性等方面。着力培养软件工程师了解这些属性的能力,并能编写出具备这些属性的优质代码。本书研究了来自于现有开源系统的真实示例,并提供了有意义的练习以巩固读者的判断能力和技巧,使用了统一建模语言来绘制所有图表。 本书适合各层次软件开发人员、管理人员和测试人员阅读。【作者简介】 DiomidisSpinellis世界著名程序员,曾4次在国际C语言编程大赛(IOCCC)中折桂。他是FreeBSD操作系统的核心开发人员之一,开发了大量开源软件,包括所有BSD操作系统上sed编辑器、大受好评的建模引擎UMLGraph和C语言源码分析与重构工具CScout。在英国帝国理工学院获得了软件工程硕士和计算机科学博士学位之后,他目前任教于希腊雅典经济管理大学,领导着一个欧盟资助的开源软件质量协作研究项目。他是IEEESoftware的编委和专栏作家,曾荣获Usenix协会终身成就奖,也是网络百科全书Wikipedia的一位活跃作者。除本书外,他的《代码阅读》一书曾荣获2004年的Jolt生产效率大奖。
书籍详细信息 | |||
书名 | 高质量程序设计艺术站内查询相似图书 | ||
丛书名 | 图灵程序设计丛书 | ||
9787115167934 如需购买下载《高质量程序设计艺术》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN | |||
出版地 | 北京 | 出版单位 | 人民邮电出版社 |
版次 | 1版 | 印次 | 1 |
定价(元) | 49.0 | 语种 | 简体中文 |
尺寸 | 26 | 装帧 | 平装 |
页数 | 210 | 印数 |
林锐, 韩永泉, 编著
林锐, 韩永泉, 编著
林锐, 韩永泉, 编著
(美) 高德纳 (Donald E.Knuth) , 著
(美) 高德纳 (Knuth,D.E.) , 著
(美) 高德纳 (Donald E. Knuth) , (德) 马丁·鲁克特 (Martin Ruckert) , 著
陈翔, 陈永平, 主编
刘文华, 主编
赵淑湘, 主编