Open AccessBook
Large-Scale C ++ Software Design
John Stuart Lakos
- 01 Oct 2014
213
TL;DR: This book discusses using C++ Templates in Large Projects using an ANSI C-Compatible C++ Interface, and the difficulty in Testing "Good" Interfaces, and Design for Testability.
read more
Abstract: Preface. 0. Introduction. From C to C++. Using C++ to Develop Large Projects. Reuse. Quality. Software Development Tools. Summary. I. BASICS. 1. Preliminaries. Multi-File C++ Programs. typedef Declarations. Assert Statements. A Few Matters of Style. Iterators. Logical Design Notation. Inheritance versus Layering. Minimality. Summary. 2. Ground Rules. Overview. Member Data Access. The Global Name Space. Include Guards. Redundant Include Guards. Documentation. Identifier-Naming Conventions. Summary. II. PHYSICAL DESIGN CONCEPTS. 3. Components. Components versus Classes. Physical Design Rules. The DependsOn Relation. Implied Dependency. Extracting Actual Dependencies. Friendship. Summary. 4. Physical Hierarchy. A Metaphor for Software Testing. A Complex Subsystem. The Difficulty in Testing "Good" Interfaces. Design for Testability. Testing in Isolation. Acyclic Physical Dependencies. Level Numbers. Hierarchical and Incremental Testing. Testing a Complex Subsystem. Testing versus Tested. Cyclic Physical Dependencies. Cumulative Component Dependency (CCD). Physical Design Quality. Summary. 5. Levelization. Some Causes of Cyclic Physical Dependencies. Escalation. Demotion. Opaque Pointers. Dumb Data. Redundancy. Callbacks. Manager Class. Factoring. Escalating Encapsulation. Summary. 6. Insulation. From Encapsulation to Insulation. C++ Constructs and Compile-Time Coupling. Partial Insulation Techniques. Total Insulation Techniques. The Procedural Interface. To Insulate or Not to Insulate. Summary. 7. Packages. From Components to Packages. Registered Package Prefixes. Package Levelization. Package Insulation. Package Groups. The Release Process. The main Program. Start-Up Time. Summary. III. LOGICAL DESIGN ISSUES. 8. Architecting a Component. Abstractions and Components. Component Interface Design. Degrees of Encapsulation. Auxiliary Implementation Classes. Summary. 9. Designing a Function. Function Specification. Fundamental Types Used in the Interface. Special Case Functions. Summary. 10. Implementing an Object. Member Data. Function Definitions. Memory Management. Using C++ Templates in Large Projects. Summary. Appendix A. Protocol Hierarchy. Appendix B. Implementing an ANSI C-Compatible C++ Interface. Appendix C. A Dependency Extractor/Analyzer Package. Appendix D. Quick Reference. Index. 0201633620T04062001
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
The New C Standard (Excerpted material) An Economic and Cultural Commentary
Derek M. Jones
- 01 Jan 2008
TL;DR: Form of Control Expression % Abstract Form of control Expression % others 32.4 Selection statements 1740 selection-statements Fu nc tio n de fin iti on s 1 10 100 1,000 10,000 0 25 50 75 100 × × if • • else switch × × ××××–×–––× × ×–– ×× ×–××
389
On the design of CGAL a computational geometry algorithms library
TL;DR: The major design goals for CGAL are correctness, flexibility, ease‐of‐use, efficiency, and robustness, and the approach to reach these goals is presented, and generic programming using templates in C++ plays a central role in the architecture of CGAL.
292
Architecture of Qbox: a scalable first-principles molecular dynamics code
TL;DR: The architecture of Qbox, a parallel, scalable first-principles molecular dynamics (FPMD) code, is described, a C++/ Message Passing Interface implementation of FPMD based on the plane-wave, pseudopotential method for electronic structure calculations.
•Posted Content
Hierarchical Small Worlds in Software Architecture
Sergi Valverde,Ricard V. Solé +1 more
TL;DR: The final outcome of software evolution is a small world, hierarchical class diagram with well-defined statistical properties, irrespective of the specific features of each system analyzed.
Network motifs in computational graphs: A case study in software architecture
TL;DR: It is shown the rules of graph evolution seem to be largely responsible for the observed motif distribution, and several highly frequent network motifs appear to be a consequence of network heterogeneity and size, thus suggesting a somewhat less relevant role of functionality.