Skip to Content
Large-Scale C++ LiveLessons—Workshop: Applied Hierarchical Reuse Using Bloomberg's Foundation Libraries
on-demand course

Large-Scale C++ LiveLessons—Workshop: Applied Hierarchical Reuse Using Bloomberg's Foundation Libraries

with John Lakos
December 2014
Intermediate to advanced
5h 30m
English
Pearson
Closed Captioning available in English, Japanese, Korean, Chinese (Simplified), Chinese (Traditional)

Overview

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 files and libraries). He explains the pitfalls of ignoring the relationship between these two dimensions of software engineering and presents a set of principles and specific rules for the creation of components, packages (of components), and package groups (organization that supports the creation of highly reusable software).

Lesson 3: Design and Implementation
In the third part of this talk, John explores many aspects of implementing high quality software. He describes categorization of classes that enable users to solve application problems in terms of well-understood, standard types (a form of design pattern). Chief among these well-known types is the  value-semantic type. The author’s exploration of design-by-contract shows how defining  narrow contracts for our interfaces (i.e., contracts that allow for undefined behavior in some circumstances) make possible defensive programing techniques that help achieve correctness during development while avoiding needless checks in production. Finally, he shows documentation rules that have been applied rigorously and effectively over a very large and diverse set of libraries.

Lesson 4: Verification and Testing
The fourth part of this talk shows how organization of software into components that have no cyclic dependencies, all written to very clearly defined contracts, provides us with software units that are amenable to extremely comprehensive, scalable testing. Moreover, levelization reappears as a way to organize the testing of the many methods of individual classes.

Lesson 5: The Bloomberg Development (BDE)
The final part of this talk shows that the principles and rules presented in the first parts are not mere philosophical ideals but have been used to create the BDE libraries, foundation software for a major commercial enterprise. A portion of BDE is now available as open source, so this part provides a brief introduction to facilities that are available for reuse and study.

About LiveLessons Video Training
LiveLessons Video Training series publishes hundreds of hands-on, expert-led video tutorials covering a wide selection of technology topics designed to teach you the skills you need to succeed. This professional and personal technology video series features world-leading author instructors published by your trusted technology brands: Addison-Wesley, Cisco Press, IBM Press, Pearson IT Certification, Prentice Hall, Sams, and Que. Topics include IT Certification, Programming, Web Development, Mobile Development, Home and Office Technologies, Business and Management, and more. View all LiveLessons on InformIT at:  http://www.informit.com/livelessons

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Watch now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

C++ 20 (2a) New Features

C++ 20 (2a) New Features

Daniel Zawadzki
packetC Programming

packetC Programming

Peder Jungck, Ralph Duncan, Dwight Mulcahy

Publisher Resources

ISBN: 9780134049731