Open Access
Large scale C++ software design
John Stuart Lakos
- 01 Jan 1996
197
TL;DR: In this article, the authors present an ANSI C-Compatible C++ Interface (CCD) for C++ programs and a Dependency Extractor/Analyzer Package.
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
•Book
Object-Oriented Metrics in Practice
Michele Lanza,Radu Marinescu,Stéphane Ducasse +2 more
- 01 Nov 2005
TL;DR: This is a book that will show you even new to old thing, and when you are really dying of object oriented metrics in practice, just pick this book; it will be right for you.
591
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.