Send As SMS

The Charette Project
Saturday, March 29, 2003
 
Does generative programming work with large-scale C++ software development?

As a software architect and software development manager of large C++ projects, I have found John Lakos's book Large Scale C++ Software Design to be required reading for anyone building large C++ projects. One of the principles of the book is to build classes whose external interfaces are subject to infrequent change. Using techniques such as full and partial encapsulation, and the pImpl idiom, this can be achieved. The result is reduced compile-time dependencies.

More recently, Kryzsztof Czarnecki and Ulrich W. Eisenecker wrote Generative Programming. This book describes the use of C++ templates in a very interesting and novel approach to make sofware that is generated rather than built. Since this approach relies on C++ templates, which are typically defined in C++ header files, it breaks the encapsulation principles espoused in Lakos's book. What I have found is that when I use generative programming techniques, I have to build less encapsulated code.

Has anyone successfully applied generative programming concepts to large-scale C++ projects? If you have, I would be very interested in hearing from you. Please post your response here.
 
The Charette Project Website

In architecture, a charette is a quick design process.

My Photo
Name:Michael Scherotter
Location:Fairfax, California, United States

I was educated as an architect but I found my passion in software architecture and development. Many skills that I have learned in my architectural education have enabled me to excel at designing, building, and explaining software systems:

  • The ability to change scales and my point of view from the micro to the macro.
  • The ability to think in three dimensions and draw what I am visualizing.
  • The ability to organize and manage complex projects and systems.
  • Lateral thinking and creative problem solving.

ARCHIVES
04/01/2002 - 04/30/2002 / 05/01/2002 - 05/31/2002 / 06/01/2002 - 06/30/2002 / 03/01/2003 - 03/31/2003 / 09/01/2004 - 09/30/2004 / 02/01/2005 - 02/28/2005 / 03/01/2005 - 03/31/2005 / 04/01/2005 - 04/30/2005 / 05/01/2005 - 05/31/2005 / 06/01/2005 - 06/30/2005 / 07/01/2005 - 07/31/2005 / 08/01/2005 - 08/31/2005 / 01/01/2006 - 01/31/2006 / 07/01/2006 - 07/31/2006 / 08/01/2006 - 08/31/2006 / 10/01/2006 - 10/31/2006 / 11/01/2006 - 11/30/2006 /


Powered by Blogger The Mindjet Blog: Think Together. Work Together. Map Together.