第一部分 從編寫沒有漏洞的代碼開始
第1章 完全沒有漏洞是不可能的
l.l 證據
1.2 調試或者測試都無法找到所有漏洞
1.3 這樣將變得更糟
1.4 開始就必須去除代碼漏洞
第2章 使用Hatching預防Java漏洞
2.1 開發哲學
2.1.l 左腦<=>右腦
2.1.2 如何更加富有創造力
2.1.3 如何更好地組織
2.1.4 程序員創建而測試員破壞
2.2 首先編寫文檔
2.2.l 首先是用戶手冊
2.2.2 強有力的結束工作
2.2.3 用戶手冊成為編程規範
2.3 學著喜歡Javadoc
2.4 危險元素在安全元素之前
2.4.l 盡早處理例外
2.4.2 避免限期壓力
第3章 設置Java漏洞中斷
3.l 指導代碼
3.1.l 代碼工具
3.1.2 Java例外的細節
3.1.3 例外提高瞭藝術的境界
3.1.4 處理例外的編碼
3.1.5 嵌套使用try模塊
3.2 throw模塊
3.2.l theows關鍵詞
3.3 隱藏在幻象漏洞之後的漏洞
3.3.l 練習生成漏洞
3.4 自動記錄結果
第4章 韆萬不要錯過另一個限期!危險因子分析
4.l 使用危險因子分析(RFA)
4.1.l 如何開始 RFA
4.l. 2 如何使用RFA
4.1.3 為什麼使用 RFA
4.2 為什麼RFA對於調試Java非常重要?
第5章 編寫代碼避開漏洞
5.l 通用文字處理器.
5.1.l 使用 Microsoft Word
5.2 使用最好的 Java編輯器.
5.3 編輯竅門
5.3.l 使筆誤自我顯露
5.3.2 擴展拷貝/粘貼緩衝區
5.3.3 使用自動更正功能清除錯誤和保存輸入
5.4 練習拼寫檢查器
5.5 按照先頭後尾再中間的順序書寫
5.6 QQQ書簽
5.7 3X5的打孔卡片
5.8 使用已知的Java子集
5.9 先注釋後代碼
5.10 牢記語言之間的區彆
5.10.1 Java和C/C++
5.10.2 Java和 Vsual Basic(VB)之間的主要區彆
5.11 集成開發環境(IDE)
5.11.1 JBuilder
5.11.2 JDK Commander
5.11.3 Mojo
5.14.4 Visualcafe
5.12 漏洞類彆
第二部分 清除Java漏洞
第6章 漏洞類彆
6.l 設計漏洞
6.1.l 條件總是以2的冪數成對齣現
6.2 語法漏洞
6.2.l 代碼生成器
6.2.2 代碼生成器的特性
6.2.3 類似Lint的檢驗程序
6.3 邏輯漏洞
6.3.l 邏輯性實際錯誤
6.4 解決神秘之處
6.5 數學漏洞
6.5.l 接近邊界值的數學問題
6.5.2 布爾變量
6.5.3 不常用的操作符:移位
6.6 罕見的漏洞
6.6.l 數據導緻的漏洞
6.7 副作用漏洞
6.8 優化引起的漏洞
6.9 假冒的漏洞
第7章 心理訓練.
7.l 如何保持思維的一貫性
7.1.l 使用純粹的個人習慣
7.2 不要混閤使用深度搜索和廣度搜索
7.3 何時調試
7.4 環境
第8章 Debugger的可怕威力
8.l 免費的JavaDebugger(JDB)
8.1.1 安裝
8.1.2 簡介
8.l.3 命令參考
8.2 第三方Debugger
8.2.1 Assure
8.2.2 JBuilder
8.2.3 JProbe
8.2.4 Visual Cafe
第9章 調試策略
9.1 集成最好資源
9.2 分解漏洞
9.2.1 開始修改
9.2.2 獵槍的方法
9.2.3 根據推論調試
9.2.4 二進製漏洞搜索
9.2.5 測試
9.3 卡住時問些問題
第10章 測試
10.l 定位後擊垮漏洞
10.1.l 武裝你的代碼
10.1.2 條件編譯
10.1.3 漏洞在何處?
10.1.4 黑盒測試
10.1.5 白盒測試
10.1.6 全邏輯測試
10.2 製造更好的蒼蠅拍
10.2.1 Macro Recorder
10.2.2 Best Practices Analyzer
10.2.3 Static Coverage Analyzer
10.2.4 Dynamic Coverage Analyzer
10.2.5 Bug Tracker
10.2.6 Test Data Assistant
10.2.7 何時停止測試
10.2.8 播撒錯誤的種子
10.2.9 你需要第二颱計算機
10.3 Java的商業軟件工具
第11章綫程化環境
11.l 迴顧古老的並行算法
11.2 並行計算漏洞
11.2.1 Daemon和 user綫程
11.2.2 Java本身的防護
11.2.3 循環並行化
11.2.4 處理輸入和輸齣
11.2.5 異步任務
11.2.6 定時程序
11.2.7 對時間敏感的綫程漏洞
11.3 預防綫程崩潰
11.3.l 使用循環鎖解救
11.3.2 使用監督程序和信號量鎖定
11.3.3 監督程序和信號量的詳細內容
11.3.4 一些綫程使用經驗
11.3.5 性能問題
11.4 綫程安全
11.5 預防措施
第12章 走開的人
12.l 用戶如何查覺漏洞
12.1.l 讓你的客戶喜歡你
12.2 定義造成的漏洞混亂
12.3 還有什麼可能齣錯?
12.4 組成完美錯誤信息的元素
12.4.l 使用用戶的語言描述
12.4.2 不要過於簡潔
12.4.3 小心選擇詞匯
12.4.4 確認是否拼寫錯誤
12.4.5 道歉永de不會有害
12.4.6 最好完全解密
12.4.7 你的用戶正處在接近恐慌的狀態
12.4.8 錯誤消息必須可以緩和情緒
12.4.9 避免使用任何屈尊的語氣
12.4.10 標準化步驟
12.4.11 按鈕標題
12.5 格式化錯誤消息
12.6 錯誤消息的內容
12.6.1 發生瞭什麼事?
12.6.2 為什麼發生?
12.6.3 其後將發生什麼現象?
12.6.4 現在用戶可做什麼?
12.6.5 將來用戶能做什麼?
12.6.6 現在用戶從何處可以得到幫助?
12.6.7 用戶如何纔能幫助開發人員改善情況?
12.6.8 最近在用戶的軟件中發生過類似問題否?
12.6.9 用戶應該如何嚮技術人員描述問題?
12.6.10 聊天室和幫助室
12.6.11 軟件開發人員將為用戶提供什麼補償?
12.6.12 問題發生時計算機的狀態如何?
12.6.13 漏洞在客戶端還是在服務器端?
12.6.14 打開瞭哪個數據庫、錶和字段?
12.6.15 哪個程序、哪個模塊、哪種方法以及哪一行觸發瞭錯誤?
12.6.16 當時哪個綫程正在活動?
12.6.17 按照計算機支持的精度,問題究竟在何時發生?
12.6.18 登錄用戶是哪一位?
12.6.19 屏幕或者報告中應該顯示什麼內容
12.7 永遠按照規範保證自己的軟件
第三部分 性能
第13章 使用最佳的測試策略
13.l 遞增與模塊測試
13.1.l 遞增測試的優點
13.1.2 傳統模塊測試的優點
13.l.3 綜閤測試
13.2 從上至下測試與從下至上測試
13.2.l 從上至下測試
13.2.2 流程圖為什麼有缺陷
13,2.3 從下至上測試
13.2.4 協議
13.3 原理測試
13.4 測試流程圖的空白處
13.5 自動測試程序
13.5.l 自動黑盒測試
13.5.2 自動白盒測試
13.5.3 自動迴歸測試
13.5.4 自動靜態分析
13.5.5 自動覆蓋分析
13.5 石幻想和神話
13.6 清除漏洞所需的費用
13.7 其他種類的測試
13.8 還剩下多少漏洞?
附錄A 商業設計
A.l 附加項類庫
A.2 人工智能
A.3 濟覽器及測覽器工具
A.4 代碼生成器
A.5 協作者
A.6 編譯程序和解釋程序
A.7 數據和網絡數據
A.8 調試程序
A.9 文檔編寫器
A.10 電子商務
A.11 編輯器
A.12 圖形開發
A.13 幫助文檔編寫器
A.14 IDE和開發工具
A.15 安裝與配置
A.16 國際化
A.17 Internet
A.18 Java Beans和企業版的JavaBeans(EJB)
A.19 Java虛擬機
A.20 JAR自解壓程序
A.21 製圖程序
A.22 消息程序
A.23 建模,UML,和 CASE工具
A.24 Obfuscator和優化程序
A.25 對象請求代理程序(ORBs)
A.26 Profiler
A.27 報錶製作程序
A.28 安全
A.29 服務器和Servlet
A.30 軟件開反工具包
A.31 電子製錶軟件
A.32 測試工具和套件
A.33 跟蹤器,工程管理器
A.34 語音識彆
A.35 Java文字處理器
A.36 XML
附錄B Java資源
B.l 書籍
B.2 雜誌
B.3 電子雜誌
B.4 新聞組
B.5 Web站點
B.6 培訓
附錄C 計算機編程的24條法規
附錄 D Java術語錶
附錄E Word宏
E.l 書簽和跳轉
E.2 隱藏的文本
E.3 個人注釋
E.4 綠色的關鍵字
E.5 編程幫助
E.6 更多的宏
· · · · · · (
收起)