Some of my Personal Favorites

Architectural Patterns

        Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern Oriented Software Architecture, A System of Patterns, Wiley 1996.

        Contains a collection of architectural patterns, everybody should know, like Broker Architecture - a base for CORBA, or other basics like Layered Architectures, PAC, MVC,  Blackboard and Pipelines.

        The sequel might also be worth reading.

Analysis Patterns

        Martin Fowler: Analysis Patterns : Reusable Object Models Addison-Wesley 1997

        Whenever you do domain analysis you will come over fragments that other people have done before. This book will ease analysis work by providing you with such useful concepts like measurements, role modelling, party models and the like. 

        David C. Hay: Data Model Patterns : Conventions of Thought, Dorsett House Publishing

        Somewhat similar to Martin Fowler's book (Analysis Patterns) but based on the relational modeling paradigm. Nevertheless very useful for object designers as relational models are often not very far off object models

Design Patterns

        Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns, Elements of Reusable Object-oriented Software, Addison-Wesley 1995.

        A classic and must read - 23 fundamental patterns for you daily software engineering use that will give you a complete new vocabulary to discuss your software engineering problems faster and better.

         

        Sherman Alpert, Kyle Brown, Bobby Woolf: The Design Patterns Smalltalk Companion, Addison Wesley 1998.

        As the title says: A companion for design patterns. You will learn that many problems solved in Design Patterns are mere C++ problems that need not be solved in Smalltalk :-).

        James W. Cooper: The Design Patterns Java Companion

        In the meantime there's also a plan for the same for JAVA. The bad thing about this is, you cannot buy the book yet - the good thing is - you can download it.

PLoP Books

The PLoP conference series  "Pattern Languages of Program Design" has been documented in an array of books. They contain the best patterns from PLoP conferences and may help you solve some design or process problems.

This site also provides a link collection of PLoP articles where you can download most PLoP book chapters free of charge if you only need a single chapter. Most articles in PLoP books stem from previous PLoP conferences and you can easily download a conference version of most chapters.

Client/Server Computing

      Paul E. Renaud: Introduction to Client/Server Systems; Second Edition, Wiley 1996.

      One of the very few client/server books that seriously deals with performance matters. Worth reading.

Background Literature on Software Architecture

        Mary Shaw, David Garlan: Software Architecture, Perspectives of an Emerging Discipline, Prentice Hall 1998.

        Excellent overview of the field by the leading experts that work around Carnegie Mellon University and especially their SEI (Software Engineering Institute). Very good survey from patterns to theoretical approaches. Not a design aid but a very good background reader.

        Len Bass: Software Architecture in Practice (Sei Series in Software Engineering); Addison-Wesley 1998.

        More of the same but from some different angles. 

Software Development, Software Engineering, and Lightweight Processes 

        Ed Yourdon: Death March; Prentice Hall Computer Books; 1997..

        A source of strength if you're stuck in the middle of a death march project. You will see that others share your problems the problems become easier to bear.

        Tom DeMarco: Peopleware; Productive Projects and Teams, 2nd Ed.; Dorset House 1999.

        Classic on what can go wrong in software projects (and often will) if you don't watch it.

        Andrew Hunt, David Thomas, Ward Cunningham: The Pragmatic Programmer: From Journeyman to Master.

        Lot's of good tips. Worth rereading from time to time so that one does not forget all the useful tricks that are inside. 

        Kent Beck: Extreme Programming Explained: Embrace Change

        Really refreshing stuff and full of good ideas that make you think about heavyweight sofware developmen processes and your daily practice. 

        If you really want to try XP, do not miss the two sequels, which are also worth reading and contain a lot of very helpful hints ..

        Jim Highsmith: Adaptive Software Development: A Collaborative Approach to Managing Complex Systems

        Another approach to lightweight processes - if you think about using a lightweight process read this book as it contains a few more aspects than the books by Kent Beck et al.

        Alistair Cockburn: Surviving Object-Oriented Projects

        Also worth reading. Already points in the direction of lightweight processes and contains a lot of useful hints for any software development project with a special emphasis on "the first o-o project" 

Outdated - Used to like them and still like them

Robert Orfali, Dan Harkey: Client/Server Survival Guide - With OS/2, Van Nostrand Reinhold 1994.

Still a good reference manual for client/server akronyms. Little bit outdated but if you're in an IBM  host - client/server environment still a very useful book. Only of limited use for web architectures.

Robert Orfali, Dan Harkey, Jeri Edwards: The Essential Client/Server Survival Guide - Second Edition, Van Nostrand Reinhold 1995.

Similar to Client/Server Survival Guide - With OS/2 but more compact and more modern

R. Orfali, D. Harkey, J. Edwards: The Essential Distributed Objects Survival Guide, Wiley, 1996.

Explains CORBA and  COM technologies on a high and easy to understand level. Little bit outdated but still a very good entry point to the field.

My candidates