This post originated from an RSS feed registered with .NET Buzz
by Jonathan Crossland.
Original Post: black-box v white-box
Feed Title: Jonathan Crossland Weblog
Feed URL: http://www.jonathancrossland.com/syndication.axd
Feed Description: Design, Frameworks, Patterns and Idioms
A Framework is said to have matured when the move from white-box to black-box is made.
Lately, I have been thinking alot about this notion of Framework evolution, as I am involved in another Framework.
White-Box suggests class inheritance, which basically means that the Framework provides extensibility from "Design-Time".
That is you have to code, a concrete implementation for an abstract class, and the Framework calls you.
I can't remember where I read the phrase "architecture driven framework", but this is also associated with a white-box implementation,
as further emphasizes the fact that the Framework provides a means for your extensibility to occur via architectural means.
Black-Box suggests composition, as well as data or config driven. A Black-box implementation is extensible in "Run-Time", by configuring metadata.
Black-Box is often referred to as the best approach. Also, therefore a black-box Framework implementation is considered to be more matured.
I am not so sure about the assumption thats made about maturity, because of the known established Frameworks that are out there.
The .NET Framework is pretty stable, and delivers a lot of power to us developers, and it is pretty gray.
Is it the balance of ? Is a Framework better if it is more black than white ?
Consider a Library and what is is. A good library may offer objects and members that can be called to do various functions.
I know that in this case, Black-Box seems to be better. The black-box Library takes away the complexities that white-box implementations have.
Therefore it is a preferred method for Libraries. However, a Library is not a Framework.
So what makes a Framework?
One or more definitions, akin a Framework to a foundation on which you build. Definitions also heavily include abstract classes and members.
If the definitions include so much emphasis on white-box descriptions, why is it better to have a Black-Box Framework?
Does it not then loose its identity and all that it was originally described as?
A Framework - basic white-box definitions:
. a merging of various Design Patterns (composite of patterns).
. a form of architecture
. an abstract version of the problem Domain
. abstract classes, Hotspots, Template methods and hooks
. controls flow (semi-transparently)
. other
A Framework - basic black-box definitions:
. controls flow (hidden, or configurable)
. composition of objects
. other
So far I am thinking that a mature framework is perhaps 80/20 to white-box extensibility.