FloConsult logo

FloConsult SPRL
Tubize - Belgium

Personal tools

Fundamentals OODesign Java Cpp Python J2EE Corba Others

OO bibliography

We present here of selection of the books we find useful, with the categories organised following the Technology Pyramid: Bibliography Categories
Note that in each category, the books are ordered by importance and/or topic (e.g. in the Java category, "pure" Java books are placed before Hibernate).

(Object-Oriented) Software development fundamentals
The Pragmatic Programmer
by Andrew Hunt, David Thomas
352 pages; October 1999; Addison-Wesley; ISBN: 0-201-61622-X

This book is full of common sense and insights, e.g. it recommends the use of version-tracking software for all projects even the smallest one, promotes the learning of regular expressions and text-manipulation language. For each item, the authors use well-chosen metaphors to explain the subject.
Refer to http://www.pragmaticprogrammer.com for the other books of this series, all of them being easy to read while full of precious advices (e.g. Pragmatic Version Control, Pragmatic Unit Testing,...).
The Practice of Programming
by Brian W. Kernighan, Rob Pike;
288 pages; February 1999; Addison-Wesley; ISBN: 0-20161-586-X

This short book (less than 300 pages) covers the coding phase fundamentals (i.e. style, design, interfaces, debugging, portability, ...). Even if the book does not claim to be complete, it is an excellent book to improve the programming practices. It illustrates how to use C, C++, Java, Perl, ... languages but it is not a book to learn one of those languages.
Code Complete : A Practical Handbook of Software Construction, 2d Edition
by Steve C McConnell;
960 pages; 2d edition, June 2004; Microsoft Press; ISBN: 0-7356-1967-0

The first version of this book was published in 1993, and its second version was long awaited. It gives advices on how to organize the code, on naming conventions, and on code layout and style, that can be applied to OO programming as well. It also gives modules, functions and data structures quality criteria, with corresponding checklists. Note that this is a heavy book.
Software Project Management: A Unified Framework
by Walker Royce;
448 p, September 1998, Addison-Wesley, ISBN: 0-201-30958-0

By the Vice President of Rational Software, it explains how to manage today's object-oriented, iterative software development process, beginning from the traditional waterfall development, with also in-depth coverage of estimating and assessment techniques.
Agile and Iterative Development: A Manager's Guide
by Craig Larman;
368 p.; August 2003; Addison-Wesley; ISBN: 0-131-11155-8

As usual with Craig Larman's work, this book is very clear and concise, while complete. It is aimed to be read by managers, but is very interesting for developers who want to get a overall view of the agile practices compared to waterfall ones.
Agile Software Development: The Cooperative Game (2nd Edition)
by Alistair Cockburn;
504 p, October 2006, Addison-Wesley, ISBN: 978-0321482754

Based on Agile values, this second edition of the book compares software development to a game: the ultimate goal is to win (i.e. to deliver the correct product taking into account all the constraints).
The Rational Unified Process made Easy: A Practitioner's guide to RUP
by Per Kroll, Philippe Kruchten;
464 p, April 2003, Addison-Wesley, ISBN 0-321-16609-4

This book is a very good and readable introduction to the RUP, combining concepts and examples.
Agile Project Management: Creating Innovative Products
by Jim Highsmith;
192 p, April 2004, Addison-Wesley, ISBN 978-0321219770

There are many books about the Agile approach, but this one is one of the first pragmatically focusing on project management.
Object-Oriented Software Design
UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3d Edition
by Martin Fowler;
192 p, September 2003, Addison-Wesley, ISBN 0-321-19368-7

An excellent handy reference on the most common parts of UML, with practical advices on where to use each diagram. We highly recommend to OO developers to have their exemplar.
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3rd Edition
by Craig Larman;
736 p, October 2004, Prentice Hall, ISBN: 0-13-148906-2

A very practical guide to learn how to use UML on real projects, following an iterative cycle even for the book (the notations are introduced following iterations). This second edition uses the Unified Process. Note that "Patterns" in the title mainly refer to GRASP patterns, and not to the classical Design Patterns. This is a reference book of the OOAD IBM certification, and of our agile trainings.
The Unified Modeling Language User Guide, 2d Edition
by Grady Booch, Ivar Jacobson, James Rumbaugh;
496 p.; May 2005 ; Addison-Wesley; ISBN: 0-321-26797-4

This is the second version of the book, compatible with UML 2.0. This book and the "The Unified Modeling Language Reference Manual" are basic references for the UML. In the User Guide, each chapter explains a UML diagram, going into details.
The Unified Modeling Language Reference Manual, 2d Edition
by James Rumbaugh, Ivar Jacobson, Grady Booch
736 pages; July 2004; Addison-Wesley; ISBN: 0-321-24562-8

This is the second version of the book, compatible with UML 2.0. The core of this book is a glossary of each concept used in UML (it is a numerous list). For each concept, this book gives a definition, a semantic, explanations and examples. A CD completes this book with an electronic version of the book and the UML standard files.
Agile Software Development, Principles, Patterns, and Practices
by Robert C. Martin;
552 p, October 2002, Prentice Hall, ISBN: 0135974445

Robert C. Martin is a well-known C++ and Java Design and Agile development practitioner, together with a great technical book writer. This book provides a solid introduction to Agile Development, eXtreme programming, and OO design, together with many practical examples.
UML For Java Programmers
by Robert C. Martin;
378 p, January 1992, Pearson Education POD, ISBN: 0135676940

This book concentrates on UML features most relevant for Java programmers, guiding the reader through the OO development towards the code. Very interesting for Java programmers new to UML.
Analysis Patterns : Reusable Object Models
by Martin Fowler;
357 p.; October 1996; Addison-Wesley; ISBN: 0-201-89542-0

This book defines over 70 patterns derived from the health care and financial areas, two domains well-known by the author (there are few implementation examples, in Smalltalk). The notation of the models is a bit outdated, but updated diagrams are easily found on the net.
Pattern Oriented Software Architecture : A System of Patterns
by Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad;
476 p.; August 1996; John Wiley & Sons; ISBN: 0-47195-869-7

This book is now a reference in the patterns world (the "POSA"). It presents fundamental patterns at the architectural level, like the layers, the MVC,... If you liked this book, the POSA series contains nowadays 5 volumes: about concurrent and networked objects, resource management, distributed computing and patterns language.
Design Patterns : Elements of Reusable Object-Oriented Software
by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch;
395 pages; October 1995; Addison-Wesley; ISBN: 0-201-63361-2

Do we have to present this book? This is the absolute reference in the Patterns world, the first book on design patterns, written by the Gang of Four (the "GOF" book).
Patterns for Enterprise Application Architecture
by Martin Fowler;
560 p, November 2002, Addison-Wesley, ISBN: 0321127420

Major pattern book, with Domain logic patterns, database object-relational mapping patterns, presentation patterns, concurrency patterns, ... in the optic of enterprise application building.
Pattern Languages of Program Design
by James O. Coplien, Douglas C. Schmidt;
562 pages; June 1995; Addison-Wesley; ISBN: 0-20160-734-4

This book is a collection of papers presented at the first conference of Pattern Language of Programs (PLoP, August 96), which was focused on OO design patterns, but it also contains business objects patterns, process patterns, architecture patterns,.... The following volumes also worth reading, preferably by people already familiar with patterns.
Design and Use of Software Architectures
by Jan Bosch;
368 p, May 2000, Addison-Wesley, ISBN: 978-0201674941

This book is divided in two parts: the first is about software architectures (with useful case studies) and the second extends the first one with product lines aspects, what is original.
Software Architecture in Practice, Second Edition
by Len Bass, Paul Clements, Rick Kazman;
560 pages; April 2003; Addison-Wesley; ISBN: 978-0321154958

This book covers the essential technical topics for designing, specifying, and validating a system. In particular, it addresses the non-functional requirements relation with the software architecture.
Domain-Driven Design: Tackling Complexity in the Heart of Software
by Eric Evans;
576 pages; August 2003; Addison-Wesley; ISBN: 978-0321125217

Domain-Driven Design addresses modeling and design for complex systems and larger organizations, thus widening the usual perspective taken on software.
Head First Java
by Bert Bates, Kathy Sierra
650 p, May 2003, O'Reilly, ISBN: 0596004656

This book has a very surprising style (many images, jokes, exercises,...), inspired from real training classes.
A "must" for people planning to learn Java, even for those who do no want to pass the Java certification. Kathy Sierra is the instigator of the "Java Ranch" initiative.
The Java Tutorial 3d Edition
by Mary Campione, Kathy Walrath, ...
Vol. 1: 580 p, January 2000, Addison-Wesley, ISBN: 0-20170-393-9
Vol. 2: 976 p, December 1998, Addison-Wesley, ISBN: 0-20148-558-3
Java for beginners, with many exercises. The second volume (oldest version) concentrates on advanced JDK 1.2 features: Collections, Java 2D, JavaBeans, IDL, JDBC, RMI, Security, JNI, Reflection, .... Some versions of these books are available on the net at the address: http://www.sun.com/books/java_series.html
The Java Programming Language 4th Edition
by Ken Arnold, James Gosling, David Holmes;
928 p, August 2005, Addison-Wesley, ISBN: 978-0321349804

Java reference for OO developers, preferably with Java Notions.
Java(TM) Language Specification 3rd Edition
by James Gosling, Bill Joy, Guy Steele, Gilad Bracha;
688 p, 3rd Edition, June 2005, Addison-Wesley, ISBN: 0321246780

This book is close to the Java Language standard description, and is thus a reference, but not a book to learn Java.
It is available on the net at the address: http://www.sun.com/books/java_series.html
The Java(TM) Developers Almanach 4th Edition, volume 1 & 2
by Patrick Chan;
Vol. 1: 1024 p, March 2002, Addison-Wesley, ISBN: 0-20175-280-8
Vol. 2: 1040 p, September 2002, Addison-Wesley, ISBN: 0-20176-810-0
Complete quick reference for Java Class Libraries. Information for 3000 classes and 32000 members...
It is available on the net at the address: http://www.sun.com/books/java_series.html
Concurrent Programming In Java 2d Edition
by Doug Lea;
432 p, November 1999, Addison-Wesley, ISBN: 0-20131-009-0

Advanced book on parallelism and concurrency in Java (Threads,...), these concepts being integrated in the Java language since its version 1.5.
It is available on the net at the address: http://www.sun.com/books/java_series.html
Swing, 2d Edition
by Matthew Robinson, Pavel Vorobiev, Pavel A. Vorobiev, David Karr;
912 p, February 2003, Manning Publications Company, ISBN: 193011088X

Very good book, written for experienced Java Programmers. It mixes real-world code samples with expert advice on advanced features.
Java Persistence with Hibernate (2nd edition of Hibernate in Action)
by Christian Bauer, Gavin King;
880 p; November 2006; Manning Publications; ISBN: 1-932394-88-5

This is an absolute reference for any Java developer concerned with Object/Relational database mapping. Hibernate is a Open-Source product widely used in today's Java applications and the authors are part of the Hibernate development team.
Spring in Action, 2nd Edition
by Craig Walls, Ryan Breidenbach;
650 pages; August 2007; Manning Publications; ISBN: 978-1933988139

Spring is a lightweight Java framework that was developed to go around many of the J2EE framework difficulties. Its version 2.0 has now gained full maturity.
The C++ Programming Language
by Bjarne Stroustrup; 3rd edition
910 p; July 1997; Addison-Wesley; ISBN: 0-20188-954-4

The current best reference on the C++ language, but not really suitable for C++ newcomers. Much clearer than the previous editions, with many examples and exercises. Covers the basic facilities, OO generic programming, the new C++ standard library, and finally a short discussion on design.
Exercises solutions manual: "C++ Solutions", ISBN: 0-20130-965-3.
C++ Primer
by Stanley B. Lippman, Josee Lajoie; 3rd edition
1237 p; April 1998; Addison-Wesley; ISBN: 0-20182-470-1

Again, a third edition to reflect the final C++ draft ISO standard. More accessible to procedural programmers than the previous one, it also offers plenty of example programs and clear explanations, with early use of the standard library facilities.
Exercises solutions manual: "C++ Primer Answer Book", ISBN: 0-20130-993-9.
The C++ Standard Library: A Tutorial and Reference
by Nicolai M. Josuttis;
832 p; August 1999; Addison-Wesley; ISBN: 0-201-37926-0

This book is ideal to learn the Standard Library of C++: it is complete, very readable with a lot of well-chosen examples. In addition, the author explains traps and pitfalls related to this library. Obviously, the reader must known correctly the C++ language and more especially the Template construction.
After reading this book, "Effective STL" is a good choice to improve your knowledge the book of Scott Meyers (but only related to STL).
Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Exception-Safety Solutions
by Herb Sutter;
256 p; December 1999; Addison-Wesley; ISBN: 0-201-61562-2

From the comp.lang.c++.moderated newsgroup Guru of the Week (GoW) (http://www.gotw.ca/), this book proposes C++ problems and puzzles. Like the "Effective C++" books, it treats different topics of the C++ (generic programming, exceptions, optimizations,...).
Relevant to experienced C++ programmers.
More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions
by Herb Sutter;
256 pages; December 2001; Addison-Wesley; ISBN: 0-201-70434-x

The continuation of the "Exceptional C++" book. This book covers the same domain as the first volume: Standard Library, Memory Management, Exception handling, ... but illustrating other pitfalls and giving new advises. Pleasant to read and with a huge stuff to improve our C++ knowledge.
Effective C++ : 50 Specific Ways to Improve Your Programs and Designs
by Scott Meyers; 2nd edition;
256 p; September 1997; Addison-Wesley; ISBN: 0-20192-488-9

Gives 50 rules illustrated with examples and grouped by related topics to program C++ efficiently and cleanly. Very useful rules for memory management, constructors/destructors, OO design,... Useful for programmers familiar to C++.
This book and the following one are very well-adapted to use during a Reading Club (not to learn C++ but to improve the techniques).
More Effective C++: 35 New Ways to Improve Your Programs and Designs
by Scott Meyers;
318 p; December 1995; Addison-Wesley; ISBN: 0-20163-371-X

35 more advanced rules to design C++ (but the book is bigger). One chapter on exceptions, another one shows how to understand/improve your program efficiency (cost of inheritance, RTTI,...) and a last part treats advanced techniques like virtual constructors, reference counting, smart pointers,...
Relevant to experienced C++ programmers.
Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library
by Scott Meyers;
288 p; June 2001; Addison-Wesley; ISBN: 0-201-74962-9

Organized as a set of short and well organized articles, this book gives advices to improve the usage of Standard Template Library.
If you are looking about a first book about the STL, we advice you to read first "The C++ Standard Library". After this good tutorial, we recommend the Effective STL to improve progressively your knowledge.
C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns
by Douglas C. Schmidt, Stephen D. Huston;
336 pages; December 2001; Addison-Wesley; ISBN: 0201604647

This book presents how to develop C++ applications using ACE (ADAPTIVE Communication Environment), which is an open-source toolkit for building high-performance networked applications and next-generation middleware.
C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks
by Douglas C. Schmidt, Stephen D. Huston;
384 pages; October 2002; Addison-Wesley; ISBN: 0201795256

This book again focuses on ACE frameworks, providing thorough coverage of the concepts, patterns, and usage rules that form their structure. It completes the Volume 1.
The ACE Programmer's Guide: Practical Design Patterns for Network and Systems Programming
by Stephen D. Huston, James CE Johnson, Umar Syyid;
544 pages; October 2003; Addison-Wesley; ISBN: 0201699710

The book first introduces ACE to beginners. It then explains how you can use design patterns, frameworks, and ACE to produce effective, easily maintained software systems with less time and effort.
Learning Python, 2d Edition
by Mark Lutz, David Ascher;
552 p; December 2003; O'Reilly; ISBN: 0596002815

The central issue of this book is to learn Python fundamentals, that is all the platform independent facilities. Just this core language training shows the power of the language (OO features, component development, advanced built-in types, exceptions,...), illustrated with many examples.
This is the book we recommend to learn Python quickly and efficiently.
The Quick Python Book
by Daryl Harms and Kenneth McDonnald;
422 p; December 1999; Manning Publications Company; ISBN: 1-884777-74-0

While the previous book is easy to read for OO programmers, this one is more readable for people who have limited programming experience and want to learn Python. It first presents the basics, introducing very progressively more advanced features. The final 200 pages comprises an advanced topic section and an excellent 50 pages reference.
Python Cookbook
by Alex Martelli, David Ascher;
606 p; July 2002; O'Reilly; ISBN: 0-596-00167-3

Collection of recipes that originally appeared online containing corrections and updates to the programs, much added discussion, many additional recipes, and fourteen extended chapter introductions.
The J2EE Tutorial
by Stephanie Bodoff, Dale Green, Kim Haase, Eric Jendrock, Monica Powlan, Beth Stearns;
528 p, March 2002, Addison-Wesley, ISBN: 0-20179-168-4

Like other Sun tutorials, aimed at learning the technology with many exercises and code samples.
It is available on the net at the address: http://www.sun.com/books/java_series.html
Head First EJB
by Bert Bates, Kathy Sierra
700 p, October 2003, O'Reilly, ISBN: 0596005717

Based on the same original and particularly efficient style as the "Head First Java" book, this book is highly recommended to learn EJB.
EJB fondamental
by Scott Ambler and Tyler Jewel;
630 p, May 2002, Eyrolles, ISBN: 2-212-11088-X

French version, providing a thorough overview of the EJBs.
Core J2EE Patterns: Best Practices and Design Strategies, 2d Edition
by Deepak Alur, Dan Malks, John Crupi
650 p, June 2003, Prentice Hall, ISBN: 0-13-142246-4

This book is a "must have" book for any J2EE architect, presenting around 20 patterns on performance, scalability and robustness of J2EE applications. Provided with a case study and sample code.
Pure CORBA 3
by Fintan Bolton;
944 p, July 2001, SAMS, ISBN: 0672318121

Code intensive reference on CORBA 3 for professional developers, with C++ and Java examples. F. Bolton is a software consultant, trainer, and technical writer for IONA technologies.
Advanced CORBA Programming with C++
by Michi Hennings, Steve Vinoski;
1120 p, February 1999, Addison-Wesley, ISBN: 0-201-379279

Very good book for intermediate/advanced C++ developers, presents the CORBA 2.3 standard, by two "great names" of CORBA.
Client/Server programming with Java and CORBA, 2d Edition
by Robert Orfali, Dan Harkey;
832 p, February 1998, John Wiley and Sons, ISBN: 047124578X

A little outdated, but still very didactic book for people who want to know more about client/server programming with CORBA.
Refactoring: Improving the Design of Existing Code
by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts;
464 p, August 1999, Addison-Wesley, ISBN: 0-201-48567-2

This book explains how to improve existing code, with very practical examples in Java, and it also presents a good overview of unit testing.
The Object Constraint Language : Getting Your Models Ready for MDA
by Jos B. Warmer, Anneke G. Kleppe;
240 p; 2d Edition, August 2003; Addison-Wesley; ISBN: 0-32117-936-6

OCL is the formal language used with UML to specify all types of constraints (invariant, pre- and post-conditions, constraints related to a Finite State Machine,...). This second edition covers OCL 2.0.
Enterprise Architecture at Work: Modelling, Communication and Analysis
by Marc Lankhorst;
366 p; 3rd Edition, August 2012; Springer; ISBN-13: 978-3642296505

Pragmatic book from the originators of the Archimate language, before it was included in TOGAF.
Mastering Archimate - Edition II
by Gerben Wierda;
220 p; 2d Edition, March 2014; RandA; ISBN-13: 978-9081984041

Excellent book, full of very interesting examples on how to apply Archimate. An update for Archimate 3 is on his way.

Many thanks to: