Common failures may occur in enterprise applications because many programmers do not understand the architectural lessons that experienced object programmers have learned. This book is a short tutorial on developing enterprise applications as well as a detailed reference to the patterns themselves with detailed code examples in Java or C# richly illustrated with UML diagrams to further cover the concepts. Developers of enterprise applications (e.g reservation systems, supply chain programs, financial systems, etc.) face a unique set of challenges, different than those faced by their desktop system and embedded system peers.