Skip to content
Main menu
  • Main page
  • Discover
  • Unexpected connections
  • Topics
  • Random article
  • Search
Your library
  • Saved articles
  • Recent discoveries
  • Rabbit-hole trails
Topic areas
  • Computer Science
  • Mathematics
  • Physics
  • Engineering
  • Biology
  • Economics
  • Curiosities
WikiholeDeeper into Wikipedia
EnglishEN
  • Saved
  • History

  • Article text and media come live from Wikipedia via the official MediaWiki API and are available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. Each article links to its source and revision.
  • WikiHole is an independent project and is not affiliated with the Wikimedia Foundation.
  • How ranking works
  • All topics
  • Reading history
  • Random article
  • MediaWiki API

Software framework

  • Article
  • Rabbit hole
  • Read
  • View history
Tools
Actions
  • Read
  • View history
General
  • Recent changes
  • Related articles
  • Random discovery
This article
Reading time
4 min
Topic
Computer Science
Quality
Start-class
Views
1.2k in 14 days
Last edited
27 Sept 2026
Print/export
  • Printable version
In other projects
  • Wikidata item
From Wikipedia, the free encyclopedia
Rabbit hole:
  1. Software framework

In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard way to build and deploy applications and is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate the development of software applications, products and solutions. Software frameworks may include support programs, compilers, code libraries, toolsets, and application programming interfaces (APIs) that bring together all the different components to enable development of a project or system.

"Framework (computer science)" redirects here. For other uses, see Framework (disambiguation).

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

  • inversion of control: In a framework, unlike in libraries or in standard user applications, the overall program's is not dictated by the caller, but by the framework. This is usually achieved with the .
flow of control
1
Template Method Pattern
  • default behaviour: This can be provided with the invariant methods of the Template Method Pattern in an abstract class which is provided by the framework.
  • extensibility: A user can extend the framework – usually by selective overriding – or programmers can add specialized user code to provide specific functionality. This is usually achieved by a hook method in a subclass that overrides a template method in the superclass.
  • non-modifiable framework code: The framework code, in general, is not supposed to be modified, while accepting user-implemented extensions. In other words, users can extend the framework, but cannot modify its code.
  • Loading the rest of the article…

    Recent changes

    Rabbit hole

    Where Software framework leads. Every connection below has a source: a link in this article, a shared Wikipedia category, or CirrusSearch text similarity. Articles already on your trail are left out.

    Contents
    • (Top)
    • Comparison with libraries
    • Pattern
    • Tradeoffs
    • Examples
    • See also
    • References
    • External links
    • Recent changes
    • Rabbit hole
    Contents
    Contents9 sections
    • (Top)
    • Comparison with libraries
    • Pattern
    • Tradeoffs
    • Examples
    • See also
    • References
    • External links
    • Recent changes
    • Rabbit hole
    Categories:
    • Software frameworks
    • Object-oriented programming
    • Software architecture

    850 words · 11 references · revision 1376975115 · CC BY-SA 4.0

    General
    • Recent changes
    • Related articles
    • Random discovery
    This article
    Reading time
    4 min
    Topic
    Computer Science
    Quality
    Start-class
    Views
    1.2k in 14 days
    Last edited
    27 Sept 2026

    Key concepts

    • Template method pattern4
    • Inversion of control2
    • Extensibility2
    • Open/closed principle2
    • Computer programming1
    • Abstraction (computer science)1
    • Software1
    • Software environment (disambiguation)1
    • Software platform1
    • Software application1

    The articles this one links to most, weighted towards the introduction.

    Print/export
    • Printable version
    In other projects
    • Wikidata item

    Comparison with libraries

    Software frameworks differ from standard libraries in key ways:

    • Inversion of control: In a library, user code controls the program's flow and calls library functions as needed. In a framework, the framework controls the flow and calls user code at specific points, often via the Template Method Pattern.
    • Default behaviour: Frameworks provide pre-implemented functionality (e.g., standard features or workflows) that can be used as-is or customized within a predefined structure. Libraries, by contrast, require user code to assemble and configure functionality.
    • Structured extensibility: Frameworks enable new features or altered behaviour through structured mechanisms such as hooks, callbacks, or APIs. Libraries allow extensibility but without predefined integration points, relying on user code for integration.
    • Open-closed principle: The framework's core logic is generally fixed, allowing extensions (e.g., plugins or subclasses) but not modification of the framework itself.

    Pattern

    According to Pree,2 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 the parts where the programmers using the framework add their own code to add the functionality specific to their own project.

    The necessary functionality can be implemented by using the Template Method Pattern in which the frozen spots are known as invariant methods and the hot spots are known as variant or hook methods. The invariant methods in the superclass provide default behaviour while the hook methods in each subclass provide custom behaviour.

    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."34 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.

    Tradeoffs

    One potential downside of using a framework is that it adds to the size of a program, a phenomenon termed code bloat. This can be exacerbated by using multiple, sometimes competing, frameworks in the same codebase.

    Learning how to use a framework can be substantial. The intended efficiencies of using the framework may be outweighed by the cost to learn it, especially for a framework that is new to the development staff.5 However, once a framework is learned, development team speed may increase for future work. Learning how to use a framework can be substantial. The intended efficiencies of using the framework may be outweighed by the cost of learning it, especially for a framework that is new to the development staff.[5] However, once a framework is learned, development team speed may increase for future work.

    Some claim that the most effective frameworks evolve from re-factoring an existing solution, such as a generic one-size-fits-all framework developed by third parties for general purposes, rather than from green-field development.

    Recently, Microsoft Research launched an open-source project that covers software engineering, web navigation, and personal assistant tasks, with training data and evaluation methods available to researchers.6

    Examples

    A framework generally focuses on a specific problem domain, including:

    • Artistic drawing, music composition, and mechanical CAD78
    • Financial modeling applications9
    • Earth system modeling applications10
    • Decision support systems11
    • Media playback and authoring
    • Web framework
    • Middleware
    • Application framework – General GUI applications
    • Enterprise Architecture framework

    Some notable frameworks:

    • Cactus Framework – High performance scientific computing
    • Oracle Application Development Framework
    • Laravel (PHP Framework)
    • Pipedream
    • Php4delphi
    • Vue Native
    • OpenSilver - enables legacy applications based on Microsoft Silverlight, , and to be ported into applications

    See also

    • Class (computer programming) – Computer programming structure used to create objectsPages displaying short descriptions of redirect targets
    • Don't repeat yourself – Principle of software development
    • Implicit invocation
    • Software design pattern – Reusable solution template to a commonly-needed software behavior
    • Software engine – Core component of a complex software system
    • Software platform – Environment in which a piece of software is executedPages displaying short descriptions of redirect targets

    References

    1. 1Riehle, Dirk (2000), Framework Design: A Role Modeling Approach (PDF), Swiss Federal Institute of Technology
    2. 2Pree, 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, Lecture Notes in Computer Science, vol. 821, Springer-Verlag, pp. 150–162, CiteSeerX 10.1.1.74.7935, doi:10.1007/BFb0052181, ISBN 978-3-540-58202-1 {{citation}}: Cite uses deprecated parameter |citeseerx= (help)
    3. 3Larman, C (2001), Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process (2nd ed.), Prentice Hall, ISBN 978-0-13-092569-5
    4. 4Gamma, Erich; Helm, Richard; ; (1994). . Addison-Wesley. .

    External links

    • The dictionary definition of software framework at Wiktionary
    • Media related to Software frameworks at Wikimedia Commons
    WPF
    LightSwitch
    WebAssembly
    Johnson, Ralph
    Vlissides, John
    Design Patterns
    ISBN
    0-201-63361-2
  • 5Fayad, Mohamed; Schmidt, Douglas C. (1997). "Object-oriented application frameworks". Communications of the ACM. 40 (10): 32–38. doi:10.1145/262793.262798. ISSN 1557-7317. Retrieved 26 May 2026.
  • 6Thompson, Emma (5 August 2026). "Microsoft Research releases Orchard framework for scalable AI agent training". EdTech Innovation Hub. Retrieved 16 September 2026.
  • 7Vlissides, J M; Linton, M A (1990), "Unidraw: a framework for building domain-specific graphical editors", ACM Transactions on Information Systems, 8 (3): 237–268, doi:10.1145/98188.98197, S2CID 11248368
  • 8Johnson, R E (1992), "Documenting frameworks using patterns", Conference proceedings on Object-oriented programming systems, languages, and applications - OOPSLA '92, ACM Press, pp. 63–76, doi:10.1145/141936.141943, ISBN 0201533723, S2CID 604969
  • 9Birrer, A; Eggenschwiler, T (1993), "Proceedings of the European conference on object-oriented programming", Frameworks in the financial engineering domain: an experience report, Springer-Verlag, pp. 21–35
  • 10Hill, C; DeLuca, C; Balaji, V; Suarez, M; da Silva, A (2004), "Architecture of the Earth System Modeling Framework (ESMF)", Computing in Science and Engineering, 6: 18–28, doi:10.1109/MCISE.2004.1255817, S2CID 9311752
  • 11Gachet, 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, doi:10.3166/jds.12.271-280, S2CID 29690836
  • Created
    1 Jul 2004
    History
    662 edits
    440 contributors
    No edits in the last 30 days
    Last edited
    27 Sept 2026

    662 revisions in total · 440 contributors

    1. 27 Sept 2026, 05:35 UTCTemporary accountThe newer lead contains critical inaccuracies, and is a debauched version of the older Wikipedia entry. It is also too long and too elaborate. I have restored the lead from the older Wikipedia version, which summarizes the key points succinctly.+89diff
    2. 15 Sept 2026, 22:43 UTCSenihbayankuluExpand bare Orchard reference with bibliographic metadata+171diff
    3. 15 Sept 2026, 10:08 UTCMediaKylemAdded 1 {{Bare URL inline}} tag(s) using a script. For other recently-tagged pages with bare URLs, see :Category:Articles with bare URLs for citations from September 2026+40diff
    4. 27 Aug 2026, 12:46 UTCTheHiddenBrains§ Tradeoffs+1diff
    5. 27 Aug 2026, 12:43 UTCTheHiddenBrains§ Tradeoffs+648diff
    6. 29 Jul 2026, 04:59 UTCMacholess manadded a framework+13diff
    7. 24 Jul 2026, 21:12 UTCCitationCleanerBotmclean up of :Category:CS1 maint: work parameter with ISBN−36diff
    8. 24 Jul 2026, 07:59 UTCKku§ See also sw platform+40diff

    View full revision history

    Created
    1 Jul 2004
    History
    662 edits
    440 contributors
    No edits in the last 30 days
    Last edited
    27 Sept 2026

    Related articles are unavailable right now.

    Wikipedia is rate limiting us right now. Try again in a minute.