序言
前言
1 Introduction
1.1 Software Quality
1.2 How to Read This Book
2 Reliability
2.1 Input Problems
2.2 Output Problems
2.3 Logic Problems
2.4 Computation Problems
2.5 Concurrency and Timing Problems
2.6 Interface Problems
2.7 Data-Handling Problems
2.8 Fault Tolerance
3 Security
3.1 Vulnerable Code
3.2 The Buffer Overflow
3.3 Race Conditions
3.4 Problematic APIs
3.5 Untrusted Input
3.6 Result Verification
3.7 Data and Privilege Leakage
3.8 Trojan Horse
3.9 Tools
4 Time Performance
4.1 Measurement Techniques
4.2 Algorithm Complexity
4.3 Stand-Alone Code
4.4 Interacting with the Operating System
4.5 Interacting with Peripherals
4.6 Involuntary Interactions
4.7 Caching
5 Space Performance
5.1 Data
5.2 Memory Organization
5.3 Memory Hierarchies
5.4 The Process/Operating System Interface
5.5 Heap Memory Management
5.6 Stack Memory Management
5.7 Code
6 Portability
6.1 Operating Systems
6.2 Hardware and Processor Architectures
6.3 Compilers and Language Extensions
6.4 Graphical User Interfaces
6.5 Internationalization and Localization
7 Maintainability
7.1 Measuring Maintainability
7.2 Analyzability
7.3 Changeability
7.4 Stability
7.5 Testability
7.6 Effects of the Development Environment
8 Floating-Point Arithmetic
8.1 Floating-Point Representation
8.2 Rounding
8.3 Overflow
8.4 Underflow
8.5 Cancellation
8.6 Absorption
8.7 Invalid Operations
A Source Code Credits
Bibliography
Index
Author Index
注释