This is the second part of the article “My Bookshelf”, with the list of the books that I recommend anyone in the software engineering field to read.
This second part has my preferred books about:
- Software Architecture and Design
As usual, all book references include links to their official websites, to Amazon.com as well as their ISBN, cover and list of authors.
- Books about Programming Languages, Platforms & Frameworks
- Books about Software Architecture and Design, and Security
- Books about Project Management and Methodologies, and Computing History and Industry Trends
2. Software Architecture and Design
In this specific area, the books from Addison Wesley are by far the reference. But O’Reilly is catching up…
Object Oriented Analysis and Design with Applications, 2nd Edition
by Grady Booch (ISBN 0805353402) http://www.awprofessional.com/title/0805353402 http://www.amazon.com/exec/obidos/tg/detail/-/0805353402
By the way, the author is one of the creators of UML.
Design Patterns (“The GoF Book”)
by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (ISBN 0201633612) http://www.awprofessional.com/title/0201633612 http://www.amazon.com/exec/obidos/tg/detail/-/0201633612
Well, if there is just one book that you must read, is this one. You just cannot avoid it. Commonly known as the “GoF” (“Gang of Four”) book, it is widely referenced by nearly all the other books, and it paved the basis for the software engineering way of this decade. The book features nearly 20 different common software design patterns, from the most obvious (Singleton, Adapter) to the most complex ones (Flyweight, Strategy, Observer), categorized in three categories: Creational, Structural and Behavioral patterns. If Object-Oriented Programming changed the way you develop software, believe me: Design Patterns will revolutionize the way you do it.
Head First Design Patterns
by Elisabeth Freeman, Eric Freeman, Bert Bates and Kathy Sierra (ISBN 0596007124) http://www.oreilly.com/catalog/hfdesignpat/ http://www.amazon.com/exec/obidos/tg/detail/-/0596007124
I found this book to be not only a fun and easy read, but also a welcome complement to the GoF book. The most common patterns (not all of them though) are described in great detail, with a complete explanation of the situations in which they make sense, highlighting the possible performance implications and common misconceptions. The samples are in Java and UML, and some paragraphs are frankly hilarious. Don’t miss this one.
The Unified Modeling Language User Guide
by Grady Booch, James Rumbaugh and Ivar Jacobson (ISBN 0201571684) http://www.awprofessional.com/title/0321267974 http://www.amazon.com/exec/obidos/tg/detail/-/0201571684
UML is here to stay; you find UML diagrams in every book, press article or software specification document. It has become the “de facto” lingua franca of the software engineering industry (well, all but Microsoft, even if they implicitly use it without aknowledging it, as usual). This book (also known as the “Three Amigos” book) is the complete reference to UML, with descriptions and examples of all the different diagram types, and their elements. A must have for anyone working in the industry.
MDA Explained - The Model Driven Architecture: Practice and Promise
by Anneke Kleppe, Jos Warmer, and Wim Bast (ISBN 032119442X) http://www.awprofessional.com/title/032119442X http://www.amazon.com/exec/obidos/tg/detail/-/032119442X
You cannot learn UML without seeing an immediate correlation between UML and “pure” source code. While many different attempts have been made to automate software development using visual tools, none has had the level of standardization and industry support of MDA. The OMG has established MDA as a standard specification, which vendors as well as the open-source community use now to create new tools, that are slowly getting more and more used in the industry. This book is a small but good introduction to the subject, highly recommended to software developers and architects.
Aspect-Oriented Software Development with Use Cases
by Ivar Jacobson and Pan-Wei Ng (ISBN 0321268881) http://www.awprofessional.com/title/0321268881 http://www.amazon.com/exec/obidos/tg/detail/-/0321268881
Aspect-Oriented Sofware Development (AOSD), also known as Aspect Oriented Programming (AOP) seems to be a paradigm that is really gaining momentum, and that could ultimately redefine software engineering in the next 10 years. This book, co-written by another of the creators of UML, gives not only a complete introduction to the subject of AOSD, but provides also a complete methodology for finding, designing and documenting aspects in UML. It is a complex book, I had to read it twice to really get it, it’s extremely comprehensive from all points of view, and can be a tough reading. But not to be missed in any case.
Hacking Exposed, Second Edition
by Joel Scambray, Stuart McClure and George Kurtz (ISBN 0072127481) http://www.hackingexposed.com/ http://www.amazon.com/exec/obidos/tg/detail/-/0072127481
Now this book is at its fifth edition! I got this book following the advice of a computer security teacher while in university, and it was an extremely useful read. I could not stop myself and started to download utilities referenced in this book… using them I found lots of security holes in the servers of the company I was working on… Also in the book you get the explanation of firewall or DNS problems and tweaks, encryption, cryptography, common intrusion techniques, threat levels, believe me, this book has it all. For Unix or Windows, you are sure to find a solution for every single problem you might have. I must say that it made me become aware of how insecure Windows is… actually I became somewhat paranoid :)
Writing Secure Code, Second Edition
by Michael Howard and David LeBlanc (ISBN 0735617228) http://www.microsoft.com/mspress/books/5957.asp http://www.amazon.com/exec/obidos/tg/detail/-/0735617228
Oddly enough, Microsoft issued this book. And it is quite a good one if you develop applications for the Windows platform. However, I wonder whether all of the Microsoft staff read it (or understood it). Microsoft products continue to suffer from important security problems (Windows the first) but all in all this book gives, after a good introduction on the buffer overrun problem, lots of insight on code security, whether in .NET, COM or MFC programming. Definitive read.