A software framework is an abstraction in which generic software can be selectively changed. This additional user-written code creates application-specific software.
It is said a library is to solve a specific problem, or a small set of problems for a developer. Where a framework helps solve a comprehensive collection of common problems that most developers will face. By simplifying the development process, by given pre-written code, it helps reduce production time, and often testing time as well.
This often means that frameworks will require you to follow their standards and procedures, instead of fitting inside of your process.
Frameworks provide a standard way to build and deploy applications and are a universal, reusable software environment. It provides particular functionality as part of a larger software platform to help with the development of software applications 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 the development of a project or system.
Frameworks have several key distinguishing features that separate them from normal libraries:
- Inversion of control: In a framework, unlike in libraries, the overall program’s flow of control is not dictated by the caller, but by the framework.
- Default behavior: 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 is not supposed to be modified, while accepting user-implemented extensions. In other words, users can extend the framework, but cannot change its code.
The designers of software frameworks aim to facilitate software developments 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, reducing overall development time.
Almost any language can have a framework written for, and in, it. Common frameworks include things like the .Net framework from Microsoft. The Ruby language really took off in popularity with the addition of the Rails framework, to the point that many people believe the name is actually Ruby on Rails.
Other popular frameworks include:
- Django for Python
- Laravel for PHP
- NodeJS, a JavaScript runtime framework built on the Chrome V8 engine for creating server applications using JavaScript.
- AngularJS, a structural framework for building dynamic web pages
- React, a JavaScript framework created by Facebook (Meta) for building user interfaces (for web)
Framework for Non-Programming Languages
You can even have frameworks for non-programming languages. We most often see this with tangentially related technologies like CSS.
CSS frameworks like Bootstrap, which helps you build out a web front end. And where there is one framework, there are often several. For CSS other related frameworks include Tailwind CSS, UI Kit, Materialize, and more.
Duplicate Styles in Frameworks
Many times, frameworks will borrow from the same programming style or pattern that we will see in Software Engineering. One such pattern that we often see is the MVC or Model View Controller.
The MVC can be found in Cake, for PHP, .Net, For C#, and even Spring MVC, for Java.
What is a Software Framework? was originally found on Access 2 Learn