TOP
GOGO開學趣,參考書應有盡有
代碼質量(簡體書)
滿額折

代碼質量(簡體書)

商品資訊

人民幣定價:89 元
定價
:NT$ 534 元
優惠價
87465
絕版無法訂購
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

Jolt大獎素有"軟件業之奧斯卡"的美稱,本叢書精選自Jolt歷屆獲獎圖書,以植根于開發實踐中的獨到工程思想與傑出方法論為主要甄選方向。Diomidis Spinellis首部著作《代碼閱讀》(Code Reading)旨在闡明程序員應如何理解與修改代碼,與此不同的是,《代碼質量》重點討論代碼的非功能特性,深入講述代碼如何滿足重要的非功能性需求,如可靠性、安全性、可移植性和可維護性,以及時間效率和空間效率。本書從Apache Web應用服務器、BSD UNIX操作系統和HSQLDB Java數據庫等開源項目中攫取數百個小例子,並以實例為基準點,輔以理論分析,從實用的角度講述每個專業軟件開發人員能立即運用的概念和技術。《代碼質量》榮獲2007年Jolt大獎,適用於不同知識層次的軟件工作、程序開發和研究人員。·

作者簡介

Grady Booch,在軟件架構、軟件工程和建模領域的創新工作是世界知名的。從1981年Rational公司創建開始,他就一直擔任該公司的首席科學家。Grady于2003年3月成為了IBM院士(IBM Fellow)。Grady是統一建模語言(UML)最早的開發者之一,也是幾個Rational產品的最早開發者之一。Grady曾擔任世界各地一些複雜的軟件密集型項目的架構師和架構指導者。Grady是6本暢銷書的作者,包括UML Users Guide和Object-Oriented Analysis with Applications。Grady發表了幾百篇有關軟件工程的技術文章,其中包括在20世紀80年代早期發表的文章,這些文章最先提出了面向對象設計的術語和實踐。他曾在世界各地演講和諮詢。Grady是美國計算機協會(ACM)、美國電氣電子工程師學會(IEEE)、美國科學促進會(AAAS)、有社會責任的計算機專家協會(CPSR)的成員。他是IBM院士、ACM院士、世界技術網絡院士,也是軟件開發論壇夢想家。Grady是敏捷聯盟、Hillside集團和軟件架構師世界學院的創始委員會成員,也是Northface大學的顧問委員會成員。Grady於1977年從美國空軍學院獲得學士學位,于1979年從加州大學聖巴巴拉分校獲得電子工程科學碩士學位。Grady與他的妻子和他的貓生活在科羅拉多。他的興趣包括閱讀、旅行、唱歌和彈奏豎琴。Robert A. Maksimchuk,是Unisys Chief Technology Office的一名研究主管。他關注新出現的建模技術,目的是提升Unisys 3D可視企業建模框架的戰略方向。Bob為這項任務帶來了不同行業的大量系統工程、建模、面向對象分析與設計的專業知識。他是UML for Mere Mortals和UML for Database Design的合著者,也寫了許多文章。他曾經周遊世界各地,在各種技術論壇上作為重要演講者發言,舉辦關於UML和面向對象開發的研討會和培訓。Bob是電氣電子工程師學會(IEEE)和國際系統工程學會(INCOSE)的成員。Michael W. Engle,是洛克希德馬丁公司的首席工程師。他有超過26年的技術和管理經驗--從項目啟動到運營支持,涵蓋了完整的系統開發生命週期。利用系統工程師、軟件工程師和系統架構師的背景,Mike運用了面向對象技術,為複雜的系統開發提供創新的開發方式。Bobbi J. Young, Ph.D.,是Unisys Chief Technology Office的一名研究主管。她有著多年的IT行業從業經驗,與商業公司和國防部合同供應商一同工作。Young博士是一名諮詢師,她在項目管理、企業架構、系統工程和面向對象分析與設計方面提供現場指導。在她的職業生涯中,她關注於系統生命週期過程和方法學,同時也關注企業架構。Young博士擁有生物學、計算機科學和人工智能學位,她獲得了管理信息系統的博士學位,也曾是美國海軍預備役的一名指揮官(已退伍)。Jim Conallen,是IBM Rational的模型驅動開發戰略小組的一名軟件工程師。在這個小組中,他積極參與,將對象管理集團(OMG)的模型驅動架構(MDA)計劃應用於IBM Rational的模型工具中。Jim在基於資產的開發和可複用資產規範(RAS)領域也很活躍。Jim經常在會議上演講,也經常寫文章。他的專業領域是Web應用開發。他開發了UML的Web應用擴展(WAE)。這是對UML的一種擴展,讓開發者能夠利用UML在合適的抽象和細節層面上對Web應用的架構進行建模。這項工作是IBM Rational Rose和Rational XDE Web Modeling功能的基礎。Jim與人合著了兩個版本的Building Web Applications with UML,第一個版本採用微軟公司的ASP技術,後一個版本採用J2EE技術。Jim的經驗也來自於加入Rational之前的工作,那時他曾是獨立的諮詢師、Peace Corps的志願者和大學講師。他還是3個孩子的父親。Jim從Widener大學獲得了計算機和軟件工程的學士學位和碩士學位。Kelli Houston是IBM Rational的IT諮詢專家。她是IBM內部方法的方法架構師,負責編寫方法並集成IBM的方法。除了方法架構師的角色,Kelli還在IBM內部領導Rational Method Composer(RMC)特別興趣小組(SIG)工作,為客戶和IBM內部諮詢師提供有效使用RMC方面的諮詢和現場指導服務。·

名人/編輯推薦

《代碼質量》從Apache Web應用服務器、BSD Unix操作系統和HSQLDB Java數據庫等開源項目中攫取數百個小例子,并以實例為基準點,輔以理論分析,從實用的角度講述每個專業軟件開發人員能立即運用的概念和技術。《代碼質量》榮獲2007年jolt大獎,適用于不同知識層次的軟件工作、程序開發和研究人員。

目次

表圖原書序言前言第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 問題API3.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 工具第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.3.1 編譯器錯誤6.4 圖形用戶界面(GUI)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 源代碼致謝人員名單參考文獻表 目 錄表2-1 測試極端情況表2-2 測試一個不含尾端的非對稱範圍的例子表2-3 整數量的範圍表2-4 在程序生命週期不同階段所做的參數類型檢查表2-5 在C++中約束類的使用表3-1 UNIX服務器開放網絡端口列表表3-2 Windows工作站開放網絡端口列表表3-3 進行ftpd緩衝區攻擊時的棧表3-4 展開棧(默認情況)表3-5 在攻擊過程中展開棧表3-6 不安全的C函數及其安全的替代函數表3-7 Java 2平臺SE 5.0的許可表4-1 用時剖析特徵、診斷工具及解決方案表4-2 由環境切換和進程間通信導致的開銷表4-3 低速外設導致的開銷表5-1 不同架構下基本數據類型的表示表5-2 AMD64架構上結構體元素的對齊表5-3 一個程序在不同架構和操作系統上的內存佈局表5-4 連續的地址空間限制及相應的解決方案表5-5 構建選項對程序大小的影響表6-1 各種開發平臺的可移植性問題表6-2 Java平臺標準字符編碼表6-3 區域特定的字段表7-1 可維護性指數的參數表7-2 WebServerConnection方法與它們使用的字段表7-3 WebServerConnection類的相似(內聚)方法與相異方法表7-4 不同類型的訪問控制下可以訪問類成員的方法數表8-1 不同舍入模型的例子表8-2 不同浮點格式的關鍵屬性表8-3 導致異常的運算和操作數圖 目 錄圖1-1 軟件質量的各個方面的例子:使用中質量、外部質量、內部質量及過程質量圖1-2 本書脈絡:軟件質量的要素圖1-3 質量特徵間的衝突圖1-4 標注列表示例圖1-5 基於UML的圖示符號圖2-1 使用評注,toString方法的反射式實現圖2-2 借助策略模式關聯代碼和數據圖2-3 使用接口實現創建處理器圖2-4 對象私有資源的顯式管理圖2-5 郵件傳送代理守護程序sendmail的調試代碼圖2-6 通過靜態分析探查null指針引用圖2-7 借助wait和notify管理資源的使用圖2-8 使用有瑕疵的雙檢鎖模式圖2-9 內存洩漏與資源洩漏之間的關係圖2-10 在NetBSD內核中分配與釋放文件描述符圖2-11 使用自動產生的源代碼定義字體的輪廓圖2-12 NetBSD源代碼中全局變量定義(左)和引用(右)的位置圖2-13 NetBSD內核全局變量所用的類型圖2-14 將字節串編碼為改進過的UTF-8格式圖2-15 SCSI設備驅動程序中一個命令序列重傳圖2-16 自有故障的磁盤上恢復數據圖3-1 FTP守護進程中的緩沖區溢出圖3-2 PPP守護代碼中的一個競態條件圖3-3 pppd漏洞的檢查/使用時間差利用圖3-4 檢查/使用時間差漏洞利用時序圖圖3-5 strcpy和strcat的不安全用法圖3-6 strcpy和strcat正確應用在一個動態分配大小的緩衝區上圖3-7 不安全地清除環境變量圖3-8 安全地清除環境變量圖3-9 未正確檢查traceroute實現中的錯誤返回值圖3-10 在TCP Wrappers程序中嵌入特洛伊木馬代碼圖4-1 專家對於優化代碼的警告圖4-2 在HSQLDB代碼中EJP對帕累托法則的闡述圖4-3 對於vfprintf函數的gprof輸出的例子圖4-4 調用圖中處理時間的傳播圖4-5 某些常見算法類別的相對性能圖4-6 簡單cat調用中的系統調用圖4-7 logger調用時本地進程間通信產生的系統調用圖4-8 ping名字查詢的遠程DNS進程間通信所產生的系統調用圖4-9 系統顛簸對運行時性能的影響圖4-10 使用用戶ID來命名緩存代碼圖4-11 緩存數據庫行記錄圖5-1 結構體的兩種存儲方式:填充以確保對齊(上),打包以節省內存(下)圖5-2 從大到小排列結構體元素,確保對齊且節省內存圖5-3 OpenCL算法繼承樹的UML類圖圖5-4 三個OpenCL算法類的C++虛函數表圖5-5 指向實例數據的Java對象圖5-6 有著一個指向實例數據和類數據的句柄的Java對象圖5-7 內存資源的類型圖5-8 進程內存組織圖5-9 現代計算機的一個存儲層次結構圖5-10 100萬個分配對象的大小分佈圖5-11 100萬個分配對象的生命週期分佈圖5-12 用於顯示內存碎片的內存池快照圖5-13 外部內存碎片的一個例子圖5-14 內部內存碎片的一個例子圖5-15 Apache HTTP服務器內存分配剖析圖5-16 sed流編輯器的內存剖析圖5-17 valgrind內存洩漏測試工具的報告圖5-18 C正則表達式庫中的內存洩漏圖5-20 一個棧幀的內容圖5-21 棧大小的快照圖5-22 數據和棧大小的關係圖5-23 源文件與目標文件大小之間的關係圖5-24 ACE地址類型中的繼承圖6-1 使用隔離層來提供可移植性圖6-2 存儲於小端與大端架構上的整數0x04030201圖6-3 GUI可移植性策略的例子圖6-4 使用catgets接口做消息處理圖6-5 使用gettext接口做消息處理圖6-6 使用GNU gettext工具的消息本地化流程圖6-7 在Java servlet中訪問本地化消息圖7-1 測量擴展圈複雜度圖7-2 FreeBSD內核和用戶程序的增長與可維護性指標隨時間的變化圖7-3 所有FreeBSD模塊的可維護性指數分佈圖7-4 類的加權方法數度量:對所有的HSQLDB類(左);不同的WMC值對應的Eclipse類個數(右)圖7-5 繼承樹深度度量:對於所有的HSQLDB類(左);不同DIT值對應的Eclipse類的數量(右)圖7-6 HSQLDB:高DIT值的類的繼承樹度量和它們所定義的方法數圖7-7 Eclipse類的子類數度量圖7-8 對象類之間的耦合:對於每個HSQLDB類(左);不同的CBO值對應的Eclipse類的數量(右)圖7-9 類的響應:對於所有的HSQLDB類(左);不同的CBO值對應的Eclipse類的數量(右)圖7-10 方法的內聚缺乏度:對於所有的HSQLDB類(左);對應於不同LCOM值的Eclipse類的個數(右)圖7-11 org.hsqldb包中的公有類和私有類圖7-12 Tomcat中一個不穩定的包圖7-13 Eclipse中一個穩定的包圖7-14 Eclipse的離心耦合與向心耦合之間的關係圖7-15 Eclipse包(左)和第三方包(右)的不穩定性分佈圖7-16 junit包的穩定依賴圖7-17 MX4J包的不太穩定依賴圖7-18 Eclipse包的不穩定性與抽象度分佈圖7-19 Xerces與Eclipse間的循環依賴圖7-20 所有的FreeBSD模塊可維護性指數與模塊大小的關係圖7-21 65000個C函數的函數長度分佈圖7-22 在處理用戶響應的過程中缺乏規則性圖7-23 用於處理用戶響應的一個規則的控制結構圖7-24 在同一代碼段裡不同的break和continue範圍圖7-25 ed的DES CBC實現中的公共耦合圖7-26 ed的DES CBC實現中的公共耦合關係圖7-27 在NetBSD內核中讀取並使用磁盤分區內核圖7-28 低帶寬X(LBX)擴展中增量緩存的設計圖7-29 低帶寬X(LBX)擴展中增量緩存的實現圖7-30 servlet容器各元素間不必要的關係圖7-31 使用責任鏈設計模式來分離類圖7-32 兩個不同的Catalina文件的公共代碼行圖7-33 難以修改的格式化注釋(左)與便於修改的格式化注釋(右)圖7-34 在最內部的代碼塊中聲明變量圖7-35 第7版UNIX中直接解釋的數據圖7-36 Java 1.5之前的代碼使用鬆散類型圖7-37 C庫fomd實現中的特別單元測試圖7-38 JUnit測試框架中的單元測試圖7-39 Perl源代碼測試覆蓋度(左)和分支覆蓋度(右)與測試用例執行數的關係圖7-40 正則表達式引擎中斷言的使用圖7-41 包含文件依賴關係的簡化圖圖7-42 文檔依賴圖8-1 二次方程消去誤差以及對精度的影響圖8-2 計算遠離原點的三角形面積時的合併誤差圖8-3 驗證浮點運算結果的代碼·

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
絕版無法訂購

暢銷榜

客服中心

收藏

會員專區