高質量程式設計藝術

高質量程式設計藝術

《高質量程式設計藝術》,是斯皮內利斯編著,人民郵電出版社出版的書籍。

基本信息

內容提要

高質量程式設計藝術

本書論述閱讀與編寫軟體代碼的方法,重點討論軟體代碼的質量屬性,包括了軟體系統的可靠性、可移植性、可用性、互操作性、適應性、可信性以及可維護性等方面。著力培養軟體工程師了解這些屬性的能力,並能編寫出具備這些屬性的優質代碼。本書研究了來自於現有開源系統的真實示例,並提供了有意義的練習以鞏固讀者的判斷能力和技巧,使用了統一建模語言來繪製所有圖表。

本書適合各層次軟體開發人員、管理人員和測試人員閱讀。

編輯推薦

本書研究了來自於現有開源系統的真實示例,並提供了有意義的練習以鞏固讀者的判斷能力和技巧,使用了統一建模語言來繪製所有圖表。

本書適合各層次軟體開發人員、管理人員和測試人員閱讀。

目錄

第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.3 Java的方法

3.7.4 分離特權代碼

3.8 特洛伊木馬

3.9 工具 110錦囊妙計

進階閱讀

第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 原始碼致謝

參考文獻

相關詞條

相關搜尋

熱門詞條

聯絡我們