In RalphJohnson and BrianFoote's paper, Designing Reusable Classes [http://www.laputan.org/drc/drc.html], they state:
To me, this rings well with what we're calling a ComponentFramework. The protocols we are dealing with are AbstractInteractions communicated via interfaces. And of course BypassingAbstractions is an important theme we see in the context resulting from LayeredFrameworks where black-box frameworks are layered above other lower-level software frameworks.
See ComponentFramework or ComponentFrameworkDefinition for relevant discussions.
See also WhiteBoxFramework.