0% found this document useful (0 votes)
129 views

Software Framework - Wikipedia, The Free Encyclopedia

Uploaded by

Rabin Koirala
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
129 views

Software Framework - Wikipedia, The Free Encyclopedia

Uploaded by

Rabin Koirala
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Software framework - Wikipedia, the free encyclopedia http://en.wikipedia.

org/wiki/Software_framework

Software framework
From Wikipedia, the free encyclopedia

In computer programming, a software framework is an abstraction in which software providing generic


functionality can be selectively changed by user code [clarify], thus providing application specific software. A
software framework is a universal, reusable software platform used to develop applications, products and
solutions. Software frameworks include support programs, compilers, code libraries, an application programming
interface (API) and tool sets that bring together all the different components to enable development of a project
or solution.

Frameworks contain key distinguishing features that separate them from normal libraries:

1. inversion of control - In a framework, unlike in libraries or normal user applications, the overall
program's flow of control is not dictated by the caller, but by the framework.[1]
2. default behavior - A framework has a default behavior. This default behavior must actually be some
useful behavior and not a series of no-ops.
3. extensibility - A framework can be extended by the user usually by selective overriding or specialized by
user code to provide specific functionality.
4. non-modifiable framework code - The framework code, in general, is not allowed to be modified,
excepting extensibility. Users can extend the framework, but not modify its code.

Contents
1 Rationale
2 Examples
3 Architecture
4 See also
5 References
6 External links

Rationale
The designers of software frameworks aim to facilitate software development by allowing designers and
programmers to devote their time to meeting software requirements rather than dealing with the more standard
low-level details of providing a working system, thereby reducing overall development time.[2] For example, a
team using a web application framework to develop a banking web-site can focus on writing code particular to
banking rather than the mechanics of request handling and state management.

Frameworks often add to the size of programs, a phenomenon termed "code bloat". Due to customer-demand
driven applications needs, both competing and complementary frameworks sometimes end up in a product.
Further, due to the complexity of their APIs, the intended reduction in overall development time may not be
achieved due to the need to spend additional time learning to use the framework; this criticism is clearly valid
when a special or new framework is first encountered by development staff.[citation needed] If such a framework
is not used in subsequent job taskings, the time invested in learning the framework can cost more than purpose-
written code familiar to the project's staff; many programmers keep copies of useful boilerplate for common

1 of 4 12/8/2012 9:54 PM
Software framework - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Software_framework

needs.

However, once a framework is learned, future projects can be faster and easier to complete; the concept of a
framework is to make a one-size-fits-all solution set, and with familiarity, code production should logically rise.
There are no such claims made about the size of the code eventually bundled with the output product, nor its
relative efficiency and conciseness. Using any library solution necessarily pulls in extras and unused extraneous
assets unless the software is a compiler-object linker making a tight (small, wholly controlled, and specified)
executable module.

The issue continues, but a decade-plus of industry experience[citation needed] has shown that the most effective
frameworks turn out to be those that evolve from re-factoring the common code of the enterprise, instead of
using a generic "one-size-fits-all" framework developed by third parties for general purposes. An example of
that would be how the user interface in such an application package as an office suite grows to have common
look, feel and data sharing attributes and methods as the once disparate bundled applications grow unified;
hopefully a suite which is tighter and smaller as the newer evolved one can be a product sharing integral utility
libraries and user interfaces.

This trend in the controversy brings up an important issue about frameworks. Creating a framework that is
elegant, versus one that merely solves a problem, is still an art rather than a science. "Software elegance" implies
clarity, conciseness, and little waste (extra or extraneous functionality, much of which is user defined). For those
frameworks that generate code, for example, "elegance" would imply the creation of code that is clean and
comprehensible to a reasonably knowledgeable programmer (and which is therefore readily modifiable), versus
one that merely generates correct code. The elegance issue is why relatively few software frameworks have
stood the test of time: the best frameworks have been able to evolve gracefully as the underlying technology on
which they were built advanced. Even there, having evolved, many such packages will retain legacy capabilities
bloating the final software as otherwise replaced methods have been retained in parallel with the newer
methods.

Examples
Software frameworks typically contain 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[3][4]


Compilers for different programming languages and target machines.[5]
Financial modeling applications[6]
Earth system modeling applications[7]
Decision support systems[8]
Media playback and authoring
Web applications
Middleware
High performance scientific computing

Architecture
According to Pree,[9] software frameworks consist of frozen spots and hot spots. 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. Hot spots represent those parts

2 of 4 12/8/2012 9:54 PM
Software framework - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Software_framework

where the programmers using the framework add their own code to add the functionality specific to their own
project.

In an object-oriented environment, a framework consists of abstract and concrete classes. Instantiation of such a
framework consists of composing and subclassing the existing classes.[10]

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: "Don't call us, we'll call you."[11] 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 abstract methods.

See also
Application framework
Class (computer science)
Design pattern (computer science)
Don't repeat yourself
Enterprise Architecture framework
Implicit invocation
Programming paradigm
Web application framework

References
1. ^ Riehle, Dirk (2000), Framework Design: A Role Modeling Approach (http://www.riehle.org/computer-science
/research/dissertation/diss-a4.pdf) , Swiss Federal Institute of Technology, http://www.riehle.org/computer-science
/research/dissertation/diss-a4.pdf
2. ^ "Framework" (http://docforge.com/wiki/Framework) . DocForge. http://docforge.com/wiki/Framework. Retrieved
15 December 2008.
3. ^ Vlissides, J M; Linton, M A (1990), "Unidraw: a framework for building domain-specific graphical editors", ACM
Transactions of Information Systems 8 (3): 237–268, doi:10.1145/98188.98197 (http://dx.doi.org
/10.1145%2F98188.98197)
4. ^ Johnson, R E (1992), "Documenting frameworks using patterns", Proceedings of the Conference on Object
Oriented Programming Systems Languages and Applications (ACM Press): 63–76
5. ^ Johnson, R E; McConnell, C; Lake, M J (1992), Giegerich, R; Graham, S L, eds., "The RTL system: a framework
for code optimization", Proceedings of the International workshop on code generation (Springer-Verlag): 255–274
6. ^ Birrer, A; Eggenschwiler, T (1993), Frameworks in the financial engineering domain: an experience report,
Springer-Verlag, pp. 21–35
7. ^ Hill, C; DeLuca, C; Balaji, V; Suarez, M; da Silva, A (2004), "Architecture of the Earth System Modeling
Framework (ESMF)", Computing in Science and Engineering: 18–28
8. ^ Gachet, A (2003), "Software Frameworks for Developing Decision Support Systems - A New Component in the
Classification of DSS Development Tools", Journal of Decision Systems 12 (3): 271–281
9. ^ Pree, W (1994), "Meta Patterns: A Means for Capturing the Essentials of Reusable Object-Oriented Design",
Proceedings of the 8th European Conference on Object-Oriented Programming (Springer-Verlag): 150–162
10. ^ Buschmann, F (1996), Pattern-Oriented Software Architecture Volume 1: A System of Patterns. Chichester,
Wiley, ISBN 0-471-95869-7
11. ^ Larman, C (2001), Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the
Unified Process (2nd ed.), Prentice Hall, ISBN 0-13-092569-1

3 of 4 12/8/2012 9:54 PM
Software framework - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Software_framework

External links
Retrieved from "http://en.wikipedia.org/w/index.php?title=Software_framework&oldid=524232123"
Categories: Software architecture Object-oriented programming Software design patterns

Navigation menu

This page was last modified on 21 November 2012 at 19:02.


Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may
apply. See Terms of Use for details.
Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.

4 of 4 12/8/2012 9:54 PM

You might also like