Generic programming can be defined as "programming with concepts," where a concept is defined as a family of abstractions that are all related by a common set of requirements. A large part of the activity of generic programming, particularly in the design of generic software components, consists of concept development--identifying sets of requirements that are general enough to be met by a large family of abstractions but still restrictive enough that programs can be written that work efficiently with all members of the family. The importance of STL lies more in its concepts than in the actual code or the details of its interfaces. Currently the most thorough development and exposition of the STL concepts is the Silicon Graphics Inc. STL web site, where the STL container and iterator concepts are especially well developed and documented. This web site is an example of what might be called a "concept web," because many of the pages contain concept definitions and the most important links between pages are those that express concept refinement.
See also Formalization, where some of the projects deal with concept development in a more formal setting than concept webs.