A framework is the design of an application or subsystem expressed as a set of abstract classes and the way objects in those classes collaborate. Users build applications using a framework by creating subclasses, configuring objects together, and modifying examples. Frameworks invert control so the reused code calls the user's code. Parts of a framework application include new classes and a script that creates, connects, and parameterizes components.