Sumario: | Understanding Applied Hierarchical Reuse is the gateway to achieving dramatic practical productivity gains for any enterprise engaged in large-scale C++ software development, spanning many versions of many products maintained over a substantial period of time. Description In this video training, John Lakos surveys problems associated with very large scale C++ development, and the cohesive techniques to address those problems, culminating in a proven component-based methodology refined through his practical experience at Bloomberg. The real-world application of this methodology—including three levels of aggregation, acyclic dependencies, nominal cohesion, fine-grained factoring, class categories, narrow contracts, and thorough component-level testing—will be demonstrated using the recently released open-source distribution of Bloomberg’s foundation libraries. After watching the video, viewers will be in an excellent position to selectively delve deeper into the various separate aspects of this comprehensive development methodology. Skill Level • Intermediate • Advanced Topics Covered • Hierarchical Reuse • Sound Physical Design • Components, Packages, and Package Groups • Logical/Physical Synergy • Value Semantics • (Unique) Vocabulary Types • Design by Contract (DbC) • Defensive Programming • Component-Level Test Drivers • Peer Review • Static Analysis Tools • (Customizable) Defensive Checks • Fully Factored Solutions Who Should Take This Course • Enterprise Architects, Team Leads, and Senior Software Developers looking to better understand how to organize and package their software to achieve more efficient, firm-wide (hierarchical) reuse. Course Requirements • Some familiarity with developing fairly large software systems. • A good (but not necessarily expert) understanding of the C/C++ family of programming languages. Lesson 1: Goals In the first part of this talk, John distinguishes between fine-grained, hierarchical software reuse with the software reuse that is typical of our industry. He also compares the cost of creating highly reusable software (which has very high standards of design, implementation, documentation, and verification) to the benefits of that investment. Lesson 2: Process and Architecture In the second part of this talk, John differentiates between the logical design of software (in brief, the partitioning of software into classes and functions) and the physical design of software (the partitioning of software into fi...
|