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. 

A software framework is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions. Software frameworks may include support programs, compilers, code libraries, tool sets, and application programming interfaces (APIs) that bring together all the different components to enable development of a project or system.

A developer environment, with predefined syntax, rules, dialogue state management, integrations options, API’s, infrastructure, databases etc. Platforms can also be dedicated to NLP or a mix of a bot- and NLP framework.