Directed Reading List for Object Oriented technology
This is a directed reading list for the Object Oriented Technology track
of the Software Excellence Curriculum.
Object Oriented Analysis and Design
Introductory
-
Richard C. Lee and William M. Tepfenhart,
UML and C++, Prentice
Hall, 1997, ISBN 0-13-619719-1.
This is the textbook for LCO320L (Intro to OO Analysis and Design).
-
Nancy Wilkinson, Using CRC Cards, SIGS Books, 1995, ISBN 1-884842-07-0.
This book has some overlap with the content of LCO323L (OO Analysis
Using CRH Cards)
-
Geri Schneider and Jason P. Winters, Applying Use Cases: a Practical
Guide, Addison-Wesley, 1998, 0-201-30981-5.
This book presents the basics of using Use Cases for documenting system
requirements.
Intermediate
-
Arthur Riel, Object-Oriented Design Heuristics, Addison-Wesley,
1996, ISBN 0-201-63385-X.
Arthur Riel presents 61 "heuristics" or "rules-of-thumb" for good object
oriented design. None of these heuristics are absolute rules, but they
give a designer some guidance in creating and evaluating OO designs.
-
Martin Fowler, UML Distilled,
This is a very concise treatment (about 170 pages) of the UML notation,
with some guidance in when and how to use the major UML models. Fowler
doesn't get bogged down in methodology and process.
-
IBM Object Oriented Technology Center, Developing Object-Oriented Software:
an Experience-Based Approach,
This book is a great catalog of development process ideas. Each section
of the book presents alternative notations for certain parts of the development
process, gives some guidelines for creating good artifacts, and shows how
the information in different models can be linked together. Reading this
book opens your mind to many options for organizing the software development
process -- it is a good antidote to some of the methodology textbooks that
only show one way to model the world.
Advanced
-
Bruce Powel Douglass, Doing Hard Time, Addison-Wesley, 1999, ISBN
0-201-49837-5.
This book is a very thorough treatment of object oriented modeling
and implementation techniques for real-time systems.
Patterns
Intermediate
-
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design
Patterns, Addison-Wesley, 1995, ISBN 0-201-63361-2.
Although many theoreticians in the field of patterns have moved beyond
this original catalog of 23 design patterns drawn from the authors' design
experiences in C++ and Smalltalk, this book is still the starting point
for most software developers who want to benefit from reusing the "standard"
design patterns. Many groups of software developers hold lunchtime pattern-reading
seminars based on this book.
Distributed Technology
Intermediate
-
Clement Szyperski, Component Software: Beyond Object-Oriented Programming,
Addison-Wesley, 1998, ISBN 0-201-17888-5.
The fundamental book on the topic of component-based software development.
-
Michi Henning and Steve Vinoski, Advanced CORBA Programming with C++,
Addison-Wesley, 1999, ISBN 0-201-37927-9.
This is a very complete book on using CORBA in C++.
-
Don Box, Keith Brown, Tim Ewald, and Chris Sells, Effective COM,
Addison-Wesley, 1999, ISBN 0-201-37968-6.
This book presents some important guidelines for using COM.
Languages
Java
Introductory
-
Bruce Eckel, Thinking in Java, Prentice Hall, 1998, ISBN 0-13-659723-8.
Eckel's book is one of the better introductory Java books for experienced
programmers. He explains a lot of the basic language and libraries of Java,
including the Java event model.
Intermediate
-
Doug Lea, Concurrent Programming in Java, Addison-Wesley, 1997,
ISBN 0-201-69581-2.
This book is an excellent textbook on programming in a "multithreaded"
environment, with examples given in Java. Doug explains the problems of
program safety, liveness, nondeterminism, and synchronization overhead.
This book is useful to any programmer working in any language (not just
Java).
C++
Introductory
-
Scott Meyers, Effective C++, second edition, Addison-Wesley, 1998,
ISBN 0-201-92488-9.
This is the most fundamental book about writing good C++ classes. Scott
Meyers presents a set of 50 tips -- each tip is explained in a very readable
form with examples. Many projects use a selected set of Meyers' 50 tips
as part of their C++ coding standards.
Intermediate
-
James Coplien, Advanced C++ Programming Styles and Idioms,
Cope's book does a great job of showing the complexity of the C++ language.
Most of the material in the first five chapters should be understood and
used by all C++ software developers. The later units contain useful advanced
material that can be applied to a wide variety of design situations.
-
John Lakos, Large-Scale C++ Software Design, Addison-Wesley, 1996,
ISBN 0-201-63362-0.
This book is full of pragmatic rules for designing large C++-based
software systems. Lakos presents a lot of useful information about building
layered architectures, doing good encapsulation, and building unit-level
test code.
Management Topics
Introductory
-
Alistair Cockburn, Surviving Object-Oriented Projects, Addison-Wesley,
1998, ISBN 0-201-49834-0.
This book is a good practical introduction to object technology management
issues. This is definitely the most pragmatic book on management
of an OO project. He gives lots of cautionary examples, and there are some
good quotes from some of our friends. Alistair also provides very good
treatment of the training obstacles for the average software project.