Occasionally we're asked about what books we'd recommend for learning more about software engineering. You can guess some of these recommendations from the books (and papers) that are listed in the reading lists for some of the classes listed elsewhere, such as Graduate Software Engineering and Advanced Topics in Software Engineering. However, we'll list here a few of the books and high-level articles that we've recently read. Most are readable regardless of background. For a second opinion, check out Mary Shaw's recommendations.
An insightful history of the OS/360 project, presented through a series of entertaining, accessible essays. Also contains some follow-up articles.
One of Petroski's latest books that attempts to explain the ``engineering method'' through history and examples. The basic message is that engineering is risk avoidance. See also To Engineer is Human, The Evolution of Useful Things, and the imposing The Pencil. All highly readable.
A wordy but valuable description of how Microsoft does everything from marketing to writing software.
These are collections of very entertaining articles from Bentley's long-running series from CACM. And not the least bit out of date. Requires programming knowledge. You might also check out his book Writing Efficient Programs.
A book for practitioners that explains how to do high-level OO design. Out of date because it uses OMT (a predecessor to the new UML), but still valuable for the (more durable) ideas.
A detailed practioner's handbook on how to introduce flexibility and reusability into your code.
An economist's take on modularity and architecture. The clarity and generality of the ideas are breathtaking.
Much has changed in XP since this book first came out, but still the original.