CppCon 2016: John Lakos “Advanced Levelization Techniques (part 2 of 3)'

preview_player
Показать описание


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, one also needs 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. In this talk we begin by briefly reviewing the basics of physical design. We then present a variety of levelization and Insulation techniques, and apply them in present-day, real-word examples to avoid cyclic, excessive, or otherwise inappropriate dependencies. Along the way, we comment on how to make the best use of what the C++ language has to offer.

John Lakos
Bloomberg LP
Software Infrastructure Manager
John Lakos, author of "Large Scale C++ Software Design.", serves at Bloomberg LP in New York City as a senior architect and mentor for C++ Software Development world-wide. He is also an active voting member of the C++ Standards Committee, Library Working Group. Previously, Dr. Lakos directed the design and development of infrastructure libraries for proprietary analytic financial applications at Bear Stearns. For 12 years prior, Dr. Lakos developed large frameworks and advanced ICCAD applications at Mentor Graphics, for which he holds multiple software patents. His academic credentials include a Ph.D. in Computer Science ('97) and an Sc.D. in Electrical Engineering ('89) from Columbia University. Dr. Lakos received his undergraduate degrees from MIT in Mathematics ('82) and Computer Science ('81). His next book, entitled "Large-Scale C++, Volume I: Process and Architecture", is anticipated in 2014.


*-----*
*--*
*-----*
Рекомендации по теме
Комментарии
Автор

All of a sudden some funny parts of the syntax used in the Boost Graph Library make perfect sense

daggawagga
Автор

The callback:protocol is actually Dendency Inversion technique

thongphamvan
Автор

Better still:
Have all fore-definitions covered by means of explicitly included headers, e.g. below.
Define a common-header file workforce.h including both data-structures/classes of
employee and manager, thus making them siblings - without header-inclusion loops.
Neither calls functions (thus not instantiates) any of the other,
thus neither implementation depends on the other.
Include this common-header in all 3: employee, manager and client.
Client runs all the pertinent algorithms.

zofe
Автор

@ 23:02: "On the subject of demotion, not a c++ context, but if you haven't heart the story of but add dot io..." I'm thinking I have some of the last words wrong, can't find anything on this, and wonder what was so funny.

royarl
Автор

"...now, you can imagine, my head explodes. This is crazy talk..." lol

RishiKhaneja