31.10 Further Reading
Robust programming—the art of writing programs that work correctly and handle errors gracefully—is a topic of great interest, often in the guise of “secure programming.” Kernighan and Plauger’s book  describes the principles and ideas underlying good programming style. Kernighan and Pike  also discuss style and other elements of good programming. Stavely’s book  combines formalisms with informal steps. Maguire’s book  is much more informal, and is a collection of tips on how to write robust programs. Martin  focuses on robust practices for agile programming, while McConnell  discusses robust programming in the general context of software construction.
Howard and LeBlanc  discuss secure coding, emphasizing the Windows and .NET environment. Howard, LeBlanc, and Viega’s book  describes 24 serious but common software flaws and how programmers can avoid them.
Much focus is on the C and C++ programming languages, because of their wide use, lack of type-safe features, and ability to manipulate memory directly. Seacord  and Viega and Messier  discuss ways to make programs in these languages more robust and secure. Sutter and Alexandrescu  present a set of coding standards for C++. Similarly, developing robust, secure web applications is critical, and several books [119, 1241, 1393, 1734] discuss how to do so.
Graff and van Wyk  provide a general overview of principles and practice, and much sound advice. Viega and McGraw’s book  is also general, with many examples focusing on UNIX and Linux systems. Its design principles give good advice. McGraw  expands on these in a later book. Garfinkel, Schwartz, and Spafford  has a wonderful chapter on trust, which is must reading for anyone interested in security-related programming. Wheeler  also provides valuable information and insight.