A framework is a set structure in which tasks are performed or completed.
Typically, a framework refers to an often layered structure that indicates what kind of programs can or should be built and how they would connect to each other.
Basically, a framework works as a kind of support structure for something to be built on top of.
A software framework is an abstraction in which software that provides generic functionality, can be selectively changed by additional user-written code, this provides application specific software.
Software frameworks are designed to be universal, and reusable to provide functionality as part of a larger software platform, this then facilitates the development of software applications, products, and solutions.
Put simply, a software framework should serve the purpose of making it easy to create new software.