All Topics  
Software framework

 

   Email Print
   Bookmark   Link






 

Software framework



 
 
A software framework, in computer programming
Computer programming

Computer programming is the process of writing, testing, debugging/troubleshooting, and maintaining the source code of computer programs. This source code is written in a programming language....
, is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality.

Frameworks are similar to software libraries in that they are reuseable abstractions of code wrapped in a well-defined API
Application programming interface

An application programming interface is a set of subroutine, data structures, class and/or Protocol provided by library and/or operating system Service s in order to support the building of applications....
. Unlike libraries, however, the overall program's flow of control
Control flow

In computer science control flow refers to the order in which the individual statement , Instruction or function calls of an imperative programming or functional programming computer program are execution or evaluated....
 is not dictated by the caller, but by the framework.






Discussion
Ask a question about 'Software framework'
Start a new discussion about 'Software framework'
Answer questions from other users
Full Discussion Forum



Encyclopedia


A software framework, in computer programming
Computer programming

Computer programming is the process of writing, testing, debugging/troubleshooting, and maintaining the source code of computer programs. This source code is written in a programming language....
, is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality.

Frameworks are similar to software libraries in that they are reuseable abstractions of code wrapped in a well-defined API
Application programming interface

An application programming interface is a set of subroutine, data structures, class and/or Protocol provided by library and/or operating system Service s in order to support the building of applications....
. Unlike libraries, however, the overall program's flow of control
Control flow

In computer science control flow refers to the order in which the individual statement , Instruction or function calls of an imperative programming or functional programming computer program are execution or evaluated....
 is not dictated by the caller, but by the framework. This inversion of control
Inversion of Control

Inversion of Control, or IoC, is an abstract principle describing an aspect of some software architecture designs in which the control flow of a system is inverted in comparison to the traditional architecture of Library ....
 is the distinguishing feature of software frameworks.

Rationale


The designers of software frameworks aim to facilitate software development by allowing designers and programmers to spend more time on meeting software requirements rather than dealing with the more standard low-level details of providing a working system. For example, a team using a web application framework
Web application framework

A web application framework is a software framework that is designed to support the web development of Dynamic web page, Web applications and Web services....
 to develop a banking web site can focus on the operations of account withdrawals rather than the mechanics of request handling and state management. However, some developers complain that frameworks add to "code bloat
Code bloat

Code bloat is the production of code that is perceived as unnecessarily long, slow, or otherwise wasteful of resources.Code bloat can also be caused by inadequacies in the language in which the code is written, or inadequacies in the compiler used to compile the language....
", and that due to competing and complementary frameworks and the complexity of their APIs, one often trades time spent on rote programming and design for time spent learning to use the framework.

Having a good framework in place allows developers to spend more time concentrating on the business-specific problem at hand rather than on the "plumbing" code behind it. Also a framework will limit choice
Choice

Choice consists of the mental function of thinking involved with the process of judgment the merits of multiple wikt:options and wikt:selecting one of them for action....
s during development, so it increases productivity
Productivity

Productivity in economics refers to metrics and measures of output from production processes, per unit of input. Labor productivity, for example, is typically measured as a ratio of output per labor-hour, an input....
, especially in large and complex systems.

Examples


Software frameworks typically contain a considerable housekeeping and utility code in order to help bootstrap user applications, but generally focus on specific problem domains, such as:
  • Artistic drawing, music composition, and mechanical CAD
  • Compiler
    Compiler

    A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
    s for different programming language
    Programming language

    A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
    s and target machines.
  • Financial modeling applications
  • Decision support systems
  • Media playback and authoring
    Multimedia framework

    A multimedia framework is a software framework that handles Electronic media on a computer and through a network. A good multimedia framework offers an intuitive Application programming interface and a modular architecture to easily add support for new codecs, container formats and Streaming media....
  • Web applications
    Web application framework

    A web application framework is a software framework that is designed to support the web development of Dynamic web page, Web applications and Web services....
  • Middleware
    Middleware

    Middleware is computer software that connects software components or applications. The software consists of a set of enabling services that allow multiple processes running on one or more machines to interact across a network....


Architecture


According to Pree,software frameworks consist of frozen spots and hot spots. On the one hand, frozen spots define the overall architecture of a software system, that is to say its basic components and the relationships between them. These remain unchanged (frozen) in any instantiation of the application framework. On the other hand, hot spots represent those parts where the programmers using the framework add their own code to add the functionality specific to their own project.

Software frameworks define the places in the architecture
Software architecture

The software architecture of a program or computing system is the structure or structures of the software system, which comprise software components, the externally visible properties of those components, and the relationships between them....
 where application programmers may make adaptations for specific functionality—the hot spots.

In an object-oriented environment, a framework consists of abstract and concrete classes
Class (computer science)

In object-oriented programming, a class is a programming language construct that is used as a blueprint to create Object s. This blueprint includes Attribute s and Method s that the created objects all share....
. Instantiation
Instantiation

Instantiation or instance may be*Philosophy:*The first moment of existence of a thing, whether living or not. The concept of the big bang theory, at the instant it happened, represents the instantiation of the universe....
 of such a framework consists of composing
Object composition

In computer science, object composition is a way to Object association simple object s or data types into more complex ones. Compositions are a critical building block of many basic data structures, including the tagged union, the linked list, and the binary tree, as well as the object used in object-oriented programming....
 and subclassing
Subclass (computer science)

In object-oriented programming, a subclass is a class that Inheritance some properties from its superclass .You can usually think of the subclass as being "a kind of" its superclass, as in a "a Manx is a kind of cat", or "a square is a kind of rectangle":...
 the existing classes.

When developing a concrete software system with a software framework, developers utilize the hot spots according to the specific needs and requirements of the system. Software frameworks rely on the Hollywood Principle
Hollywood Principle

In computer programming, the Hollywood Principle is stated as "don't call us, we'll call you." It has applications in software engineering; see also implicit invocation for a related architectural principle....
: "Don't call us, we'll call you." This means that the user-defined classes (for example, new subclasses), receive messages from the predefined framework classes. Developers usually handle this by implementing superclass
Superclass (computer science)

In computer science, a superclass is a class from which other classes are derived. A superclass is also called a parent class. The classes that are derived from a superclass are known as child classes, derived classes, or subclass ....
 abstract methods.

List of general-purpose frameworks


  • BFC
    Base One Foundation Component Library

    The Base One Foundation Component Library is a rapid application development toolkit for building secure, Fault-tolerant system, database applications on Microsoft Windows and ASP.NET....
     is a RAD framework for developing database-centric distributed computing
    Distributed computing

    Distributed computing deals with hardware and software systems containing more than one processing element or Computer data storage element, Concurrent computing processes, or multiple programs, running under a loosely or tightly controlled regime....
     applications in a .NET
    .NET Framework

    The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
     environment.
  • CNI (Compiled Native Interface) is a software framework for the GNU
    GNU

    GNU is a computer operating system composed entirely of free software. Its name is a recursive acronym for GNU's Not Unix; it was chosen because its design is Unix-like, but differs from Unix by being free software and containing no Unix code....
     GCJ compiler
    Compiler

    A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
     which allows Java
    Java (programming language)

    Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
     code to call and be called by native applications (programs specific to a hardware and operating system platform) and libraries written in C++
    C++

    C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
    .
  • Component-based Scalable Logical Architecture
    Component-based Scalable Logical Architecture

    Component-based Scalable Logical Architecture is a software framework created by Rockford Lhotka that provides a standard way to create robust object oriented programs using Business object s....
     (CSLA) is a standard way to create robust object oriented programs using business object
    Business object (computer science)

    Business objects are object oriented in an object oriented computer program that represent the entities in the business domain that the program is designed to support....
    s, implemented using .NET
    .NET Framework

    The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
    .
  • Java Native Interface
    Java Native Interface

    The Java Native Interface is a software framework that allows Java code running in a Java Virtual Machine to call and to be called by native applications and libraries written in other languages, such as C , C++ and assembly language....
     (JNI) allows Java
    Java (programming language)

    Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
     code running in the Java virtual machine
    Java Virtual Machine

    A Java Virtual Machine is a set of computer software programs and data structures which use a virtual machine model for the execution of other computer programs and Scripting language....
     (VM) to call and be called by native applications (programs specific to a hardware
    Hardware

    Hardware is a general term that refers to the physical cultural artifacts of a technology. It may also mean the physical components of a computer system, in the form of computer hardware....
     and operating system
    Operating system

    An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
     platform) and libraries written in other languages, such as C
    C (programming language)

    C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
    , C++
    C++

    C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
     and assembly
    Assembly language

    An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
    .
  • Leonardi
    Leonardi Framework

    Leonardi is an open source, model-driven software framework that allows implementing graphical user interface oriented applications. Leonardi is the copyright of the French ISV Lyria....
     is an open source
    Open source

    Open source is an approach to design, development, and distribution offering practical accessibility to a product's source . Some consider open source as one of various possible design approaches, while others consider it a critical Strategy element of their business operations....
     application framework
    Application framework

    In computer programming, an application framework is a software framework that is used to implement the standard structure of an application software for a specific operating system....
     for GUI
    Gui

    Gui or guee is a generic term to refer to grillinged dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients....
     applications.
  • ActionScript Foundry
    ActionScript Foundry

    ActionScript Foundry is an Open_Source framework. It was created by the ServeBox company. The project contains productivity tools and an ActionScript / Java framework specialised in Flex applications' development....
     is an open source
    Open source

    Open source is an approach to design, development, and distribution offering practical accessibility to a product's source . Some consider open source as one of various possible design approaches, while others consider it a critical Strategy element of their business operations....
     Flex
    Adobe Flex

    Adobe Flex is a collection of technologies released by Adobe Systems for the development and deployment of cross-platform rich Internet applications based on the proprietary Adobe Flash platform....
     framework written in ActionScript 3
    ActionScript

    ActionScript is a scripting language based on ECMAScript. ActionScript is used primarily for the development of websites and software using the Adobe Flash Player platform , but is also used in some database applications , and in basic robotics, as with the Make Controller Kit....
     and Java.
  • Spring is an open source
    Open source

    Open source is an approach to design, development, and distribution offering practical accessibility to a product's source . Some consider open source as one of various possible design approaches, while others consider it a critical Strategy element of their business operations....
     application framework
    Application framework

    In computer programming, an application framework is a software framework that is used to implement the standard structure of an application software for a specific operating system....
     for the Java platform.
  • Symfony
    Symfony

    Symfony is a web application framework written in PHP which follows the model-view-controller paradigm. Released under the MIT license, Symfony is free software....
     is a popular open source
    Open source

    Open source is an approach to design, development, and distribution offering practical accessibility to a product's source . Some consider open source as one of various possible design approaches, while others consider it a critical Strategy element of their business operations....
     application framework
    Application framework

    In computer programming, an application framework is a software framework that is used to implement the standard structure of an application software for a specific operating system....
     for PHP Platform
    PHP

    PHP is a scripting language originally designed for producing dynamic web pages. It has evolved to include a command line interface capability and can be used in Standalone software Graphical user interface....
    .
  • CodeIgniter
    CodeIgniter

    CodeIgniter is an open source web application framework for use in building dynamic web sites with PHP. It enables developers to build applications faster - compared to coding from scratch - by providing a rich set of libraries for commonly needed tasks, as well as a simple interface and a logical structure to access these libraries....
     is a popular open source
    Open source

    Open source is an approach to design, development, and distribution offering practical accessibility to a product's source . Some consider open source as one of various possible design approaches, while others consider it a critical Strategy element of their business operations....
     application framework
    Application framework

    In computer programming, an application framework is a software framework that is used to implement the standard structure of an application software for a specific operating system....
     for PHP Platform
    PHP

    PHP is a scripting language originally designed for producing dynamic web pages. It has evolved to include a command line interface capability and can be used in Standalone software Graphical user interface....
    .
  • Rails
    Ruby on Rails

    Ruby on Rails is an open source web application framework for the Ruby . It is often referred to as "Rails" or "RoR". It is intended to be used with an agile software development, which is often utilized by web developers for its suitability for short, client-driven projects....
     is a libre software
    Free software

    Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
     application framework
    Application framework

    In computer programming, an application framework is a software framework that is used to implement the standard structure of an application software for a specific operating system....
     for the Ruby Platform
    Ruby (programming language)

    Ruby is a dynamic programming language, reflection , general purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features....
    .
  • Zend Framework
    Zend Framework

    Zend Framework is an open source, object-oriented web application framework implemented in PHP 5 and licensed under the New BSD License....
     is a powerful and extensible application framework
    Application framework

    In computer programming, an application framework is a software framework that is used to implement the standard structure of an application software for a specific operating system....
    , with a loosely-coupled component library for PHP Platform
    PHP

    PHP is a scripting language originally designed for producing dynamic web pages. It has evolved to include a command line interface capability and can be used in Standalone software Graphical user interface....
    .
  • Twisted
    Twisted (software)

    Twisted is an event-driven programming computer network programming framework written in Python and licensed under the MIT License.Twisted projects variously support Transmission Control Protocol, User Datagram Protocol, Transport Layer Security, IP Multicast, Unix domain socket#Local sockets/Unix domain sockets, a large number of protocol...
     is an open source event-driven
    Event-driven programming

    In computer programming, event-driven programming or event-based programming is a programming paradigm in which the Program flow is determined by event s — i.e., sensor outputs or user actions or Message passing from other programs or Thread_....
     application framework
    Application framework

    In computer programming, an application framework is a software framework that is used to implement the standard structure of an application software for a specific operating system....
     written in Python
    Python (programming language)

    Python is a general-purpose high-level programming language. Its design philosophy emphasizes code readability. Python's core syntax and semantics are Minimalism , while the standard library is large and comprehensive....
     for developing Internet applications.
  • for .NET
    .NET Framework

    The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
    : A RAD framework for developing business applications using domain driven design and the naked objects
    Naked objects

    Naked objects is an Architectural pattern used in software engineering....
     pattern.
  • is an open source framework for to facilitate software development, multiplatform and cross-browser.


See also


  • Application framework
    Application framework

    In computer programming, an application framework is a software framework that is used to implement the standard structure of an application software for a specific operating system....
  • Class (computer science)
    Class (computer science)

    In object-oriented programming, a class is a programming language construct that is used as a blueprint to create Object s. This blueprint includes Attribute s and Method s that the created objects all share....
  • Don't repeat yourself
    Don't repeat yourself

    Don't Repeat Yourself is a process philosophy aimed at reducing duplication, particularly in computing. The philosophy emphasizes that information should not be duplicated, because duplication increases the difficulty of change, may decrease clarity, and leads to opportunities for inconsistency....
  • Enterprise Architecture framework
  • Implicit invocation
    Implicit invocation

    Implicit invocation is a term used by some authors for a style of software architecture in which a system is structured around event handling, using a form of Callback ....
  • Jini
    Jini

    Jini is a network architecture for the construction of distributed systems in the form of modular co-operating services.Originally developed by Sun Microsystems, responsibility for Jini is being transferred to Apache Software Foundation under the project name ....
     | Upnp
    Universal Plug and Play

    Universal Plug and Play is a set of computer Protocol promulgated by the UPnP Forum.The goals of UPnP are to allow Peripheral devices to connect seamlessly and to simplify the implementation of computer network in the home and in corporate environments for simplified installation of computer components....
     | Salutation
    Salutation (computing)

    Salutation in computing is a wikt:technique for service discovery and service management....
     which have been called coordination frameworks.
  • Object-oriented programming
    Object-oriented programming

    Object-oriented programming is a programming paradigm that uses "Object_" and their interactions to design applications and computer programs....
  • Web application framework
    Web application framework

    A web application framework is a software framework that is designed to support the web development of Dynamic web page, Web applications and Web services....


External links