Software framework

A framework (English for frame structure ) is a programming framework, which is used in software engineering, particularly in the context of object-oriented software development as well as component-based development approaches. In a more general sense and not as dezidiertes software product, is denoted by Framework also a regulatory framework.


A framework itself is not a finished program, but provides the framework that created within which the programmer an application, where the structure of the individual application is influenced inter alia by the design patterns used in the framework. For example, support the Microsoft Foundation Classes, the Model-View- Controller pattern.

So Ralph E. Johnson and Brian Foote described already in 1988 in the article "Designing Reusable Classes " ( "Journal of Object-Oriented Programming " ), a framework as follows:

Thus, a framework is usually before the application architecture. In this case, an inversion of control ( inversion of control ) takes place: The programmer registered specific implementations, which are then controlled and used by the framework rather than - only to use classes and functions - such as in a class library. If the Register of concrete classes not firmly rooted in the program code, but configured from the "outside ," as it is also called Dependency Injection.

A framework defines in particular the control flow of the application and the interfaces for the concrete classes that need to be created and registered by the programmer. Frameworks are therefore generally with the aim of re-use " architectural pattern " developed and used. Since such patterns can not be designed without the consideration of a specific application domain, frameworks are usually domain-specific, or at least limited to a particular type of application. Examples are frameworks for graphical editors, accounting systems or shops on the World Wide Web.

A generally accepted definition of frameworks there is not due to the high number of diversities. Often the term is so misused, so that for example an ordinary class collections are incorrectly declared as a framework. This also stems from the notion that now occupies a relatively high value in the information technology and can be misused by a lack absolute definition.

White-box and black-box frameworks

The black-box and white-box abstraction refers to the visibility of an implementation behind the interface. In an ideal black-box abstraction clients know any details, which are located behind the interface and their specifications. In a white-box abstraction, the interface can still enforce and limit the encapsulation of what the client can do, even though the implementation allows the heirs of substantial interference. Anyway, the implementation of a whitebox is fully available and can therefore be studied to better understand the lies beneath what constitutes the abstraction. ( Some authors maintain a distinction between White Boxes and glass boxes, with the Whitebox allows the manipulation of the implementation and Glass Boxes only studying the implementation. )

Framework types

Frameworks can moreover be subdivided as follows (in part no strict division ):

Known frameworks

Due to the imprecise definition and different use of the term "framework" inclusion or exclusion with respect to the following list in many cases is not clear.

  • . NET Framework from Microsoft
  • 1C: Enterprise
  • ACE
  • Adobe Flex
  • Banshee ( web framework )
  • Bootstrap Framework from Twitter
  • Cocoa
  • CakePHP
  • Django ( Framework)
  • Drupal
  • Eclipse Rich Client Platform
  • TYPO3 flow
  • Grails
  • Hamlets
  • Horde ( Framework)
  • Java Server Faces
  • jQuery
  • JBoss Seam
  • JHotDraw
  • JUnit
  • MFC - Application Framework from Microsoft
  • OpenIDE RCP
  • Robot Framework
  • Ruby on Rails
  • Selenium
  • Spring ( Framework)
  • Struts
  • Symfony
  • Visual Component Library ( VCL) - component library of Borland
  • WoltLab Community Framework ( WCF) - PHP Framework
  • YAML ( Framework) CSS framework
  • Yii
  • Zend Framework