內容簡介
本書重點討論代碼的非功能特性,深入講述代碼如何滿足重要的非功能性需求,如可靠性、安全性、可移植性和可維護性,以及時間效率和空間效率。
本書從ApacheWeb套用伺服器、BSDUNIX作業系統和HSQLDBJava資料庫等開源項目中攫取數百個小例子,並以實例為基準點,輔以理論分析,從實用的角度講述每個專業軟體開發人員能立即運用的概念和技術。
本書適合作為軟體開發人員、安全工程師及軟體測試工程師等參考。
編輯推薦
要知道能在計算機領域中獨樹一礬的作品可謂是鳳毛麟角,而作者的第一本書《代碼閱讀》就作到了這點,在計算機教學中教人如何閱讀代碼而非編寫代碼的書籍的確是大受歡迎,在教學生如何編寫代碼前,應首先學習如何閱讀代碼,因為學習其他語言方法都是先學閱讀,在學寫做,而且在新千年,多數開發人員的主要任務是修改已存在的代碼。而不是開發代碼,正因為如此,我很感激作者能認識到這一點,並且為我們撰寫了如何閱讀代碼的知道書。
作者簡介
Diomidisspinellis廣受讚譽的《CodeReding》的作者。從1985年起,他就從事創新型軟體開發,和數百分行代碼打交道,並一直發展本書中介紹的各項技術。他在倫敦帝國學院取得了軟體工程碩士工程學位和計算機科學博士學位。目前,他是雅典經濟與商業大學科學技術管理系列教授。
目錄
序言
前言
1Introduction
1.1SoftwareQuality
1.2HowtoReadThisBook
2Reliability
2.1InputProblems
2.2OutputProblems
2.3LogicProblems
2.4ComputationProblems
2.5ConcurrencyandTimingProblems
2.6InterfaceProblems
2.7Data-HandlingProblems
2.8FaultTolerance
3Security
3.1VulnerableCode
3.2TheBufferOverflow
3.3RaceConditions
3.4ProblematicAPIs
3.5UntrustedInput
3.6ResultVerification
3.7DataandPrivilegeLeakage
3.8TrojanHorse
3.9Tools
4TimePerformance
4.1MeasurementTechniques
4.2AlgorithmComplexity
4.3Stand-AloneCode
4.4InteractingwiththeOperatingSystem
4.5InteractingwithPeripherals
4.6InvoluntaryInteractions
4.7Caching
5SpacePerformance
5.1Data
5.2MemoryOrganization
5.3MemoryHierarchies
5.4TheProcess/OperatingSystemInterface
5.5HeapMemoryManagement
5.6StackMemoryManagement
5.7Code
6Portability
6.1OperatingSystems
6.2HardwareandProcessorArchitectures
6.3CompilersandLanguageExtensions
6.4GraphicalUserInterfaces
6.5InternationalizationandLocalization
7Maintainability
7.1MeasuringMaintainability
7.2Analyzability
7.3Changeability
7.4Stability
7.5Testability
7.6EffectsoftheDevelopmentEnvironment
8Floating-PointArithmetic
8.1Floating-PointRepresentation
8.2Rounding
8.3Overflow
8.4Underflow
8.5Cancellation
8.6Absorption
8.7InvalidOperations
ASourceCodeCredits
Bibliography
Index
AuthorIndex
注釋