I'm a professional software developer, for years I did IT contract and consulting jobs with focus on security related work, and for years I wrote about security for TechRepublic (eight out of my fourteen articles a month for much of that time being specifically on security topics). Even so, a good book about secure coding should teach me a lot. None of us know everything.
This book taught me very little. The one theme the authors identified as most important (treating security in the application development process as a holistic system concern) is, indeed, very important -- but that message required reminders to bring it back to the reader's mind in the course of reading the book, and much of what it discussed was strangely segregated by distinct parts of the system under development and stages of a bureaucratic, artificially modularized development process that, at the time the authors wrote the book more than a dozen years ago, was already recognized by many security and software development innovators as woefully inadequate to the needs of the time. The authors' favored software development process (which serves as the basis for the book's entire structure) is a waterfall methodology -- not only already regarded as more impediment than aid to development of high quality, reliable, secure software, but actually named "waterfall" originally in a scholarly, scathing indictment of a methodology that at the time of that denouncement was only just emerging from the bureaucratic project management soup of large corporations. That a book aiming to provide the modern (post-2000) standard for secure coding practice assumed a methodology named (by Herbert Bennington) for the sake of denouncing its toxicity to the development of quality software in 1956 is inexcusable.
All that having been said, there is some good advice in this book, and some value in the book's discussion of checklists, questions to ask yourself, and myriad approaches to assessing, analyzing, and addressing security concerns in the development, deployment, and maintenance of software systems. Unfortunately, to extract maximum value from this book would require carefully culling the worst of it, reorganizing the best, augmenting it with improvements, and writing enough material to fill the holes to end up with a whole new book. By then, the original authors would probably deserve little credit for the work.
I was, in short, disappointed.