A template for the development of software applications or components. Frameworks provide an outline for the software’s structure in the form of objects that not only themselves provide basic functionality but also integrate with each other. Developers build on this to implement their projects’ specific functionality by deriving their own objects via inheritance. Frameworks thus consist of at least a comprehensive set of such objects; other facilities, such as programming languages and a runtime environment, may also be provided.