Large-scale C++ Software Design
This is the definitive book for all C++ software professionals involved in large development efforts such as databases, operating systems, compilers, and frameworks. It is the first C++ book that actually demonstrates how to design large systems, and one of the few books on object-oriented design specifically geared to practical aspects of the C++ programming language. In this book, Lakos explains the process of decomposing large systems into physical (not inheritance) hierarchies of smaller, more manageable components. Such systems with their acyclic physical dependencies are fundamentally easier and more economical to maintain, test, and reuse than tightly interdependent systems. In addition to explaining the motivation for following good physical as well as logical design practices, Lakos provides you with a catalog of specific techniques designed to eliminate cyclic, compile-time, and link-time (physical) dependencies. He then extends these concepts from large to very large systems. The book concludes with a comprehensive top-down approach to the logical design of individual components. Appendices include a valuable design pattern Protocol Hierarchy designed to avoid fat inte
What people are saying - Write a review
We haven't found any reviews in the usual places.
Unnecessary Global Name Space Pollution
22 other sections not shown
ACCESSORS architecture base class beneﬁt callback class deﬁnition clients compile compile-time coupling compile-time dependency component dependency const I return copy constructor cost cyclic dependencies data members declaration define deﬁned deﬁnition derived classes design rules difﬁcult double Edge encapsulation endif Figure example extemal linkage ﬁle scope ﬁnd ﬁrst fully insulating Gedge global Gnode graph h ﬁle header ﬁle identiﬁer ifndef implementation details include guards inheritance inline function integer intemal IntSet iterator levelizable link-time link-time dependency logical design logical entities low-level member functions ndow Node NodeId object opaque pointers operator=(const package parser physical dependencies physical design physical hierarchy Point preﬁx preprocessor procedural interface protected protocol recompile Rectangle regression testing retum reuse runtime Section Shape shown in Figure speciﬁc Stack static int static member String struct subsystem test driver testable tion translation unit type safety typedef virtual functions void widget wrapper component