Op werkdagen voor 23:00 besteld, morgen in huis Gratis verzending vanaf €20

Large-Scale C++ Software Design

Paperback Engels 1996 9780201633627
Verwachte levertijd ongeveer 9 werkdagen

Samenvatting

Developing a large-scale software system in C++ requires more than just a sound understanding of the logical design issues covered in most books on C++ programming. To be successful, you will also need a grasp of physical design concepts that, while closely tied to the technical aspects of development, include a dimension with which even expert software developers may have little or no experience.

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 interfaces while minimizing physical dependencies; the details of implementing an ANSI C compatible C++ procedural interface; and a complete specification for a suite of UNIX-like tools to extract and analyze physical dependencies. Practical design rules, guidelines, and principles are also collected in an appendix and indexed for quick reference.

0201633620B04062001

Specificaties

ISBN13:9780201633627
Taal:Engels
Bindwijze:Paperback

Lezersrecensies

Wees de eerste die een lezersrecensie schrijft!

Inhoudsopgave

<br> <br> Preface. <br> <br> <br> 0. Introduction. <br> <p> </p> <div style="margin-left: 0.2in;"> From C to C++. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Using C++ to Develop Large Projects. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Reuse. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Quality. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Software Development Tools. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Summary. </div> <p></p> <p> I. BASICS. </p> <div style="margin-left: 0.2in;"> 1. Preliminaries. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Multi-File C++ Programs. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> typedef Declarations. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Assert Statements. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> A Few Matters of Style. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Iterators. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Logical Design Notation. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Inheritance versus Layering. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Minimality. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Summary. </div> <p></p> <div style="margin-left: 0.2in;"> 2. Ground Rules. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Overview. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Member Data Access. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> The Global Name Space. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Include Guards. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Redundant Include Guards. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Documentation. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Identifier-Naming Conventions. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Summary. </div> <p></p> <p> II. PHYSICAL DESIGN CONCEPTS. </p> <div style="margin-left: 0.2in;"> 3. Components. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Components versus Classes. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Physical Design Rules. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> The DependsOn Relation. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Implied Dependency. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Extracting Actual Dependencies. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Friendship. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Summary. </div> <p></p> <div style="margin-left: 0.2in;"> 4. Physical Hierarchy. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> A Metaphor for Software Testing. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> A Complex Subsystem. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> The Difficulty in Testing “Good” Interfaces. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Design for Testability. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Testing in Isolation. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Acyclic Physical Dependencies. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Level Numbers. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Hierarchical and Incremental Testing. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Testing a Complex Subsystem. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Testing versus Tested. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Cyclic Physical Dependencies. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Cumulative Component Dependency (CCD). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Physical Design Quality. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Summary. </div> <p></p> <div style="margin-left: 0.2in;"> 5. Levelization. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Some Causes of Cyclic Physical Dependencies. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Escalation. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Demotion. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Opaque Pointers. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Dumb Data. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Redundancy. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Callbacks. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Manager Class. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Factoring. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Escalating Encapsulation. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Summary. </div> <p></p> <div style="margin-left: 0.2in;"> 6. Insulation. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> From Encapsulation to Insulation. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> C++ Constructs and Compile-Time Coupling. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Partial Insulation Techniques. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Total Insulation Techniques. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> The Procedural Interface. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> To Insulate or Not to Insulate. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Summary. </div> <p></p> <div style="margin-left: 0.2in;"> 7. Packages. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> From Components to Packages. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Registered Package Prefixes. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Package Levelization. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Package Insulation. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Package Groups. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> The Release Process. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> The main Program. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Start-Up Time. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Summary. </div> <p></p> <p> III. LOGICAL DESIGN ISSUES. </p> <div style="margin-left: 0.2in;"> 8. Architecting a Component. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Abstractions and Components. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Component Interface Design. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Degrees of Encapsulation. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Auxiliary Implementation Classes. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Summary. </div> <p></p> <div style="margin-left: 0.2in;"> 9. Designing a Function. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Function Specification. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Fundamental Types Used in the Interface. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Special Case Functions. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Summary. </div> <p></p> <div style="margin-left: 0.2in;"> 10. Implementing an Object. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Member Data. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Function Definitions. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Memory Management. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Using C++ Templates in Large Projects. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Summary. </div> <p></p> <div style="margin-left: 0.2in;"> Appendix A. Protocol Hierarchy. </div> <br> <div style="margin-left: 0.2in;"> Appendix B. Implementing an ANSI C-Compatible C++ Interface. </div> <br> <div style="margin-left: 0.2in;"> Appendix C. A Dependency Extractor/Analyzer Package. </div> <br> <div style="margin-left: 0.2in;"> Appendix D. Quick Reference. </div> <br> <div style="margin-left: 0.2in;"> Index. 0201633620T04062001 </div> <br>

Managementboek Top 100

Rubrieken

Populaire producten

    Personen

      Trefwoorden

        Large-Scale C++ Software Design